Administracja bazy danych Oracle 10g Oracle Database Administration część 5 Zmiana przestrzeni tabel użytkownika Za pomocą SQL*Plus alter user USER_NAME temporary tablespace TEMPOR_NAME; gdzie: USER_NAME TEMPOR_NAME jest nazwa użytkownika oraz jest nazwa przestrzeni tymczasowej (domyślne TEMP)
Zmiana ustawień użytkownika - zakładka Security Users Zmiana ustawień użytkownika - zakładka Security Users
Zmiana ustawień użytkownika - zakładka Security Users Zmiana ustawień użytkownika - zakładka Security Users
Informacja o parametrach SGA W SQL*Plus SQL>show sga Składowanie danych System zarządzania bazą danych Oracle przydziela logiczne miejsce dla wszystkich danych w bazie. Jednostki w których są rozmieszczane obiekty to bloki danych (logiczne bloki danych), rozszerzenia oraz segmenty. Rozszerzenie - liczba sąsiednich bloków. Segment - zbiór rozszerzeń, który jest przydzielony do określonych struktur danych. Dane każdej tabeli są przechowywane w jej segmencie danych. Dane każdego indeksu są przechowywane w jego segmencie danych. Jeżeli tabela jest partycjonowana, każda partycja jest przechowywana w osobnym segmencie.
Składowanie danych Oracle przydziela miejsca dla każdego segmentu w jednostkach jednego rozszerzenia. Kiedy rozszerzenie danego segmentu jest zapełnione, Oracle przydziela następne nowe rozszerzenie. Z tego wynika, że rozszerzenia nie konieczne muszą być na tym samym dysku. Segment i wszystkie jego rozszerzenia są przechowywane w jednej przestrzeni tabel (ang. tablespace). Wewnątrz przestrzeni tabel segment może zawierać rozszerzenia, które są przydzielone w kilku plikach danych. Każde rozszerzenie może zawierać dane tylko z jednego pliku danych, tj. może być rozmieszczone tylko na jednym pliku danych. Składowanie danych Wszystkie wiersze dla danego indeksu są przechowywane w jednym segmencie indeksu. Jeżeli tabela posiada kilku indeksów, każdy indeks posiada swój segment indeksu. Celem tego segmentu jest sprawdzenie miejsce wiersza w tabeli na podstawie specyficznego klucza.
Tablespace Datafile Datafile Table Table Table Index Table Index Table Table Index Index Index Segmenty W bazie danych Oracle są stosowane następujące typy segmentów: Tabela (ang. table) Tabela partycjonowana (ang. table partition) Indeks (ang. index) Segment wycofania (ang. Rollback) Tymczasowy (ang. temporary) Duży obiekt (ang. Large Object) W bazie danych Oracle dane mogą być przechowywane tylko w tabelach.
Segmenty W segmencie dane nie są przechowywane w określonym porządku. Użytkownik nie ma możliwości kontroli nad tym jak dane są przechowywane w blokach wewnątrz segmentu. Wszystkie dane w segmencie tabeli muszą być przechowywane w jednej przestrzeni tabeli (ang. tablespace) Tabela może być podzielona na partycje. Każda z partycji może być w innej przestrzeni tabeli (ang. tablespace) Jeżeli tabela jest podzielona na partycje, to każda partycja jest segmentem ze swoimi własnymi parametrami przechowywania. W celu korzystania z podzielonej na partycje tabeli musi być zainstalowana ta opcja bazy danych. Segmenty SQL*Plus: Release 9.2.0.1.0 - Production on Pon Kwi 11 16:57:21 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Połączenie z: Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production With the Partitioning, OLAP and Data Mining Scoring Engine options
Klauzula składowania (ang. storage clause) Określa jakie rozszerzenia są przydzielane na poziomie segmentu. Parametry składowania (ang. storage clause) - przechowywania na dysku, jeżeli są określone na poziomie segmentu unieważniają te parametry określone dla przestrzeni tabel (ang. tablespace). Jeżeli parametry przechowywania, składowania na dysku nie są określone na poziomie segmentu, wówczas są brane parametry dla przestrzeni tabel (ang. tablespace). Jeżeli parametry przechowywania, składowania na dysku nie są określone na poziomie przestrzeni tabel (ang. tablespace) Oracle używa domyślne ich wartości dla tych parametrów. Klauzula składowania (ang. storage clause) Storage ( initial bytes, next bytes, minextents integer, maxextents integer, pctincrease integer) Klauzula składowania ( początkowy bytes, następny bytes, minimalna liczba rozszerzeń liczba całkowita, maksymalna liczba rozszerzeń liczba całkowita, procent narastania liczba całkowita)
Klauzula składowania (ang. storage clause) Jeżeli parametry składowania zostaną zmienione po utworzeniu segmentu, nowe parametry będą obowiązywać tylko dla nowych rozszerzeń, a dla istniejących rozszerzeń zostaną zastosowane stare parametry. Niektóre parametry mogą być określone tylko na poziomie segmentu, one nie mogą być ustawiane na poziomie przestrzeni tabel (ang. tablespace). Minimalna wielkość rozszerzenia jest ustawiana na poziomie przestrzeni tabel (ang. tablespace). Można ją zastosować dla wszystkich rozszerzeń segmentów w tej przestrzeni tabel. Klauzula składowania (ang. storage clause) Rozszerzenia mają przydział (ang. are allocated) kiedy segment jest: tworzony (ang. created); rozszerzany (ang. extended) zmieniany (ang. altered). Przydział zajmowany przez segment jest zwalniany (ang. deallocated) wtedy, gdy segment jest: usuwany (ang. dropped); zmieniany (ang. altered); wyczyszczany (ang. truncated); przy segmentach wycofania - (ang. rollback segments) zmienia się automatycznie tylko wielkość (ang. resized)
Klauzula składowania (ang. storage clause) W momencie tworzenia przestrzeni tabel (ang. tablespace) pliki danych zawierają: nagłówek bloku (ang. header block) - pierwszy blok w pliku; jedno rozszerzenie z pozostałą części pliku. Kiedy segment jest utworzony otrzymuje on przydział z wolnego miejsca w pliku. Kiedy segment zwolni swój przydział miejsca to rozszerzenia z powrotem są dodawane do wolnego miejsca w pliku. Częste dodawanie i usuwanie przydziału miejsca w segmentach prowadzi do fragmentacji przestrzeni w plikach danych, które należą do danej przestrzeni tabel (ang. tablespace). Eksport / import lub przeniesienie danych do nowej przestrzeni tabel (ang. tablespace) rozwiązuje ten problem. Format bloku danych Blok danych (ang. data block) zawiera następujące sekcje: nagłówek bloku (ang. header) - adres bloku, do którego segmentu należy dany blok; katalog tabeli (ang. table directory); katalog wiersza (ang. row directory) - adres wiersza, liczba wierszy, liczba kolumn w wierszach, status wiersza (ang. lock status), informację, w którym bloku kontynuuje dany wiersz; wolną przestrzeń w bloku; dane. Wiersze z tabeli mogą zajmować więcej niż jeden blok danych. To zjawisko jest nazywane łańcuchowaniem (ang. chaining).
Format bloku danych Wolna przestrzeń w bloku danych jest używana do aktualizacji (ang. update) istniejących wierszy i do dodania nowych wierszy. W celu zarządzania wolnego miejsca w bloku są używane parametry PCTFREE oraz PCTUSED. Wartości tych parametrów są podstawa do podejmowania decyzji przez Oracle czy wiersz może być aktualizowany w danym bloku lub aktualizacja tego wiersza będzie przechowywana w nowym bloku. Parametry PCTFREE oraz PCTUSED są określane w momencie tworzenia tabeli. Format bloku danych Parametr PCTFREE również może być podawany przy tworzeniu lub zmianie (ang. altering) indeksów. Parametr PCTFREE określa jaki minimalny procent z rozmiaru bloku danych ma być zostawiony jako wolny dla przyszłych aktualizacji. Ten parametr również decyduje czy można dodać wiersz w danym bloku. Domyślna wartość dla parametru PCTFREE jest 10. W momencie, kiedy rozmiar bloku osiąga limit podany przez parametr PCTFREE, Oracle traktuje blok danych jako niedostępny dla dodawania nowych wierszy. Parametr PCTUSED określa jaki minimalny procent rozmiaru bloku może być używany dla nagłówką bloku + katalog tabeli + katalog wierszy + danych.
Format bloku danych Nowe wiersze nie będą dodane do bloku jeżeli procent wolnego miejsca w bloku jest poniżej parametru PCTUSED. Do tego czasu wolna przestrzeń jest używana tylko do aktualizacji istniejących wierszy. Parametr PCTUSED jest określany w momencie tworzenia tabeli. Kolumny z wiersza tabeli są przechowywane w bloku w porządku w jakim zostały zdefiniowane przy tworzeniu tabeli. Konkurencyjny dostęp do bloku danych Parametry, które są używane do kontroli konkurencyjnego (jednoczesnego) dostępu do bloku danych są INITRANS oraz MAXTRANS. One określają początkową i maksymalną liczbę jednoczesnego dostępu do bloku przy transakcji. Transakcja używa tylko jednego dostępu do bloku podczas transakcji, nawet jeżeli jest zmienianych kilka wierszy w bloku. Parametr INITRANS ma domyślną wartością 1 dla segmentów danych i 2 dla segmentów indeksów. Jeżeli dla danego bloku danych mamy wartość parametru INITRANS 4 to oznacza, że jednocześnie 4 transakcje mogą zmieniać blok danych. Parametr MAXTRANS ma domyślną wartość 255 i określa liczby górnej granicy jednoczesnych transakcji, które mogą zmieniać blok danych lub blok indeksu.
Lokalne zarządzane przestrzeni tabel (ang. tablespace) Oracle zarządza rozszerzeniem przestrzeni tabel (ang. tablespace) lokalnie lub słownikowo. Słownikowo, oznacza że przestrzenie tabel są zarządzane na podstawie tabeli słownikowych (ang. dictionary tables). Lokalnie oznacza, że informacja potrzebna do zarządzania przestrzeni jest przechowywana w niej. W Oracle 10g to jest domyślny typ zarządzania przestrzeni tabel (ang. tablespace). W lokalnie zarządzanej przestrzeni tabel w każdym pliku danych, należących do przestrzeni tabel jest tworzona mapa bitowa. W mapie bitowej w 1 bajcie są przechowywane informację o 1 bloku lub grupie bloków w tym pliku. Kiedy jest przydzielana lub zwalniana przestrzeń, są dokonywane odpowiednie zmiany w mapie bitowej. Lokalne zarządzanie przestrzeni tabel (ang. tablespace) Parametry składowania NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS, oraz DEFAULT STORAGE nie obowiązują przy przestrzeni tabel (ang. tablespace) które są zarządzane lokalnie.
Typy danych W bazie danych rozróżniamy następujące typy danych: liczbowe (ang. numeric); alfanumeryczne (ang. Character); typ data (ang. data). Dane alfanumeryczne mogą być przechowywane w zmiennej lub stałej długości ciągu. Dane o stałej długości typu CHAR (alfanumeryczne) są przechowywane z pustymi symbolami. Dane o zmiennej długości (na przykład VARCHAR2) potrzebują tylko miejsca niezbędnego do zapisania aktualnej wartości kolumny. Długość danych typu VARCHAR2 jest ograniczona do 4000 bajtów. Typy danych Liczby zawsze są zapisywane, przechowywane jako dane ze zmienną długością. Mogą posiadać do 38 znaczących liczb. Dane liczbowe wymagają: 1 bajta dla części wykładnika (ang. exponent); 1 bajta dla każdych 2 znaczących liczb logarytmu; 1 bajta dla liczb ujemnych, pod warunkiem, że liczba znaczących liczb jest mniejsza niż 38. Data jest przechowywana w formacie o stałej długości - 7 bajtów. W bazie Oracle data zawsze zawiera i czas 'YYYY-MM-DD HH:MI:SS'
ROWID ROWID jest pseudo kolumną, która może być używana w zapytaniach, tak jak inne pola w tabeli. ROWID jest unikalnym identyfikatorem każdego wiersza w tabeli. ROWID nie zawiera fizycznego adresu wiersza, ale może być użyty do jego lokalizacji. Najszybszy metod lokalizacji wiersza w tabeli. Informacja o ROWID wymaga 10 bajtów i jest pokazywana jako 18 symboli. ROWID zawiera: Numer obiektu (ang. data object number) - 6 liczb; względny numer pliku (ang. relative file number) - 3 liczby; numer bloku (ang. block number) - 6 liczb; numer wiersza (ang. row number) - 3 liczby. ROWID SELECT ROWID, SUBSTR(ROWID,1,6) "OBIEKT", SUBSTR(ROWID,7,3) "PLIK", SUBSTR(ROWID,10,6) "BLOK", SUBSTR(ROWID,16,3) "WIERSZ" FROM NAZWA_TABELI; Oracle używa ROWID przy tworzeniu indeksów. Przy Imporcie / Eksporcie danych następuje zmiana ROWID. Przy usuwaniu wierszy ROWID jest również usuwany. Przy dodawaniu wierszy ROWID usuniętego wiersza jest ponowne używany.
koniec tej części Otwórz następną część kursu