Przestrzeń tabel

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Przestrzeń tabel (Szablon:Ang.) – 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 OracleSzablon:R, czy PostgreSQLSzablon:R. 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ówSzablon:R. Przestrzeń tabel jest to więc fizyczno-logiczna encja, służąca jako repozytorium obiektów.

Przestrzenie tabel pozwalają naSzablon:R:

  • 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

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 kategorieSzablon:R:

  • 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 danychSzablon:R.

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 dyskowegoSzablon:R. 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ńSzablon:R.

Segment jest zbiorem ekstentów zaalokowanych dla określonych typów obiektów, np. dla tablic lub indeksów. Dla przykładu, dane tablicy Szablon:Tt 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 Szablon:Tt, podczas gdy inny ekstent może być przechowywany w pliku Szablon:Tt.

Rodzaje przestrzeni tabel

W systemie Oracle występują trzy typy przestrzeni tabelSzablon:R:

  • 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 Szablon:Tt i Szablon:Tt, niemniej jednak Oracle zaleca dodatkowe utworzenie przynajmniej jednej trwałej przestrzeni tabel do przechowywania obiektów użytkowników i danych aplikacjiSzablon:R.
  • 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 sesjiSzablon:R.
Przestrzeń tabel oznaczona jako tymczasowa jest trwała. Tymczasowe są jedynie segmenty w niej przechowywaneSzablon:R.
  • 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 potarzania 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 Szablon:Tt 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 Szablon:Tt.

Wbudowane przestrzenie tabel

Wszystkie bazy danych Oracle muszą posiadać systemową przestrzeń tabel o nazwie Szablon:Tt, a od wersji Oracle 10gSzablon:R także przestrzeń tabel o nazwie Szablon:TtSzablon:R. Trzecią, niezbędną do działania bazy danych Oracle przestrzenią tabel jest TBS Szablon:TtSzablon:R.

SYSTEM

Każda baza danych Oracle, niezależnie od wersji, posiada systemową przestrzeń tabel (ang. System Tablespace), występującą zawsze pod nazwą Szablon:TtSzablon:R. Jest ona tworzona automatycznie w trakcie tworzenia każdej nowej bazy OracleSzablon:R. System Oracle używa tej przestrzeni tabel do zarządzania bazą danych. Zawiera ona następujące strukturySzablon:R:

  • 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 Szablon:Tt jest użytkownik uprzywilejowany Szablon:Tt.

Przestrzeń tabel Szablon:Tt 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 10gSzablon:R, firma Oracle wprowadziła drugą, obligatoryjnąSzablon:R przestrzeń tabel o nazwie Szablon:Tt (skrót od ang. auxiliary tablespace). Udostępnia ona centralne miejsce dla metadanych, które we wcześniejszych wersjach były przechowywane w TBS Szablon:Tt.

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 Szablon:Tt składuje wszystkie dodatkowe funkcje systemu Oracle w jednym miejscu, które od wersji 10g staje się ich domyślną przestrzenią tabelSzablon:R. Pozwala to na zredukowanie przestrzeni tabel tworzonych domyślnie podczas tworzenia nowej bazy danychSzablon:R oraz przyczynia się do zwiększenia wydajności poprzez zrównoleglenie dostępu do danych słownikowychSzablon:R.

Wielkość przestrzeni tabel Szablon:Tt zależy od rozmiaru komponentów, które zajmują (ang. occupy) tę przestrzeń tabelSzablon:R. Listę komponentów w TBS Szablon:Tt, określanych jako rezydenci (ang. occupants)Szablon:R, wraz z wykorzystaniem zajmowanej przestrzeni można przeglądać za pomocą perspektywy Szablon:Tt. Minimalna wielkość przestrzeni tabel Szablon:Tt podczas tworzenia bazy danych to 400 MBSzablon:R.

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 – Szablon:TtSzablon:R. Segmenty undo przechowywane i zarządzane przez przestrzeń tabel Szablon:Tt służą m.in. doSzablon:R:

  • Wycofywania transakcji, w przypadku wydania polecenia Szablon:Tt.
  • Odtwarzania bazy danych.
  • Zapewnienia spójności odczytów.

Przestrzeń tabel typu Szablon:Tt o nazwie Szablon:Tt jest automatycznie tworzona podczas tworzenia bazy danych z użyciem kreatora Database Configuration Assistant (DBCA)Szablon:R. W przypadku innego sposobu tworzenia bazy danych, przestrzeń tabel Szablon:Tt należy utworzyć ręcznie.

Baza danych Oracle może zawierać wiele przestrzeni tabel typu Szablon:Tt, ale w danym momencie aktywna i używana może być tylko jedna przestrzeń tabel tego typuSzablon:R. Kiedy instancja bazodanowa próbuje otworzyć bazę danych, baza danych Oracle wybiera pierwszą dostępną przestrzeń tabel Szablon:Tt. Nazwę przestrzeni tabel Szablon:Tt określa się w parametrze inicjalizacyjnym Szablon:Tt.

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 Szablon:Tt zarządzana jest lokalnieSzablon:R. Jest często tworzona na etapie tworzenia bazy danych pod nazwą Szablon:Tt.

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 (Szablon:Tt),
  • polecenia SQL z grupowaniem (Szablon:Tt).

