Oracle Tablespace – przestrzenie tabel

Oracle przechowuje dane fizycznie w tzw. plikach danych. Są to pliki o rozszerzeniu .DBF. Można je zlokalizować na dysku. Oracle tworzy takie pliki i przechowuje w nich tabele bazy danych, widoki, indeksy i inne obiekty schematu w postaci segmentów. Pliki danych są złączone i zorganizowane w logiczne jednostki przechowywania, nazywane przestrzeniami tabel Oracle tzw. tablespace.

W przeciwieństwie do plików danych, przestrzenie tabel nie mają żadnego fizycznego odwzorowania w systemie plików. Możemy je uznać za pośrednika między fizycznymi a logicznymi składnikami Oracle. Innymi słowy, przestrzeń tabel może być podobna do udostępnionego dysku twardego – umożliwia przechowywanie, przenoszenie lub usuwanie plików danych w obrębie tej przestrzeni. Jest sposobem na logiczną organizacje danych w plikach fizycznych. Konfiguracja taka jest zdecydowaną zalety bazy danych Oracle.

Tablespace w praktyce – slajd z kursu Praktyczna Administracja Oracle

Ważne uwagi dotyczące przestrzeni tabel Oracle:

  • Przestrzeń tabel należy tylko do jednej konkretnej bazy danych. Plik danych należy tylko do konkretnej przestrzeni tabel. Nie można udostępniać ani przenosić plików danych między przestrzeniami tabel, a także niemożliwe jest udostępnianie przestrzeni tabel między bazami danych.
  • Przestrzeń tabel musi składać się przynajmniej z jednego pliku danych. Maksymalna liczba plików danych w jednej przestrzeni tabel to 1022 (rzeczywista liczba plików danych, które mogą być zawarte w przestrzeni tabel, zależy od systemu operacyjnego).

Przestrzenie tabel nie są identyczne. W zależności od typu danych i ich rozmiaru, można dokonać klasyfikacji przestrzeni tabel Oracle.

Rodzaje przestrzeni tablespace w Oracle

Jak już wcześniej zdefiniowaliśmy, dwa główne czynniki to rodzaj i rozmiar danych. Na tej podstawie możemy wyróżnić następujące rodzaje przestrzeni tabel w Oracle:

Typ danychIlość danych
Permanent tablespaceTemporary tablespaceUndo tablespaceBig File tablespaceSmall File tablespace
Przechowuje obiekty które pozostają w bazie nawet po zakończeniu sesji.
Przechowuje obiekty które są usuwane z bazy po zakończeniu sesji.Przechowuje dane niezbędne do wycofania transakcji.
Przechowuje duże ilości danych.Domyślny typ tablespace.
Przetrzymuje dane w plikach danych tzw. data files.Przetrzymuje dane w plikach tymczasowych tzw. temp files.Stores data permanently.Tylko jeden plik – data file lub temp file. Maksymalna wielkość pliku to 32TB dla bloków 8K, lub 128TB dla bloków 32K.Może składać się z wielu plików.

Domyślne tablespace Oracle

Podczas tworzenia nowej bazy danych Oracle, automatycznie tworzone jest kilka przestrzeni tabel o określonych nazwach:

  • SYSTEM
  • SYSAUX
  • USERS
  • UNDOTBS
  • TEMP

Każda z tych przestrzeni tabel zawiera określone dane:

  • SYSTEM – domyślna przestrzeń tabel zawierająca słownik danych. Obejmuje definicje tabel, widoki i procedury składowane. Oracle automatycznie zarządza tymi informacjami.
  • SYSAUX – pomocnicza przestrzeń tabel, która stała się obowiązkowa od wersji Oracle 10g. Zawiera pewne indeksy i tabele niesystemowe, które wcześniej należały do przestrzeni tabel SYSTEM. Przeniesienie tych elementów do przestrzeni SYSAUX zmniejsza obciążenie przestrzeni tabel SYSTEM.
  • USERS – trwała przestrzeń tabel zawierająca dane aplikacji. Oracle wypełnia tę przestrzeń danymi tworzonymi i wprowadzanymi przez użytkowników.
  • UNDOTBS – przestrzeń tabel zawierająca dane cofania dla automatycznego zarządzania cofaniem.
  • TEMP – przestrzeń tabel zawierająca tymczasowe dane i indeksy. Tymczasowe przestrzenie tabel są niezbędne do pracy z dużymi tabelami oraz do zapytań i instrukcji takich jak DISTINCT, GROUP BY i ORDER BY.

Baza danych może być mała i wymagać tylko przestrzeni tabel SYSTEM. Jednak lepiej jest mieć przynajmniej jedną dodatkową przestrzeń tabel dla prawidłowego działania przestrzeni tabel Oracle. Można tam przechowywać dane oddzielnie, bez mieszania obiektów schematu z obiektami słownika. Dodatkowo, ułatwia to dokładne i elastyczne zarządzanie danymi.

Korzystanie z wielu przestrzeni tabel oferuje jeszcze więcej korzyści. Można kontrolować dostępną przestrzeń pamięci dla różnych użytkowników bazy danych, dostępność danych. Dodatkowo można także wykonywać częściowe zadania tworzenia kopii zapasowych i przywracania, alokować przestrzeń danych na szybszych dyskach dla lepszej wydajności itp.


Praktyczne ćwiczenia z konfiguracji przestrzeni danych dostępne w kursie: Praktyczna Administracja – Oracle Database!


Tryby online i offline dla tablespace Oracle

Przestrzeń tabel w trybie online umożliwia użytkownikom dostęp do wszystkich dostępnych danych do odczytu i zapisu. W szczególności przestrzeń tabel SYSTEM musi być ciągle online, ponieważ Oracle potrzebuje słownika danych do pracy. Tryb online jest domyślnym trybem dla przestrzeni tabel Oracle.

Z kolei w przypadku trybu offline nie ma dostępu do danych dla użytkowników. Zazwyczaj administratorzy baz danych wyłączają przestrzenie tabel w celu przeprowadzenia prac konserwacyjnych i aktualizacji. Ponadto, Oracle wyłącza przestrzenie tabel w przypadku wystąpienia błędów.

Tryb read-only

Read-only to kolejny z dostępnych trybów. Jak sama nazwa wskazuje możemy jedynie odczytywać dane, zapisy są niemożliwe. Oracle nie aktualizuje plików w takich przestrzeniach tabel, a użytkownicy mogą pominąć operacje tworzenia kopii zapasowych i przywracania dla takich statycznych części bazy danych. Możliwe jest usunięcie niektórych obiektów z przestrzeni tabel tylko do odczytu, ale nie można tam tworzyć ani zmieniać istniejących obiektów.

Podsumowanie

Koncepcja przestrzeni tabel jest jednym z charakterystycznych elementów Oracle. Kombinacja ta fizycznego magazynu(plików danych) z logicznymi przestrzeniami przechowywania (przestrzeniami tabel) pomaga programistom i administratorom baz danych organizować bazy danych i efektywnie wykonywać swoje zadania. Dodatkowo różne rodzaje przestrzeni tabel z ich specyficznymi cechami zapewniają niezbędną elastyczność dla profesjonalistów pracujących z bazami danych.

🔥Kurs Administracji PostgreSQL w promocji -70%!🔥