Przestrzeń tabel () – logiczny kontener (pojemnik), zbudowany z jednego lub więcej fizycznych plików systemu operacyjnego, służący do przechowywania danych w bazach danych takich jak Oracle, czy PostgreSQL. Serwer bazy danych Oracle nie zapisuje danych bezpośrednio w systemie plików, zamiast tego używa przestrzeni tabel jako logicznej struktury składowania danych, zbudowanej z jednego lub więcej plików. Przestrzeń tabel jest to więc fizyczno-logiczna encja, służąca jako repozytorium obiektów.
Przestrzenie tabel pozwalają na: Kontrolowanie przydziału przestrzeni dyskowej dla danych bazy danych. Przydzielanie limitów zasobów (ang. quota) użytkownikom bazodanowym. Zarządzanie dostępnością danych (przestrzenie tabel typu online/offline). Określanie szczegółowych polityk zarządzania tworzeniem kopii zapasowych i odtwarzania. Zwiększenie wydajności, poprzez możliwość umieszczenia najczęściej wykorzystywanych tablic w przestrzeniach tabel, których fizyczne pliki składowane na najszybszych dyskach.
Struktury składowania danych thumb|250px|Diagram przedstawiający zależności między logicznymi i fizycznymi strukturami przechowywania danych w notacji jeden-do-wielu (tzw. notacja kurze łapki).
Struktury składowania danych w systemie Oracle dzielą się zasadniczo na dwie kategorie: Struktury logiczne: Przestrzenie tabel (ang. Tablespaces). Segmenty (ang. Segments). Ekstenty (ang. Extents). Bloki danych Oracle (ang. Oracle data blocks). Struktury fizyczne: Pliki danych (ang. Data Files). Bloki danych systemu operacyjnego (ang. OS blocks).
System Oracle przydziela logiczną przestrzeń dla wszystkich danych w bazie danych.
Na najniższym poziomie szczegółowości, serwer bazy danych Oracle przechowuje dane w Oracle’owych blokach danych. Jeden Oracle’owy blok danych odpowiada określonej liczbie fizycznych bloków systemu operacyjnego. Rozmiar takiego bloku określa parametr inicjalizacyjny DB_BLOCK_SIZE, mogący przyjmować wartości z zakresu od 2 KB do 32 KB (domyślnie 8 KB), przy czym muszą to być wartości będące wielokrotnością fizycznego rozmiaru na poziomie urządzenia dyskowego. Bloki danych są najmniejszymi jednostkami alokacji pamięci masowej i mają stały, niezmienny rozmiar.
Ekstent jest zbiorem sąsiadujących (ciągłych) bloków bazodanowych, należących do obiektów Oracle’a. Ekstenty, a tym samym zbiór bloków jest tworzony podczas tworzenia obiektu oraz za każdym razem, kiedy dla obiektu wymagana jest dodatkowa przestrzeń.
Segment jest zbiorem ekstentów zaalokowanych dla określonych typów obiektów, np. dla tablic lub indeksów. Dla przykładu, dane tablicy przechowywane są we własnych segmentach typu data, podczas gdy każdy indeks tej tablicy przechowywany jest w osobnym, własnym segmencie typu index. Każdy obiekt w bazie danych Oracle, który konsumuje pamięć masową, składa się z przynajmniej jednego segmentu.
Każdy segment może należeć tylko i wyłącznie do jednej przestrzeni tabel. Tym samym, wszystkie ekstenty są również przechowywane w jednej przestrzeni tabel. Jednak na poziomie fizycznym, jeden plik danych może zawierać od jednego do wielu ekstentów. Stąd, wewnątrz przestrzeni tabel przechowywane są segmenty, zawierające ekstenty mogące pochodzić z różnych plików danych. Dla przykładu, jeden ekstent może być przechowywany w pliku , podczas gdy inny ekstent może być przechowywany w pliku .
Rodzaje przestrzeni tabel W systemie Oracle występują trzy typy przestrzeni tabel: Trwałe (ang. Permanent) – służą do przechowywania trwałych obiektów tworzonych przez użytkowników oraz dane aplikacji. Segmenty obiektów w takich przestrzeniach są fizycznie zapisywane w plikach danych. Każdemu użytkownikowi w bazie danych Oracle przypisana jest domyślna trwała przestrzeń tabel. Bardzo niewielka baza danych Oracle może potrzebować tylko domyślnej przestrzeni tabel i , niemniej jednak Oracle zaleca dodatkowe utworzenie przynajmniej jednej trwałej przestrzeni tabel do przechowywania obiektów użytkowników i danych aplikacji. Tymczasowe (ang. Temporary) – przechowuje specjalny typ segmentów tymczasowych, które służą do chwilowego przechowywania nietrwałych danych. Dane tymczasowe są w użyciu tylko podczas trwania sesji. Przestrzeń tabel oznaczona jako tymczasowa jest trwała. Tymczasowe są jedynie segmenty w niej przechowywane. Wycofania (ang. Undo) – służy do przechowywania specjalnego typu segmentów wycofania. Baza danych Oracle korzysta z danych wycofania w celu wycofania transakcji (Rollback), w celu zapewnienia spójności odczytu, przy odzyskiwaniu bazy danych i do włączania pewnych dodatkowych funkcji bazy danych, takich jak np. Oracle Flashback Query. Instancja bazy danych może mieć tylko jedną aktywną przestrzeń wycofania.
Tryby przestrzeni tabel Tryb przestrzeni tabel określa dostępność do danych się w niej znajdujących. Administrator bazy danych może ustawić następujące tryby: Read Write – użytkownicy bazy danych mogą zapisywać i odczytywać dane z przestrzeni tabel. Jest to domyślny tryb działania. Read Only – operacje zapisywania do plików danych znajdujących się przestrzeni tabel o tak ustawionym trybie są uniemożliwione. Użytkownicy nie mogą dokonywać zmian w obiektach, które znajdują się w takiej przestrzeni tabel do czasu aż jej status nie zostanie zmieniony na tryb Read/Write. Przełączenie przestrzeni tabel w tryb tylko do odczytu, eliminuje potrzebę wykonywania kopii zapasowych i odtwarzania dużych, statycznych porcji bazy danych. Dane w takich przestrzeniach tabel nie zmieniają się, więc nie ma potrzeby powtarzania raz wykonanego backupu. Ponieważ przestrzenie tabel w tym trybie nie są modyfikowane, ich pliki można umieszczać na nośnikach tylko do odczytu, takich jak np.: DVD, czy napędy WORM (ang. Write Once Read Many). Online/Offline – przestrzeń tabel może znajdować się także w trybie online (dostępna) lub offline (niedostępna), gdy baza danych jest otwarta (tryb bazy danych). Przestrzeń tabel zazwyczaj posiada status online, tak że użytkownicy mogą korzystać z obiektów znajdujących się w tej przestrzeni tabel. Jeśli przestrzeń tabel ma status offline, wówczas niemożliwe jest korzystanie z jej zasobów. Użytkownicy próbujący uzyskać dostęp do obiektów znajdujących się w przestrzeni tabel w trybie offline otrzymają komunikat o błędzie. Przełączanie przestrzeni tabel w tryb offline może odbywać się w sposób automatyczny lub ręczny. Ręczne przełączenie przestrzeni tabel w tryb offline przez DBA umożliwia przeprowadzanie czynności administracyjnych lub w celu wykonania kopii zapasowej i odtwarzania. Nie każdą przestrzeń tabel można przełączyć w tryb offline. Restrykcją, co do niemożności zmiany statusu na offline objęte są tymczasowe przestrzenie tabel oraz systemowa przestrzeń tabel .
Wbudowane przestrzenie tabel Wszystkie bazy danych Oracle muszą posiadać systemową przestrzeń tabel o nazwie , a od wersji Oracle 10g także przestrzeń tabel o nazwie . Trzecią, niezbędną do działania bazy danych Oracle przestrzenią tabel jest TBS .
SYSTEM Każda baza danych Oracle, niezależnie od wersji, posiada systemową przestrzeń tabel (ang. System Tablespace), występującą zawsze pod nazwą . Jest ona tworzona automatycznie w trakcie tworzenia każdej nowej bazy Oracle. System Oracle używa tej przestrzeni tabel do zarządzania bazą danych. Zawiera ona następujące struktury: Słownik danych (ang. data dictionary), zawierający informacje o wewnętrznej strukturze bazy danych. Tablice oraz widoki zawierające informacje administracyjne o bazie danych. Skompilowane obiekty, takie jak: procedury, pakiety i wyzwalacze (ang. triggers).
Właścicielem wszystkich obiektów przechowywanych w przestrzeni tabel jest użytkownik uprzywilejowany .
Przestrzeń tabel jest skonstruowana i zarządzana jak każda inna przestrzeń tabel w systemie Oracle. Wymaga jednak wyższego poziomu uprawnień, a także w niektórych aspektach objęta jest szczególnymi restrykcjami. Dla przykładu, nie można zmienić nazwy ani usunąć tej przestrzeni tabel.
SYSAUX Od wersji 10g, firma Oracle wprowadziła drugą, obligatoryjną przestrzeń tabel o nazwie (skrót od ang. auxiliary tablespace). Udostępnia ona centralne miejsce dla metadanych, które we wcześniejszych wersjach były przechowywane w TBS .
Do wersji Oracle 9i, wiele funkcji systemu Oracle (takich jak np.: katalog odtwarzania menedżera RMAN, Ultra Search, Data Mining, XDB, OLAP i inne), wymagało przygotowania dla nich osobnych przestrzeni tabel. Przestrzeń tabel składuje wszystkie dodatkowe funkcje systemu Oracle w jednym miejscu, które od wersji 10g staje się ich domyślną przestrzenią tabel. Pozwala to na zredukowanie przestrzeni tabel tworzonych domyślnie podczas tworzenia nowej bazy danych oraz przyczynia się do zwiększenia wydajności poprzez zrównoleglenie dostępu do danych słownikowych.
Wielkość przestrzeni tabel zależy od rozmiaru komponentów, które zajmują (ang. occupy) tę przestrzeń tabel. Listę komponentów w TBS , określanych jako rezydenci (ang. occupants), wraz z wykorzystaniem zajmowanej przestrzeni można przeglądać za pomocą perspektywy . Minimalna wielkość przestrzeni tabel podczas tworzenia bazy danych to 400 MB.
UNDO W systemie Oracle 9i wprowadzono automatyczny system zarządzania segmentami wycofania (ang. rollback segments), uwzględniając jednocześnie w strukturze bazy predefiniowany typ przestrzeni tabel – . Segmenty undo przechowywane i zarządzane przez przestrzeń tabel służą m.in. do: Wycofywania transakcji, w przypadku wydania polecenia . Odtwarzania bazy danych. Zapewnienia spójności odczytów.
Przestrzeń tabel typu o nazwie jest automatycznie tworzona podczas tworzenia bazy danych z użyciem kreatora Database Configuration Assistant (DBCA). W przypadku innego sposobu tworzenia bazy danych, przestrzeń tabel należy utworzyć ręcznie.
Baza danych Oracle może zawierać wiele przestrzeni tabel typu , ale w danym momencie aktywna i używana może być tylko jedna przestrzeń tabel tego typu. Kiedy instancja bazodanowa próbuje otworzyć bazę danych, baza danych Oracle wybiera pierwszą dostępną przestrzeń tabel . Nazwę przestrzeni tabel określa się w parametrze inicjalizacyjnym .
TEMP Tymczasowa przestrzeń tabel, w odróżnieniu od wcześniej wymienionych przestrzeni tabel, nie jest przestrzenią obligatoryjną i niezbędną w każdej bazie danych Oracle. Jednakże staje się ona obowiązkowa, gdy przestrzeń tabel zarządzana jest lokalnie. Jest często tworzona na etapie tworzenia bazy danych pod nazwą .
Tymczasowe przestrzenie tabel są wykorzystywane do wykonywania pewnego typu operacji, które nie mieszczą się w pamięci: obsługa operacji związanych z sortowaniem, podczas tworzenia i zarządzania indeksami, polecenia SQL ze złączeniami (), polecenia SQL z grupowaniem ().
Tymczasowe przestrzenie tabel mogą poprawiać współbieżność wielu operacji sortowania, które nie mieszczą się w pamięci. Pozwala to uniknąć przydzielania i usuwania przestrzeni w trwałych przestrzeniach tabel, dzięki czemu ogranicza fragmentację oraz zwiększa efektywność operacji I/O. System Oracle dynamicznie tworzy segmenty tymczasowe i zwalnia przypisaną do nich przestrzeń w chwili, gdy nie są już potrzebne.
Fizyczne pliki z których składa się przestrzeń tabel , w przeciwieństwie do plików danych (data files), nazywane są plikami tymczasowymi (ang. tempfiles). Pliki tego rodzaju są pomijane w czasie wykonywania backupu z wykorzystaniem menedżera RMAN.
Domyślne przestrzenie tabel Przestrzenie tabel w bazie danych Oracle w chwili ich tworzenia, obrazowo mogą zostać porównane do pustych pojemników na dane. W momencie, kiedy tworzony jest obiekt w schemacie użytkownika, a wydane przez użytkownika polecenie DDL nie zawiera jawnie wyspecyfikowanej przez niego przestrzeni tabel, serwer bazy danych Oracle zapisze taki obiekt w domyślnej przestrzeni tabel takiego użytkownika.