Tymczasowe przestrzenie tabel mogą poprawiać współbieżność wielu operacji sortowania, które nie mieszczą się w pamięciSzablon:R. Pozwala to uniknąć przydzielania i usuwania przestrzeni w trwałych przestrzeniach tabel, dzięki czemu ogranicza fragmentacjęSzablon:R 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ż potrzebneSzablon:R.

Fizyczne pliki z których składa się przestrzeń tabel Szablon:Tt, 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 daneSzablon:R. 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żytkownikaSzablon:R.

Określenie domyślnej przestrzeni tabel dla użytkownika bazy danych może odbyć się w czasie jego tworzenia, poleceniem SQL Szablon:Tt lub może zostać później zmienione poleceniem SQL Szablon:TtSzablon:R. Poniższy przykład polecenia Szablon:Tt przedstawia przypisanie użytkownikowi Szablon:Tt domyślnej przestrzeni tabel Szablon:Tt oraz tymczasowej przestrzeni tabel Szablon:Tt:

CREATE USER jan
 IDENTIFIED BY password
 DEFAULT TABLESPACE dane_ts
 TEMPORARY TABLESPACE temp_ts;

W przypadku pominięcia klauzuli Szablon:Tt podczas tworzenia nowego schematu użytkownika poleceniem Szablon:Tt, dla takiego użytkownika użyta zostanie domyśla przestrzeń tabel bazy danychSzablon:R. Podobnie, jak ma to miejsce w przypadku tworzenia użytkownika, domyślną przestrzeń tabel dla całej bazy danych, definiuje się w momencie tworzenia bazy danych poleceniem Szablon:Tt, ale może także ona zostać później zmieniona poleceniem Szablon:Tt.

Każdy użytkownik bazy danych ma również przypisaną domyślną tymczasową przestrzeń tabel. Zwykle istnieje jedna tego rodzaju przestrzeń tabel, z której korzystają wszyscy użytkownicy. Domyślnie ustawia się ją na poziomie bazy danych, dzięki czemu wszyscy nowi użytkownicy dysponują tą samą tymczasową przestrzenią tabel, o ile nie określi się innej w poleceniach Szablon:Tt lub Szablon:TtSzablon:R.

Aktualnie ustawioną domyślną trwałą przestrzeń oraz domyślną tymczasową przestrzeń tabel na poziomie bazy danych w systemie Oracle można obejrzeć korzystając z perspektywy Szablon:Tt, w sposób jak przedstawiono poniżej.

SELECT property_name, property_value
  FROM DATABASE_PROPERTIES
 WHERE PROPERTY_NAME LIKE UPPER('%tablespace%');

Przykładowy wynik powyższego polecenia:

PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ --------------------
DEFAULT_PERMANENT_TABLESPACE   USERS
DEFAULT_TEMP_TABLESPACE        TEMP

Rodzaje plików przestrzeni tabel

Przestrzenie tabel mogą być tworzone i używane jako przestrzenie tabel z dużymi plikami (ang. bigfile tablespace) (w skrócie BFT), które składają się z bardzo dużego, pojedynczego pliku zamiast wielu małych. Tradycyjny i domyślny typ przestrzeni tabel określany jest jako przestrzenie tabel z małymi plikami (ang. smallfile tablespace)Szablon:R (w skrócie SFT). Typy BTF oraz SFT są nierozróżnialne pod względem wykonywanych instrukcji SQL, które nie odnoszą się bezpośrednio do plików danych lub plików tymczasowychSzablon:R.

Zastosowanie przestrzeni tabel z dużymi plikami znacznie powiększa maksymalną pojemność bazy danych Oracle. Maksymalny rozmiar pliku bazy danych oraz jej maksymalną wielkość można obliczyć w poniższy sposóbSzablon:R.

Maksymalny rozmiar pliku jest iloczynem wielkości bloku określonego parametrem inicjalizacyjnym DB_BLOCK_SIZESzablon:R oraz maksymalnej liczby bloków:

maksymalny rozmiar pliku = db_block_size * maksymalna liczba bloków

Maksymalny rozmiar bazy danych, to iloczyn maksymalnego rozmiaru pliku oraz limitu maksymalnej liczby plików, które można utworzyć:

maksymalny rozmiar bazy danych = maksymalny rozmiar pliku * maksymalna liczba plików

Znając fizyczne limity oprogramowania bazodanowego Oracle, maksymalny rozmiar bazy danych w wersji Oracle 11gSzablon:R:

x=222×3210242×65 533=8 388 224GB8PB
x=232×3210242×65 533=8 589 541 376GB=8 388 224TB8EB

Przypisy

Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-11g-Concepts”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-11g-AG-CD”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-11g-AG-UNDO”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-11g-2DDBA-r6”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-11g-2DDBA-cytaty”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-11g-SG”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-11g-Ref”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-11g-Ini”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „Helion-Gnybek”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „doc-10gR1-NF”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „helion-10g-NF”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „Helion-Whalen”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „Helion-Loney”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „PostgreSQL-tablespace”, zdefiniowany w <references>, nie był użyty wcześniej w treści.
Błąd rozszerzenia cite: Znacznik <ref> o nazwie „Metalink-1372905.1”, zdefiniowany w <references>, nie był użyty wcześniej w treści.