administracja bazami danych

Transkrypt

administracja bazami danych
ADMINISTRACJA
BAZAMI DANYCH
Rozdziaáy 1-13
Rok akademicki – 2007/2008
Notatki do wykáadów z przedmiotu „Administracja bazami danych”
SPIS TREĝCI
SPIS TREĝCI
1. ROLA ADMINISTRATORA ................................................................................................................................................................................... 4
§ 1.1. Rodzaje uĪytkowników................................................................................................................................................................................... 4
§ 1.2. Zadania administratora ................................................................................................................................................................................... 5
2. ARCHITEKTURA SYSTEMU ZARZĄDZANIA BAZĄ DANYCH ORACLE ................................................................................................... 6
§ 2.1. PojĊcie instancji .............................................................................................................................................................................................. 6
§ 2.2. Struktura pamiĊci SGA ................................................................................................................................................................................... 8
§ 2.3. Proces Globar Area ......................................................................................................................................................................................... 9
3. PLIKI SYSTEMU ORACLE .................................................................................................................................................................................. 10
4. POàĄCZENIE Z INSTANCJĄ .............................................................................................................................................................................. 15
§ 4.1. Sposób áączenia siĊ z instancją ..................................................................................................................................................................... 15
§ 4.2. Klient Oracle ................................................................................................................................................................................................. 17
§ 4.3. Rodzaje serwerów baz danych Oracle.......................................................................................................................................................... 18
5. PROCESY BAZY DANYCH ................................................................................................................................................................................. 22
§ 5.1. Rodzaje procesów ......................................................................................................................................................................................... 22
§ 5.2. Procesy drugoplanowe.................................................................................................................................................................................. 22
§ 5.3. Procesy usáugowe i procesy uĪytkowników................................................................................................................................................. 25
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI................................................................................................................................................. 26
§ 6.1. Uruchamianie i zatrzymywanie serwisu nasáuchowego............................................................................................................................... 26
§ 6.2. Uruchamianie i zatrzymywanie serwisu i instancji ...................................................................................................................................... 27
§ 6.3. Otwieranie serwisu instancji przy pomocy programu Oradim..................................................................................................................... 27
§ 6.4. Otwieranie instancji przy pomocy programu Oradim .................................................................................................................................. 27
§ 6.5. Zatrzymywanie serwisu instancji i instancji................................................................................................................................................. 28
§ 6.6. Otwieranie instancji przy pomocy SQL*Plus .............................................................................................................................................. 28
§ 6.7. Zamykanie instancji ...................................................................................................................................................................................... 32
§ 6.8. Przykáady uruchamiania i zamykania instancji ............................................................................................................................................ 33
7. PARAMETRY BAZY DANYCH ORACLE ......................................................................................................................................................... 37
§ 7.1. Zmiany parametrów ...................................................................................................................................................................................... 37
§ 7.2. Plik init<SID>.ora......................................................................................................................................................................................... 38
8. STRUKTURA PRZECHOWYWANIA ................................................................................................................................................................. 41
§ 8.1. Warstwa fizyczna i logiczna przechowywania danych ................................................................................................................................ 41
§ 8.2. Segmenty danych .......................................................................................................................................................................................... 50
§ 8.3. Segmenty wycofania..................................................................................................................................................................................... 58
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
-2-
SPIS TREĝCI
-3-
§ 8.4. Automatyczne zarządzanie wycofywaniem transakcji................................................................................................................................. 68
§ 8.5. Zarządzanie przestrzeniami tabel i plikami danych ..................................................................................................................................... 68
§ 8.6. Zarządzanie przestrzeniami tymczasowymi i automatycznego wycofywania ............................................................................................ 81
8.6.1. Zarządzanie przestrzeniami tymczasowymi........................................................................................................................................ 81
8.6.2. Zarządzanie przestrzeniami automatycznego wycofywania ............................................................................................................... 81
9. OBIEKTY BAZY DANYCH (POWTÓRZENIE) ................................................................................................................................................. 83
§ 9.1. Tabela............................................................................................................................................................................................................ 83
§ 9.2. Indeksy .......................................................................................................................................................................................................... 84
§ 9.3. Perspektywy .................................................................................................................................................................................................. 85
§ 9.4. Synonimy ...................................................................................................................................................................................................... 86
10. ZARZĄDZANIE BEZPIECZEēSTWEM ........................................................................................................................................................... 87
§ 10.1. Autoryzacja przez plik haseá....................................................................................................................................................................... 87
§ 10.2. UĪytkownicy ............................................................................................................................................................................................... 89
§ 10.3. Przykáady .................................................................................................................................................................................................... 93
§ 10.4. ZakoĔczenie sesji uĪytkownika .................................................................................................................................................................. 95
§ 10.5. Profile.......................................................................................................................................................................................................... 97
§ 10.6. Przykáady związane z zarządzaniem hasáami z poziomu profili.............................................................................................................. 103
§ 10.7. Weryfikacja hasáa...................................................................................................................................................................................... 111
11. UPRAWNIENIA ................................................................................................................................................................................................. 115
§ 11.1. Przykáadowe uprawnienia systemowe...................................................................................................................................................... 115
§ 11.2. Przykáady .................................................................................................................................................................................................. 120
§ 11.3. Uprawnienia obiektowe ............................................................................................................................................................................ 123
12. ROLE ................................................................................................................................................................................................................... 128
§ 12.1. Tworzenie roli ........................................................................................................................................................................................... 128
§ 12.2. Przyznawanie uprawnieĔ systemowych i ról ........................................................................................................................................... 132
§ 12.3. Przyznawanie uprawnieĔ obiektowych .................................................................................................................................................... 134
13. PLIK PARAMETRÓW SPFILE<SID>.ORA .................................................................................................................................................... 136
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
1. ROLA ADMINISTRATORA
1. ROLA ADMINISTRATORA
§ 1.1. Rodzaje uĪytkowników
x
UĪytkownik koĔcowy
x
x
x
Projektant/Programista
x
x
x
Korzysta z wczeĞniej przygotowanych interfejsów.
Posiada uprawnienia do odczytywania i modyfikowania wybranych danych.
Korzysta z narzĊdzi do projektowania aplikacji.
Posiada uprawnienia do tworzenia bazy, tabel, …
Administrator
x
x
x
x
x
x
Opiekuje siĊ gotowymi aplikacjami, instaluje je.
Zarządza uĪytkownikami, nadaje im uprawnienia.
Odpowiada za ciągáoĞü pracy.
Odpowiada za wydajnoĞü.
Tworzy kopie bezpieczeĔstwa.
…
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
-4-
1. ROLA ADMINISTRATORA
-5–
§ 1.2. Zadania administratora
x
Instalacja systemu
x
Zapewnienie ciągáej pracy aplikacji.
x
Startowanie bazy.
x
Tworzenie kopii zapasowych.
x
Zapewnienie optymalnych warunków dostĊpu do bazy.
x
Dbanie o wydajnoĞü systemu.
x
Monitorowanie systemu.
x
Zapewnienie dostĊpu do bazy na zasadach bezpieczeĔstwa okreĞlonych odpowiednią polityką
(tajnoĞü danych, zgodnoĞü z ustawami, …).
x
Zakáadanie lub kasowanie uĪytkowników.
x
Nadawanie lub odbieranie uprawnieĔ uĪytkownikom.
x
Przywracanie bazy po awarii.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
2. ARCHITEKTURA SYSTEMU ZARZĄDZANIA BAZĄ DANYCH ORACLE
-6-
2. ARCHITEKTURA SYSTEMU ZARZĄDZANIA BAZĄ DANYCH ORACLE
§ 2.1. PojĊcie instancji
NaleĪy rozróĪniü pojĊcie bazy danych (pliki do przechowywania danych) od pojĊcia instancji.
PojĊcie instancji bazy danych moĪna zilustrowaü nastĊpująco:
x
Baza danych – komplet plików przechowujących dane i zarządzanej przez specjalną aplikacjĊ.
x
Instancja
– uruchomiona aplikacja do zarządzania bazą danych skáadająca siĊ ze wspólnej
pamiĊci SGA oraz zestawu procesów drugoplanowych.
DostĊp do danych odbywa siĊ poprzez instancjĊ.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
2. ARCHITEKTURA SYSTEMU ZARZĄDZANIA BAZĄ DANYCH ORACLE
U1
U2
-7-
Un
Procesy uĪytkowników
Pn
Procesy usáugowe
…
P1
P2
Globalny obszar systemowy
SGA
Instancja bazy danych
Procesy drugoplanowe
Pliki bazy danych
Rysunek 2.1.1. PojĊcie instancji
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
2. ARCHITEKTURA SYSTEMU ZARZĄDZANIA BAZĄ DANYCH ORACLE
-8-
§ 2.2. Struktura pamiĊci SGA
Obszar SGA (System Globar Area) jest tworzony w pamiĊci RAM w momencie startu instancji. MoĪna
go zilustrowaü nastĊpująco:
Shared pool - Obszar wspóádzielony
Database buffers
Bufor danych
Shared SQL Area
Redo
buffers
Bufor
dziennika
powtórzeĔ
Wspóádzielony obszar poleceĔ SQL
Dictionary cache
Bufor sáownika danych
Inne
Rysunek 2.2.1. Globalny obszar systemowy SGA.
gdzie
x Bufor danych - przechowuje dane odczytane z dysku;
x
Bufor dziennika powtórzeĔ - przechowuje informacje o zmianach wprowadzonych do bazy danych;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
2. ARCHITEKTURA SYSTEMU ZARZĄDZANIA BAZĄ DANYCH ORACLE
x
-9-
Obszar wspóádzielony - przeznaczony do obsáugi poleceĔ SQL i PL/SQL;
x
Wspóádzielony obszar poleceĔ SQL - przechowuje informacje o poleceniach SQL
uĪytkowników ( np. ich optymalizacjĊ )
x
Bufor sáownika danych - przechowuje informacje ze sáownika danych.
x
…
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
285212672
1287016
100666520
180355072
2904064
bytes
bytes ....... /* Inne */
bytes
/* Shared pool */
bytes
bytes
Dane te moĪna otrzymaü z perspektywy dynamicznej V$SGA poleceniem:
SQL> SELECT * FROM v$sga;
lub poleceniem edytora sqlplus:
SQL> SHOW sga
§ 2.3. Proces Globar Area
KaĪdy proces usáugowy i drugoplanowy ma przydzielony obszar pamiĊci operacyjnej zwany pamiĊcią
procesu.
Obszary te tworzą obszar pamiĊci nazywanym PGA – Proces Global Area, którego maksymalny rozmiar
jest zgodny z parametrem instancji PGA_AGGREGATE_TARGET.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
3. PLIKI SYSTEMU ORACLE
- 10 -
3. PLIKI SYSTEMU ORACLE
System Zarządzania Bazą Danych Oracle wykorzystuje pliki kodu i bazy danych, tj. pliki danych,
dziennika powtórzeĔ, kontrolne, konfiguracyjne, haseá i rejestrujące sposób pracy bazy danych.
x
Pliki kodu (oracle code files) zawierają oprogramowanie systemu zarządzania bazą danych,
programy usáugowe i skrypty z poleceniami SQL wykorzystywane m.in. do administrowania
systemem, tworzenia bazy danych i róĪnego rodzaju dodatkowych obiektów systemowych.
Pliki kodu znajdują siĊ w nastĊpujących podkatalogach katalogu domowego Oracle: bin, rdbms.
x
Pliki danych (data files) sáuĪą do przechowywania danych systemowych i danych wprowadzanych
przez uĪytkownika.
Zgodnie z konwencją pliki bazy danych posiadają rozszerzenie dbf.
x
Pliki kontrolne (control files) zawierają informacje o bazie danych, m.in. nazwy i poáoĪenie plików
danych, plików dziennika powtórzeĔ, informacje o dostĊpnoĞci poszczególnych plików oraz dane
wykorzystywane w czasie odtwarzania bazy danych po awarii.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
3. PLIKI SYSTEMU ORACLE
- 11 -
Przyjmuje siĊ, Īe pliki te posiadają rozszerzenia ctl lub dbf.
Rysunek 3.1.1. Pliki kontrolne, danych i wycofywania.
x
Pliki dziennika powtórzeĔ (redo log files) rejestrują wszystkie operacje wykonywane na bazie
danych. Pliki te są wykorzystywane m.in. do odtwarzania bazy danych po awarii.
WyróĪnia siĊ dwa rodzaje plików dziennika powtórzeĔ: aktywne (online redo log files)
i zarchiwizowane (archived redo log files).
Zgodnie z konwencją aktywne pliki dziennika powtórzeĔ posiadają rozszerzenia log, a
zarchiwizowane arc.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
3. PLIKI SYSTEMU ORACLE
- 12 -
Rysunek 3.1.2. Pliki dziennika powtórzeĔ.
x
Pliki kontrolne (control files) zawierają informacje o bazie danych, m.in. nazwy i poáoĪenie plików
danych, plików dziennika powtórzeĔ, informacje o dostĊpnoĞci poszczególnych plików oraz dane
wykorzystywane w czasie odtwarzania bazy danych po awarii.
Przyjmuje siĊ, Īe pliki te posiadają rozszerzenia ctl lub dbf.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
3. PLIKI SYSTEMU ORACLE
- 13 -
Rysunek 3.1.3. Pliki kontrolne, danych i wycofywania.
x
Pliki konfiguracyjne (init files) zawierają parametry konfiguracyjne bazy danych. Są one
odczytywane przez system w czasie uruchamiania bazy danych.
Pliki te posiadają nazwy init<SID>.ora, pwd<SID>.ora lub spfile<SID>.ora, gdzie
<SID> oznacza nazwĊ instancji bazy danych, np. initXE.ora,
pwdXE.ora lub
spfileXE.ora.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
3. PLIKI SYSTEMU ORACLE
- 14 -
Rysunek 3.1.4. Pliki konfiguracyjne bazy.
x
Pliki zawierają parametry konfiguracyjne sieci. Są one wykorzystywane przy poáączeniach
z instancją. Są to pliki np. tnsnames.ora, listener.ora, sqlnet.ora ….
Rysunek 3.1.5. Sieciowe pliki konfiguracyjne.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
4. POàĄCZENIE Z INSTANCJĄ
- 15 -
4. POàĄCZENIE Z INSTANCJĄ
§ 4.1. Sposób áączenia siĊ z instancją
# TNSNAMES.ORA Network Configuration File:
#..............\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
#
#
#
XXXX =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)
(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
/*nazwa
(SERVICE_NAME = xxxx)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)
(HOST = localhost)(PORT = 1521))
instancji*/
)
)
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)
(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
/*nazwa
(SERVICE_NAME = test)
LISTENER.ORA Network Configuration File:
………..\network\admin\listener.ora
Generated by Oracle configuration tools.
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = test)
(ORACLE_HOME = C:\oraclexe\app\oracle
\product\10.2.0\server)
(SID_NAME = test)
)
(SID_DESC =
(GLOBAL_DBNAME = xxxx)
(ORACLE_HOME = C:\oraclexe\app\oracle
\product\10.2.0\server)
(SID_NAME = xxxx)
instancji*/
)
)
)
)
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 16 -
Rysunek 4.1.1. Proces nasáuchowy (Listener).
x Na stacji roboczej musi byü zainstalowany klient Oracle.
x Na serwerze jest zainstalowany serwer Oracle i uruchomiony jest proces nasáuchowy Listener.
x UĪytkownik áączy siĊ podając nazwĊ uĪytkownika, hasáo i identyfikator poáączenia.
x NarzĊdzie klienckie odczytuje parametry poáączenia z lokalnego pliku tnsnames.ora.
x Sygnaá idzie do programu nasáuchującego, który sprawdza:
o Czy instancja serwera jest uruchomiona?
o Czy identyfikator uĪytkownika i hasáo jest poprawne?
x Proces nasáuchowy tworzy proces serwera odpowiedzialny za realizacjĊ ĪądaĔ uĪytkownika.
x Do uĪytkownika zwracany jest adres i port (TCP/IP) tak utworzonego procesu.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 17 -
Uwaga. Instancji korzystających z tych samych plików danych moĪe byü wiele. UmoĪliwia to
równomierne rozáoĪenie obciąĪeĔ ĪądaĔ wielu uĪytkowników.
§ 4.2. Klient Oracle
Podamy teraz przykáad instalacji najprostszego klienta Oracle. W zasadzie kaĪde narzĊdzie firmy Oracle
zawiera klienta.
Z http://www.oracle.com/technology//software/index.html Instant Client moĪna pobraü pliki
Instantclient-basic-win32-10.2.0.1-20050930.zip
InstantClientPackage-SQL*Plus.
x Pliki te naleĪy rozpakowaü np. do katalogu c:\instantclient
x W Mój Komputer->WáaĞciwoĞci->Zaawansowane->Zmienne Ğrodowiskowe
Zmienne Ğrodowiskowe:
x Edytujemy ĞcieĪkĊ PATH i na początku dodajemy: c:\instantclient;
x Dodajemy nową: SQLPATH o wartoĞci c:\instantclient;
x Dodajemy nową: TNS_ADMIN o wartoĞci c:\instantclient;
x Dodajemy nową: NLS_LANG o wartoĞci POLISH_POLAND.WE8MSWIN1252
x Plik tekstowy tnsnames.ora umieszczamy w katalogu c:\instantclient
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 18 -
BAZA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)
(HOST = ZYSKNT.MATH.UNI.LODZ.PL)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = baza)
)
)
Po takiej instalacji dostĊpny jest z linii poleceĔ program sqlplus. Poza tym moĪna wykorzystywaü
wszystkie programy, które wymagają klienta Oracle.
§ 4.3. Rodzaje serwerów baz danych Oracle
x Serwer dedykowany
o Konfiguracja dla 1-100 uĪytkowników.
o Dla kaĪdego uĪytkownika tworzony jest oddzielny proces serwera wraz z oddzielnym obszarem
pamiĊci (PGA).
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 19 -
Instancja
Rysunek 4.3.1. Serwer dedykowany.
x Serwer wielokanaáowy
o Konfiguracja dla 100-300 uĪytkowników.
o Przy uruchamianiu systemu tworzona jest staáa liczba procesów serwera. ĩądanie uĪytkownika
przydzielane jest do wolnego procesu lub ustawiane jest w kolejkĊ.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 20 -
Instancja
Do kolejki
Rysunek 4.3.2. Serwer wielokanaáowy.
x Serwer wieloinstancyjny
o Dla jednego zbioru plików danych tworzonych jest kilka instancji.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 21 -
Instancja_1
Instancja_2
Rysunek 4.3.3. Serwer wieloinstancyjny.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 22 -
5. PROCESY BAZY DANYCH
§ 5.1. Rodzaje procesów
System Oracle wykorzystuje nastĊpujące trzy rodzaje procesów:
x Drugoplanowe.
x Usáugowe.
x UĪytkowników.
§ 5.2. Procesy drugoplanowe
KaĪda instancja bazy danych moĪe posiadaü od … do … róĪnych procesów zwanych drugoplanowymi
(backgroup processes). Ich liczba jest zaleĪna od konfiguracji, w jakiej pracuje baza danych.
Instancja Oracle skáada siĊ miĊdzy innymi z nastĊpujących procesów drugoplanowych:
x Proces monitorowania procesów (ang. process monitor process – PMON).
Dokonuje on porządkowania po nieprawidáowym zakoĔczeniu procesu uĪytkownika. Wycofuje
pozostawione niezatwierdzone transakcje i zwalnia zasoby zajĊte przez nieistniejący juĪ proces.
x
Proces zapisujący do baz danych (ang. database writer process – DBWR).
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 23 -
Dla zapewnienia wydajnego i równoczesnego operowania na danych, Oracle nie zezwala procesowi
uĪytkownika na bezpoĞrednie modyfikowanie bloku danych na dysku. Bloki, które muszą byü
zmodyfikowane lub te, do których wstawiane są dane, są najpierw przenoszone do wspólnego banku
buforów zwanego cache bufor ( ang. buffer cache). Bloki te są nastĊpnie zapisywane partiami na
dysk przez proces drugoplanowy DBWR.
Tak, wiĊc DBWR jest jedynym procesem, który ma prawa zapisu do plików Oracle.
x
Proces zapisujący do rejestru ( ang. log writer process – LGWR).
Za kaĪdym razem, gdy proces Oracle modyfikuje blok danych, zapisuje równieĪ zmiany do buforów
rejestrów. Proces LGWR odpowiedzialny jest za zapisywanie buforów rejestrów do bezpoĞredniego
pliku rejestru. Proces ten odczytuje partiami zawartoĞü buforów rejestrów i zapisuje je sekwencyjnie
do bezpoĞredniego pliku rejestrowego. NaleĪy mieü na uwadze to, Īe LGWR jest jedynym procesem
zapisującym do plików rejestrowych. Algorytm zatwierdzania transakcji Oracle zapewnia
przeniesienie zawartoĞci buforów rejestrów do bezpoĞredniego pliku rejestrowego za kaĪdym razem,
gdy transakcja zostaje potwierdzona.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
x
- 24 -
Proces archiwizujący ( ang. archiver process – ARCH).
Proces ten jest uruchamiany, gdy baza danych znajduje siĊ w trybie archiwizowania rejestru
i wáączone jest automatyczne archiwizowanie. Kopiuje ostatnio zapeániony plik rejestru w miejsce
przydzielone na kopiĊ zapasową.
x
Proces monitorujący system ( ang. system monitor process – SMON).
Ten proces drugoplanowy wykonuje operacje takie, jak zwalnianie miejsca i scalanie przylegáych
wolnych obszarów w jeden duĪy obszar. SMON jest równieĪ odpowiedzialny za odtwarzanie
transakcji podczas odtwarzania instancji ( w czasie uruchamiania instancji po awarii lub po
zamkniĊciu w trybie przerwania - ABORT).
x
Proces kontrolny ( ang. checkpoint process – CKPT).
W momencie kontrolnym proces DBWR zapisuje wszystkie zmodyfikowane bloki na dysk.
x ……
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
5. PROCESY BAZY DANYCH
- 25 -
§ 5.3. Procesy usáugowe i procesy uĪytkowników
UĪytkownik komunikuje siĊ z instancją za pomocą procesu tworzonego w momencie uruchomienia
aplikacji.
Dla kaĪdego procesu uĪytkownika tworzony jest jeden proces usáugowy, który wykonuje nastĊpujące
operacje:
x Analizuje i optymalizuje skáadniĊ poleceĔ SQL.
x Wykonuje polecenia SQL.
x Odczytuje Īądane dane z dysku.
x Przekazuje wyniki poleceĔ SQL do procesów uĪytkowników.
KaĪdy proces usáugowy ma przydzielony obszar pamiĊci operacyjnej w PGA – Proces Global Area.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
7. PARAMETRY BAZY DANYCH ORACLE
- 26 -
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
§ 6.1. Uruchamianie i zatrzymywanie serwisu nasáuchowego
Uruchamianie i zatrzymywanie serwisu nasáuchowego (Listener) moĪna w Ğrodowisku Windows dokonaü
w nastĊpujący sposób:
Uruchamianie:
c:\lsnrctl.exe
LSNRCTL> start
lub
c:\net start nazwa_serwisu_listenera
Zatrzymywanie:
c:\lsnrctl.exe
LSNRCTL> stop
lub
c:\net stop nazwa_serwisu_listenera
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 27 -
§ 6.2. Uruchamianie i zatrzymywanie serwisu i instancji
Do uruchamiania serwisu instancji i instancji moĪna uĪyü programu Oradim z parametrami:
C:\oradim -STARTUP -SID sid [-STARTTYPE srvc | inst | srvc,inst]
[-PFILE filename | SPFILE]
gdzie:
sid
filename
- nazwa instancji,
- nazwa pliku konfiguracyjnego init<SID>.ora.
W przypadku braku parametru -PFILE FILENAME lub SPFILE pliki konfiguracyjne szukane są
w katalogach domyĞlnych, najpierw plik z parametrami typu SPFILE a w przypadku jego braku plik typu
PFILE.
§ 6.3. Otwieranie serwisu instancji przy pomocy programu Oradim
Sam serwis instancji moĪna uruchomiü nastĊpująco:
c:\oradim -STARTUP -SID xe -STARTTYPE srvc
§ 6.4. Otwieranie instancji przy pomocy programu Oradim
Samą instancjĊ moĪna uruchomiü nastĊpująco:
c:\oradim -STARTUP -SID xe -STARTTYPE inst
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 28 -
lub jednoczeĞnie z serwisem:
c:\oradim -STARTUP -SID xe -STARTTYPE srvc,inst
lub jeszcze dodatkowo ze wskazaniem pliku z parametrami
c:\oradim -STARTUP -SID xe -STARTTYPE srvc,inst
-PFILE c:\initxe.ora
§ 6.5. Zatrzymywanie serwisu instancji i instancji
Ztrzymanie serwisu instancji i samej instancji moĪna wykonaü nastĊpująco:
c:\oradim -SHUTDOWN -SID xe -SHUTTYPE srvc,inst
§ 6.6. Otwieranie instancji przy pomocy SQL*Plus
Otwieranie samej instancji realizuje siĊ za pomocą polecenia STARTUP lub STARTUP OPEN.
PoniĪsza sekwencja poleceĔ prowadzi do otwarcia instancji (musi byü uruchomiony proces nasáuchowy
i serwis instancji):
x
Wywoáanie programu SQL*Plus z opcją /nolog.
c:\sqlplus /nolog
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
x
- 29 -
Doáączenie siĊ do instancji jako uĪytkownik SYS lub SYSTEM z uprawnieniami SYSOPER lub
SYSDBA – predefiniowany administrator bazy danych.
SQL> CONNECT system/password@nazwa_instancji AS SYSDBA
lub
SQL> CONNECT system AS SYSDBA
x
Otwarcie instancji:
SQL> STARTUP
lub
SQL> STARTUP OPEN
Instancja ORACLE zostaáa uruchomiona.
Baza danych zostaáa zamontowana.
Baza danych zostaáa otwarta.
W wyniku wydania polecenia startup open lub startup instancja przechodzi przez trzy tryby
pracy: NOMOUNT, MOUNT i OPEN.
Administrator bazy danych moĪe ją równieĪ uruchomiü w trybie NOMOUNT i MOUNT.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 30 OPEN
MOUNT
NOMOUNT
Zatrzymana
Rysunek 6.6.1. Etapy uruchamiania instancji
Tryb NOMOUNT jest wykorzystywany m.in. do tworzeni bazy danych i plików kontrolnych.
W tym trybie Oracle:
x Odczytuje
pliki
parametrów
konfiguracyjnych
instancji
init<SID>.ora
spfile<SID>.ora. W szczególnoĞci znajduje nazwy i lokalizacje plików kontrolnych.
x Tworzy i inicjuje obszar pamiĊci SGA.
x Uruchamia procesy drugoplanowe.
x ….
Do uruchomienia instancji w trybie NOMOUNT sáuĪy polecenie:
SQL> STARTUP NOUMOUNT
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
lub
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 31 -
Tryb MOUNT jest wykorzystywany m.in. do zmiany poáoĪenia plików danych, zmiany poáoĪenia,
tworzenia nowych i usuwania istniejących plików dziennika powtórzeĔ, odtwarzania bazy danych.
W tym trybie Oracle:
x
Odczytuje plik kontrolny w celu zlokalizowania plików danych i dziennika powtórzeĔ.
x
Przyáącza pliki danych i pliki dziennika powtórzeĔ.
Do uruchomienia instancji z bazą danych w trybie MOUNT sáuĪy polecenie
SQL> STARTUP MOUNT
lub z trybu NOMOUNT poleceniem
SQL> ALTER DATABASE MOUNT
W trybie OPEN są otwierane pliki danych i pliki dziennika powtórzeĔ, co powoduje, Īe baza danych staje
siĊ dostĊpna dla uĪytkowników. Tryb ten jest równieĪ wykorzystywany do odtwarzania czĊĞci bazy danych
po awarii.
Do uruchomienia instancji z bazą danych w trybie OPEN sáuĪy polecenie
SQL> STARTUP [OPEN]
lub gdy baza jest w trybie MOUNT poleceniem
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 32 -
SQL> ALTER DATABASE OPEN
§ 6.7. Zamykanie instancji
Zamykanie instancji przebiega w trzech fazach. W fazie pierwszej są zamykane pliki danych i pliki
dziennika powtórzeĔ, w drugiej instancja odáącza te pliki i zamyka pliki kontrolne. W fazie trzeciej są
usuwane procesy bazy danych i zwalniana jest pamiĊü zaalokowana dla obszaru SGA.
InstancjĊ moĪna zamknąü w czterech trybach:
NORMAL, TRANSACTIONAL, IMMEDIATE, ABORT.
x ZamkniĊcie instancji w trybie NORMAL wykonuje siĊ za pomocą polecenia SHUTDOWN lub
SHUTDOWN NORMAL. ZamkniĊcie w tym trybie czeka na zakoĔczenie wszystkich sesji (blokuje
otwarcie nowych sesji).
x ZamkniĊcie instancji w trybie TRANSACTIONAL wykonuje siĊ za pomocą polecenia SHUTDOWN
TRANSACTIONAL. ZamkniĊcie w tym trybie czeka na zakoĔczenie wszystkich aktualnych
transakcji uĪytkownika (blokuje otwarcie nowych sesji) i odáącza go.
x Do zamkniĊcia instancji w trybie IMMEDIATE sáuĪy polecenie SHUTDOWN IMMEDIATE. Tryb ten
róĪni siĊ od trybu NORMAL tym, Īe aktualnie wykonywane polecenia są przerywane i wszystkie
aktywne transakcje są natychmiast wycofywane (blokuje otwarcie nowych sesji).
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 33 -
x W trybie ABORT instancjĊ zamyka siĊ za pomocą polecenia SHUTDOWN ABORT. Polecenie to
stosuje siĊ, gdy instancji nie moĪna zamknąü ani w trybie NORMAL ani IMMEDIATE. W wyniku
wykonania polecenia SHUTDOWN
ABORT wszystkie aktualnie wykonywane polecenia są
natychmiast przerywane, ale transakcje nie są wycofywane.
Po zamkniĊciu w tym trybie mogą wystąpiü problemy przy ponownym otwarciu. MoĪe byü
potrzebne wykonanie polecenia RECOVERY ….
§ 6.8. Przykáady uruchamiania i zamykania instancji
Instancja ma nazwĊ xe.
c:\sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on N Mar 11 18:18:17 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> CONNECT sys@xe AS SYSDBA
Enter password:******
Connected.
- ProszĊ podaü hasáo: ******
- Poáączono
SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
- Baza danych zostaáa zamkniĊta.
- Baza danych zostaáa zdemontowana.
- Instancja ORACLE zostaáa zamkniĊta.
SQL> desc all_users
ERROR: ORA-...: ORACLE not available
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 34 -
SQL> STARTUP
ORACLE instance started.
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
- Instancja ORACLE zostaáa uruchomiona.
285212672
1287016
100666520
180355072
2904064
bytes
bytes
bytes
bytes
bytes
Database mounted.
Database opened.
- Baza danych zostaáa zamontowana.
- Baza danych zostaáa otwarta.
SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
- Baza danych zostaáa zamkniĊta.
- Baza danych zostaáa zdemontowana.
- Instancja ORACLE zostaáa zamkniĊta.
SQL> STARTUP RESTRICT
ORACLE instance started.
Total System Global Area
...
Redo Buffers
- Instancja ORACLE zostaáa uruchomiona.
285212672 bytes
2904064 bytes
Database mounted.
Database opened.
- Baza danych zostaáa zamontowana.
- Baza danych zostaáa otwarta.
SQL> CONNECT hr/hr@xe
ERROR: ORA-XXXXX: ORACLE only available to users with RESTRICTED SESSION privilege
SQL> CONNECT sys@xe AS SYSDBA
Enter password:******
Connected.
- ProszĊ podaü hasáo: ******
- Poáączono
SQL> GRANT RESTRICTED SESSION TO hr;
Grant succeeded.
- Przyznanie uprawnieĔ zakoĔczone powodzeniem.
SQL> CONNECT hr/hr@xe
Connected.
- Poáączono.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 35 -
SQL> CONNECT sys@xe AS SYSDBA
Enter password:******
Connected.
- ProszĊ podaü hasáo: ******
- Poáączono
SQL> REVOKE RESTRICTED SESSION FROM hr;
- Pozbawienie uprawnieĔ zakoĔczone powodzeniem.
Revoke succeeded.
SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
- Baza danych zostaáa zamkniĊta.
- Baza danych zostaáa zdemontowana.
- Instancja ORACLE zostaáa zamkniĊta.
SQL> STARTUP OPEN
ORACLE instance started.
Total System Global Area
...
Redo Buffers
- Instancja ORACLE zostaáa uruchomiona.
285212672 bytes
2904064 bytes
Database mounted.
Database opened.
- Baza danych zostaáa zamontowana.
- Baza danych zostaáa otwarta.
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
- Baza danych zostaáa zamkniĊta.
- Baza danych zostaáa zdemontowana.
- Instancja ORACLE zostaáa zamkniĊta.
SQL> STARTUP MOUNT
ORACLE instance started.
Total System Global Area
...
Redo Buffers
- Instancja ORACLE zostaáa uruchomiona.
285212672 bytes
2904064 bytes
Database mounted.
- Baza danych zostaáa zamontowana.
SQL> STARTUP
ORA-XXXXX: cannot start already-running ORACLE-shut it down first
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
6. URUCHAMIANIE I ZAMYKANIE INSTANCJI
- 36 -
ORA-XXXXX: nie moĪna startowaü juĪ aktywnej ORACLE - naleĪy ja najpierw zamknąü
SQL> SHUTDOWN
ORA- XXXXX: baza danych nie jest zamontowana
Instancja ORACLE zostaáa zamkniĊta.
SQL> STARTUP NOMOUNT
ORACLE instance started.
Total System Global Area
...
Redo Buffers
- Instancja ORACLE zostaáa uruchomiona.
285212672 bytes
2904064 bytes
Z poziomu MOUNT moĪna przejĞü do poziomu OPEN otwarcia poleceniem:
SQL> ALTER DATABASE OPEN;
Database altered.
Z poziomu NOMOUNT nie moĪna tym poleceniem przejĞü do poziomu OPEN. MoĪna jednak wykonaü
nastĊpujące polecenia:
SQL> ALTER DATABASE MOUNT;
Database altered.
SQL> ALTER DATABASE OPEN;
Database altered.
Uwaga. Poleceniem ALTER DATABASE nie moĪna obniĪaü poziomu otwarcia.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
7. PARAMETRY BAZY DANYCH ORACLE
- 37 -
7. PARAMETRY BAZY DANYCH ORACLE
§ 7.1. Zmiany parametrów
W najnowszych wersjach Oracle uruchamiany system korzysta z binarnego piku parametrów
spfile<SID>.ora. Jest moĪliwoĞü wystartowania z parametrami z odpowiednika, pliku tekstowego
init<SID>.ora. W pliku binarnym SPFILE moĪemy zmieniaü wartoĞü parametrów z poziomu SQL.
W pliku tekstowym PFILE jest to niemoĪliwe.
Sposoby tworzenia tych plików pokazują nastĊpujące przykáady: ( z uprawnieniami SYSDBA)
SQL> CREATE SPFILE='c:\spfilexe.ora' FROM PFILE='c:\initxe.ora';
SQL> CREATE PFILE='c:\initxe.ora' FROM SPFILE;
Sposób zmiany pewnych parametrów z poziomu SQL pokazują nastĊpujące przykáady:
SQL> ALTER SYSTEM SET resource_limit=TRUE SCOPE=MEMORY;
System altered.
Po restarcie systemu obowiązuje poprzednia wartoĞü.
SQL> ALTER SYSTEM SET open_cursors =400
SCOPE=SPFILE;
System altered.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
7. PARAMETRY BAZY DANYCH ORACLE
- 38 -
Ustawienia obowiązują dopiero po restarcie systemu.
SQL> ALTER SYSTEM SET open_cursors =400 SCOPE=BOTH;
System altered.
Ustawienia obowiązują natychmiast i po restarcie.
§ 7.2. Plik init<SID>.ora
W pliku init<SID>.ora (spfile<SID>.ora) ustawiane są miĊdzy innymi nastĊpujące parametry:
DB_NAME
-
CONTROL_FILES
OPEN_CURSORS
DB_BLOCK_SIZE
SHARED_POOL_SIZE
BACKGROUND_DUMP_DEST
USER_DUM_DEST
COMPATIBILE
LOG_ARCHIVE_START
LOG_ARCHIVE_FORMAT
LOG_ARCHIVE_DEST
UNDO_MANAGEMENT
PROCESSES
HASH_JOIN_ENABLED
…
-
Identyfikator bazy danych (maks. 8 znaków). Aby zmieniü nazwĊ istniejącej bazy danych,
naleĪy uĪyü wyraĪenia CREATE CONTROLFILE w celu odtworzenia plików sterujących
i okreĞliü nową nazwĊ.
Nazwy plików sterujących.
IloĞü jednoczeĞnie otwartych kursorów w czasie sesji.
Rozmiar bloku bazy danych w bajtach.
Rozmiar wspóádzielonej puli w bajtach.
Miejsce, w którym przechowywane bĊdą pliki do Ğledzenia procesów drugoplanowych.
Miejsce, w którym przechowywane bĊdą pliki do Ğledzenia procesów uĪytkownika.
Wersja serwera, z którą zgodna jest instancja.
Automatyczne archiwizowanie.
Format nazwy plików archiwum.
Miejsce archiwizowania plików rejestru.
Metoda zarządzania wycofywaniem transakcji.
Maksymalna iloĞü procesów chcących poáączyü siĊ z instancją.
DostĊp do metody Hash Join w optymalizatorze zapytaĔ.
…
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
7. PARAMETRY BAZY DANYCH ORACLE
- 39 -
Przykáadowy plik initxe.ora ( wersja z instalacji Expres Edition).
db_cache_size=180355072
java_pool_size=4194304
large_pool_size=8388608
shared_pool_size=88080384
streams_pool_size=0
audit_file_dest='c:\oraclexe\app\oracle\admin\xe\adump'
background_dump_dest='c:\oraclexe\app\oracle\admin\xe\bdump'
compatible='10.2.0.1.0'
control_files='c:\oraclexe\oradata\xe\control.dbf'
core_dump_dest='c:\oraclexe\app\oracle\admin\xe\cdump'
db_name='XE'
DB_RECOVERY_FILE_DEST_SIZE=10G
DB_RECOVERY_FILE_DEST='c:\oraclexe\app\oracle\flash_recovery_area'
dispatchers='(PROTOCOL=TCP) (SERVICE=xeXDB)'
job_queue_processes=4
open_cursors=300
os_authent_prefix=''
pga_aggregate_target=90M
remote_login_passwordfile='EXCLUSIVE'
sessions=20
sga_target=270M
shared_servers=4
undo_management='AUTO'
undo_tablespace='UNDO'
user_dump_dest='c:\oraclexe\app\oracle\admin\xe\udump'
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
7. PARAMETRY BAZY DANYCH ORACLE
- 40 -
WartoĞü wszystkich parametrów moĪna odczytaü z dynamicznej perspektywy V$PARAMETER juĪ od
stanu NOMOUNT.
SQL> SELECT name, value FROM v$parameter;
WartoĞci parametrów nie wystĊpujących w pliku init<SID>.ora lub spfile<SID>.ora
przyjmują wartoĞci domyĞlne.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 41 -
8. STRUKTURA PRZECHOWYWANIA
§ 8.1. Warstwa fizyczna i logiczna przechowywania danych
StrukturĊ przechowywania bazy danych ORACLE moĪna podzieliü na fizyczną i logiczną.
Rysunek 8.1.1. Warstwa logiczna i fizyczna danych.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 42 -
Rozdzielenie warstw fizycznej i logicznej uelastycznia zarządzanie systemem.
Fizycznie baza skáada siĊ z plików danych.
Logicznie baza skáada siĊ z przestrzeni tabel (tablespace). Dla danej przestrzeni tabel musi istnieü, co
najmniej jeden plik danych.
Rysunek 8.1.2. Przestrzenie danych.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 43 -
KaĪdy plik danych jest logicznie podzielony na mniejsze jednostki.
Najmniejszą jednostką logiczną pliku danych jest blok.
Z bloków stanowiących ciągáy obszar zbudowane są rozszerzenia (extent).
Segment to zbiór rozszerzeĔ.
Jednej tabeli przydzielany jest jeden i tylko jeden segment. Do jednego segmentu przydzielana jest jedna
tabela.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 44 -
Tablespace Dane
Dane02.dbf
Dane01.dbf
Rozszerzenie 1
Rozszerzenie 3
Rozszerzenie 2
Segment
Rozszerzenie 1
Rozszerzenie 2
Rozszerzenie 3
Rysunek 8.1.3. Rozszerzenia i segment.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 45 -
NastĊpny rysunek ilustruje budowĊ segmentu (parametry bĊdą omówione póĪniej).
Rysunek 8.1.4. Budowa segmentu.
Blok jest najmniejszą jednostką alokacji przestrzeni dyskowej dla bazy Oracle, skáadający siĊ z jednego
lub wielu bloków systemu operacyjnego.
Rozmiar bloku jest ustawiany podczas tworzenia bazy przez parametr DB_BLOCK_SIZE.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
Blok moĪna podzieliü na:
x Nagáówek.
x Wolną przestrzeĔ.
x PrzestrzeĔ danych.
- 46 Blok np. 8192 B
Nagáówek bloku
Wolna przestrzeĔ
Dane
Rysunek 8.1.5. Budowa bloku
Nagáówek bloku (ang. block header) przechowuje miĊdzy innymi:
x informacje o typie segmentu, w skáad, którego wchodzi, oraz adres bloku,
x dane o transakcjach, w których blok jest uĪywany.
x …
Wolna przestrzeĔ bloku znajduje siĊ pomiĊdzy nagáówkiem i przestrzenią danych. Konstrukcja taka
pozwala na rozrastanie siĊ nagáówka, jak i przestrzeni danych. Początkowo wolna przestrzeĔ jest spójnym
obszarem jednak operacje wstawiania i aktualizacji mogą byü przyczyną fragmentacji wolnej przestrzeni.
Defragmentacja wolnej przestrzeni jest przeprowadzana przez system automatycznie.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 47 -
Klauzula przechowywania (ang. storage clause) moĪe byü okreĞlona na poziomie przestrzeni
tabel lub segmentu (tabeli).
JeĪeli parametry przechowywania nie są jawnie ustawione na poziomie segmentu, to stosowane są
parametry jego przestrzeni tabel (poza MINIMUM EXTENT).
JeĪeli przestrzeĔ tabel nie ma jawnie okreĞlonych parametrów przechowywania przyjmowane są wartoĞci
domyĞlne systemu.
Po zmianie parametru przechowywania, nowa wartoĞü jest stosowana jedynie dla nowo przydzielanych
zakresów.
Nowe zakresy są przydzielane, gdy segment jest:
x tworzony,
x rozszerzany,
x zmieniany.
Zakresy są zwalniane, gdy segment jest:
x
x
x
x
usuwany,
zmieniany,
obcinany,
automatycznie zmniejszany (tylko segment wycofania).
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 48 -
Po utworzeniu przestrzeni tabel plik danych skáada siĊ z bloku nagáówka, który jest pierwszym blokiem
pliku oraz z wolnego zakresu bĊdącego pozostaáą czĊĞcią pliku danych. Podczas tworzenia segmentów,
przydzielana jest im przestrzeĔ naleĪąca do wolnych zakresów. Zakresy zwalniane przez segmenty są
dodawane do puli wolnych zakresów w przestrzeni tabel.
Spójny fragment przestrzeni wykorzystywany przez segment nazywany jest wykorzystanym zakresem
(ang. used extent).
CzĊste przydzielanie i zwalnianie zakresów moĪe prowadziü do fragmentacji przestrzeni w pliku danych.
W przestrzeni tabel moĪe powstaü ciągáy obszar wolnej przestrzeni záoĪonej z kilku zakresów, który
moĪna záączyü (ang. coalesed) w jeden zakres.
Takie záączenie w jeden zakres nastĊpuje, gdy:
x SMON zainicjuje transakcjĊ przestrzeni (ang. space transaction),
x system próbuje przydzieliü zakres, który potrzebuje wiĊcej przestrzeni niĪ przestrzeĔ jednego
z sąsiednich zakresów,
x wydane zostanie polecenie
SQL> ALTER TABLESPACE nazwa_przestrzeni_tabel COALESCE;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 49 -
Proces SMON áączy zakresy w przestrzeniach tabel, w których PCTINCREASE > 0, zatem, aby
záączenia nastĊpowaáy automatycznie w przestrzeniach zawierających obiekty uĪytkowników naleĪy
w domyĞlnej klauzuli przechowywania przestrzeni tabel ustawiü PCTINCREASE = 1.
PoniĪsze zapytanie pokazuje jak sprawdziü, które przestrzenie zawierają zakresy mogące podlegaü
záączeniu.
SQL> SELECT tablespace_name, total_extents,
percent_extents_coalesced
FROM dba_free_space_coalesced
WHERE percent_extents_coalesced != 100;
TABLESPACE_NAME TOTAL_EXTENTS PERCENT_EXTENTS_COALESCED
USERS
7
42,857142857
Jak widaü moĪemy záączyü zakresy w przestrzeni USERS.
SQL> ALTER TABLESPACE users COALESCE;
RóĪne typy segmentów mają róĪną skáonnoĞü do fragmentacji, dlatego zalecane jest umieszczanie ich
w osobnych przestrzeniach tabel.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 50 -
§ 8.2. Segmenty danych
Segmenty to obiekty bazy danych, które zajmują jej przestrzeĔ. Tabele są podstawowymi obiektami
relacyjnych baz danych. Dane tabel są przechowywane w segmentach danych.
Dane wierszy są przechowywane w bazie w rekordach zmiennej dáugoĞci. Kolumny wiersza są zazwyczaj
przechowywane w takim porządku, w jakim wystĊpują kolumny w tabeli.
KaĪdy wiersz tabeli posiada:
x Nagáówek wiersza – wykorzystywany do przechowywania liczby kolumn wiersza, oraz informacji
o áaĔcuchu i statusie blokady wiersza.
x Dane wiersza – zawierające: dáugoĞci kolumn, wartoĞci kolumn.
Na przechowanie dáugoĞci kolumny nieprzekraczającej 250 bajtów potrzebny jest 1 bajt, natomiast dla
dáuĪszych kolumn wymagane są 3 bajty.
Dane znakowe mogą byü przechowywane w bazie jako áaĔcuchy staáej lub zmiennej dáugoĞci. Typy
znakowe staáej dáugoĞci (CHAR, NCHAR) są przechowywane w zadeklarowanej dáugoĞci.
Typy znakowe zmiennej dáugoĞci (VARCHAR2, NVARCHAR2) wykorzystują tylko przestrzeĔ potrzebną
do zapisania bieĪącej wartoĞci kolumny. Wiersze tej samej kolumny mogą róĪniü siĊ dáugoĞcią.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 51 -
Liczby w bazie danych ORACLE są zawsze (bez wzglĊdu na definicjĊ) przechowywane jako dane
zmiennej dáugoĞci. Mogą one mieü 38 cyfr znaczących. Liczbowy typ danych wymaga: jednego bajta na
wykáadnik, jednego bajta na kaĪde dwie cyfry znaczące mantysy, dodatkowo jednego bajta dla liczb
ujemnych, jeĞli liczba cyfr znaczących jest mniejsza niĪ 38.
Typ danych DATE jest siedmiobajtowym typem staáej dáugoĞci przechowującym datĊ i czas.
Baza ORACLE udostĊpnia nastĊpujące typy danych do przechowywania wielkich obiektów
(LOB - Large Object):
x CLOB
- przeznaczony do przechowywania duĪych iloĞci danych z zestawem znaków staáej
szerokoĞci,
x NCLOB - przeznaczony do przechowywania duĪej iloĞci danych znakowych staáej szerokoĞci,
x BLOB - przeznaczony do przechowywania danych bez struktury,
x BFILE - przeznaczony do przechowywania danych w plikach systemu operacyjnego.
W bazie ORACLE istnieje specjalny typ danych dla identyfikatorów wierszy – ROWID.
ROWID jest pseudokolumną typu ROWID, posiadającą nastĊpujące wáaĞciwoĞci:
x Jest unikalnym identyfikatorem kaĪdego wiersza w caáej bazie danych,
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 52 -
x Nie jest jawnie przechowywana jak inne wartoĞci kolumn,
x Zapewnia najszybszą metodĊ dostĊpu do wiersza,
x Jest wykorzystywana w indeksach do wyszukiwania wiersza z okreĞloną wartoĞcią klucza.
Przykáadowy ROWID mógáby skáadaü siĊ z nastĊpujących czĊĞci (w zaleĪnoĞci od wersji Oracle):
x Numeru obiektu danych (ang. Data Object Number), który jest unikalnym w caáej bazie numerem
przypisanym do kaĪdego obiektu danych,
x WzglĊdnego numeru pliku (ang. Relative File Number), który jest unikalnym numer pliku w ramach
przestrzeni tabel,
x Numeru bloku (ang. Block Number), który reprezentuje pozycjĊ bloku zawierającego dany wiersz
w pliku danych,
x Numeru wiersza (ang. Row Number), który identyfikuje numer pozycji wiersza w katalogu wierszy
nagáówka bloku.
ROWID
Nr obiektu danych
WzglĊdny
numer pliku
Numer bloku
Rysunek 8.2.1. Budowa ROWID
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
Numer wiersza
8. STRUKTURA PRZECHOWYWANIA
- 53 -
PoniĪsze zapytanie wybiera z tabeli osoby kolumny ROWID i id.
SQL> SELECT ROWID, id FROM osoby;
ROWID
ID
AAABo6AADAAAAL7AAA 1
AAABo6AADAAAAL7AAB 2
Jak widzimy dla wybranych wierszy
x numer obiektu danych to AAABo6,
x wzglĊdny numer pliku to AAD
x numer bloku to AAAAL7
Natomiast wiersz o id = 1 ma numer wiersza w katalogu wierszy równy AAA.
ĝcieĪka lokalizacji wiersza przez ROWID:
x Na podstawie numeru obiektu danych system moĪe okreĞliü przestrzeĔ tabel, poniewaĪ segment
moĪe byü umieszczony tylko w jednej przestrzeni tabel.
x Znając przestrzeĔ tabel i wzglĊdny numer pliku danych w przestrzeni tabel moĪna okreĞliü plik
danych.
x Dalej, znając plik danych i numer bloku, moĪna odszukaü blok zawierający wiersz.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 54 -
x Po zlokalizowaniu bloku, znając numer wiersza w katalogu wierszy umieszczonym w nagáówku
bloku, moĪna odczytaü pozycjĊ wiersza w bloku.
Parametry skáadowania INITRANS i MAXTRANS oznaczają odpowiednio początkową i maksymalną
liczbĊ obszarów transakcji tworzonych w bloku. Obszary transakcji przechowują informacje o wszystkich
transakcjach dokonujących w danym momencie zmian w bloku. Dla kaĪdej transakcji przeznaczony jest
tylko jeden obszar, bez wzglĊdu na to ile wierszy modyfikuje.
WartoĞü domyĞlna parametru INITRANS dla segmentów danych wynosi 1.
Parametr MAXTRANS ustala limit wspóábieĪnych transakcji dokonujących zmian w bloku. WartoĞü
domyĞlna parametru MAXTRANS wynosi 255. Niska wartoĞü MAXTRANS ogranicza wykorzystywanie
wolnej przestrzeni na obszary transakcji i w ten sposób zwiĊksza przestrzeĔ przeznaczoną dla danych.
Parametr PCTFREE okreĞla procentowo (w stosunku do rozmiaru bloku pomniejszonego o nagáówek)
wielkoĞü obszaru zarezerwowanego dla aktualizacji wierszy juĪ znajdujących siĊ w bloku. JeĪeli wartoĞü
parametru PCTFREE nie jest ustawiona przyjmowana jest wartoĞü domyĞlna.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 55 Blok np. 8192 B
Nagáówek bloku
Wolna przestrzeĔ
PCTFREE
Np. 20
Dane
PCTUSED
Np. 40
Rysunek 8.2.2. Parametry PCTFREE i PCTUSED
Wstawianie rekordów do bloku moĪe nastĊpowaü dopóty, dopóki parametr PCTFREE nie zostanie
przekroczony.
Niski wspóáczynnik PCTFREE:
x
Powoduje rezerwowanie maáej iloĞci miejsca na aktualizacjĊ wierszy,
x
Zapewnia lepsze wypeánienie bloku,
x
MoĪe powodowaü wysoki koszt przetwarzania (np. przy operacji UPDATE moĪe zabraknąü miejsca
na nowe wartoĞci).
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 56 -
Wysoki wspóáczynnik PCTFREE:
x
Powoduje rezerwowanie duĪej przestrzeni dla aktualizacji wierszy,
x
Zmniejsza wykorzystanie przestrzeni,
x
MoĪe zmniejszyü koszt przetwarzania (np. przy operacji UPDATE).
DuĪą wartoĞü PCTFREE naleĪy ustawiaü, jeĪeli tabela zawiera wiersze, które w wyniku aktualizacji
bĊdą zwiĊkszaáy rozmiar.
Maáą wartoĞü PCTFREE naleĪy ustawiaü, jeĪeli tabela zawiera wiersze, które nie bĊdą zmieniane.
Parametr PCTUSED jest podawany procentowo i okreĞla minimalny procent wykorzystanej przestrzeni,
jaki system stara siĊ zachowaü w kaĪdym bloku. Blok jest ponownie umieszczany na liĞcie bloków wolnych,
kiedy wykorzystana w nim przestrzeĔ spadnie poniĪej PCTUSED, czyli wtedy, gdy istnieje wystarczająca
przestrzeĔ na wstawienie Ğredniej wielkoĞci wiersza. Lista bloków wolnych w segmencie, to lista bloków
gotowych do przyjĊcia kolejnych wierszy. JeĪeli wartoĞü parametru PCTUSED nie jest ustawiona
przyjmowana jest wartoĞü domyĞlna.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 57 -
Przy wstawieniu wiersza system przegląda kolejne bloki z listy wolnych i szuka bloku z wystarczającą
przestrzenią. Poprawne ustawienie PCTUSED powoduje, Īe system szybko znajduje blok mający
wystarczająco duĪo wolnej przestrzeni dla wstawianego wiersza.
Niski wspóáczynnik PCTUSED
x
Powoduje gorsze wykorzystanie przestrzeni,
x
Zmniejsza koszt operacji UPDATE i DELETE, przez rzadkie przenoszenie bloku na listĊ wolnych.
x
Zmniejsza koszt operacji INSERT bo szybciej znajduje bloki dostĊpne do wstawiania.
Wysoki wspóáczynnik PCTUSED
x Powoduje lepsze wykorzystanie przestrzeni,
x ZwiĊksza koszt np. operacji INSERT (wzrasta czas znalezienia bloku, do którego moĪe byü
wstawiany wiersz).
JeĪeli wiersz jest tak duĪy, Īe nie mieĞci siĊ w jednym bloku, to system dzieli taki wiersz na mniejsze
czĊĞci zwane elementami wiersza. KaĪdy element wiersza jest przechowywany w osobnym bloku wraz ze
wskaĨnikiem do nastĊpnej czĊĞci wiersza. Wiersz taki nazywany jest wierszem w áaĔcuchu.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 58 -
§ 8.3. Segmenty wycofania
Segment wycofania (rollback segment) przechowuje dane sprzed ich zmodyfikowaniem przez
niezatwierdzoną transakcjĊ. KaĪda baza danych musi posiadaü przynajmniej jeden segment wycofania.
Segment ten (o nazwie SYSTEM) jest tzw. systemowym segmentem wycofania.
Segment ten jest wykorzystywany m.in. przez transakcje zapisujące informacje do sáownika bazy danych.
Oracle zaleca, aby kaĪda baza danych posiadaáa dodatkowe – niesystemowe segmenty wycofania. KaĪdy
taki segment jest tworzony w okreĞlonej przestrzeni tabel, podanej w poleceniu tworzącym segment
wycofania.
Zadania segmentów wycofania:
x Wycofywanie transakcji – Kiedy transakcja dokonuje modyfikacji wiersza tabeli poprzednie wartoĞci
tego wiersza są przechowywane w segmencie wycofania, aĪ do zakoĔczenia transakcji. W przypadku
wycofywania transakcji nastĊpuje przywrócenie wartoĞci wiersza na podstawie danych zapisanych
w segmencie wycofania.
x Odtwarzanie transakcji – Po awarii systemu z rozpoczĊtymi transakcjami przy ponownym otwieraniu
bazy serwer musi wycofaü niezatwierdzone transakcje.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 59 -
WyróĪnia siĊ nastĊpujące typy segmentów wycofania:
x Systemowy (SYSTEM) – tworzony podczas tworzenia bazy danych w przestrzeni tabel SYSTEM,
moĪe byü wykorzystywany tylko przy zmianach obiektów z tej przestrzeni tabel.
x Niesystemowe prywatne – wykorzystywane tylko przez jedną instancjĊ.
x …
KaĪda transakcja musi mieü przydzielony segment wycofania. JeĪeli nie wystąpi jawne Īądanie
okreĞlonego segmentu np.
SQL> SET TRANSACTION USE ROLLBACK SEGMENT nazwa_segmentu
NAME nazwa_transakcji;
serwer przydzieli segment z najmniejszą liczbą transakcji.
Segmenty wycofania tworzy siĊ poleceniem CREATE ROLLBACK SEGMENT.
Do wykonywania tego polecenia wymagane jest posiadanie uprawnienia systemowego o tej samej
nazwie.
Segmenty wycofania są tworzone przy pomocy polecenia o nastĊpującej skáadni:
SQL> CREATE [PUBLIC] ROLLBACK SEGMENT nazwa_segmentu
TABLESPACE nazwa_przestrzeni
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 60 -
STORAGE
(
[INITIAL rozmiar [K|M]]
[NEXT rozmiar [K|M]]
[MINEXTENTS liczba]
[MAXEXTENTS liczba]
[OPTIMAL rozmiar [K|M]| NULL]
);
gdzie:
OPTIMAL
OPTIMAL NULL
- Pozwala wyspecyfikowaü optymalny rozmiar segmentu wycofania. System automatycznie dba o
zmniejszanie segmentu do podanej wielkoĞci.
- Opcja ta powoduje, Īe system nie bĊdzie automatycznie zmniejszaá rozmiaru segmentu.
Przykáadowo poniĪsze polecenie tworzy segment wycofania o nazwie rb01 w przestrzeni tabel users.
Rozmiar pierwszego rozszerzenia wynosi 256KB. Rozmiar drugiego i kaĪdego nastĊpnego rozszerzenia
równieĪ wynosi 256KB. Minimalna liczba rozszerzeĔ zostaáa okreĞlona jako 2, a maksymalna na 20.
Oznacza to, Īe maksymalny rozmiar segmentu wycofania moĪe osiągnąü wartoĞü 20*256KB=5120KB.
SQL> CREATE ROLLBACK SEGMENT rb01
TABLESPACE users
STORAGE
(
INITIAL 256K
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 61 -
NEXT 256K
MINEXTENTS 2
MAXEXTENTS 20
OPTIMAL 512K
);
Po utworzeniu segment wycofania jest nieaktywny, tj. posiada status offline. W celu jego uaktywnienia
(wáączenia) stosuje siĊ polecenie:
SQL> ALTER ROLLBACK SEGMENT nazwa_segmentu ONLINE;
Do wyáączenia segmentu wycofania sáuĪy polecenie:
SQL> ALTER ROLLBACK SEGMENT nazwa_segmentu OFFLINE;
Opis utworzonych segmentów wycofania moĪna uzyskaü wydając zapytania do perspektyw
systemowych:
DBA_SEGMENTS i DBA_ROLLBACK_SEGS.
Transakcje wykorzystują zakresy segmentu wycofania w sposób cykliczny. W momencie zapeánienia
aktualnego segmentu wycofania wskaĨnik zapisów jest przesuwany na nastĊpny zakres.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 62 -
Rysunek 8.3.1. Rollback segment
Kiedy ostatni dostĊpny zakres jest zapeániony, wskaĨnik moĪe zostaü przeniesiony na początek
pierwszego zakresu tylko wtedy, gdy jest on wolny.
WskaĨnik nie moĪe przeskoczyü zajĊtego zakresu i przenieĞü siĊ na pierwszy wolny.
JeĪeli po wypeánieniu aktualnego zakresu nastĊpny jest zajĊty, to nastĊpuje rozszerzenie segmentu
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 63 -
wycofania, przez dodanie dodatkowego zakresu. Segment wycofania moĪe tak rosnąü aĪ do uzyskania
maksymalnej liczby zakresów, wyspecyfikowanej w parametrze MAXEXTENTS.
Dla segmentów wycofania moĪna podaü parametr przechowywania OPTIMAL, który okreĞla w bajtach
rozmiar, do którego segment powinien powróciü, gdy bĊdzie to moĪliwe. Powrót rozszerzonego segmentu
do rozmiaru podanego w parametrze OPTIMAL nastĊpuje, gdy istnieją spójne nieaktywne zakresy. System
próbuje zmniejszaü segment wycofania dopóty, dopóki jego rozmiar nie jest optymalny.
W Ğrodowisku bazy transakcyjnej, w którym zwykle mają miejsce krótkie transakcje, zalecanych jest
istnienie wielu maáych segmentów wycofania (np. jeden segment wycofania na 4 wspóábieĪne transakcje).
DuĪa liczba segmentów wycofania zapobiega rywalizacji o nagáówek segmentu wycofania.
W przypadku Ğrodowiska, w który wykonuje siĊ gáównie przetwarzania wsadowe dokonujące wielu
zmian przy maáej liczbie wspóábieĪnych transakcji, zalecane jest utworzenie maáej liczby duĪych segmentów
wycofania, które powinny byü umieszczone w duĪych przestrzeniach tabel, aby umoĪliwiü im rozrastanie
siĊ.
Rozmiar segmentu wycofania zaleĪy od:
x Typu wykonywanych instrukcji (wstawianie, modyfikacja, usuwanie).
x Rozmiaru przetwarzanych rekordów.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 64 -
Wstawienie rekordu do tabeli generuje mniej danych wycofania, niĪ usuniĊcie tego samego rekordu.
Dzieje siĊ tak, dlatego, Īe usuniĊcie wymaga zapisania w segmencie wycofania caáego wiersza, natomiast
wstawienie zapisuje tylko identyfikator ROWID.
Uwagi.
x Po utworzeniu segmentu wycofania jest on w trybie OFFLINE.
x Segmentu utworzonego jako publiczny nie moĪna zmieniü na prywatny i odwrotnie.
x Dla segmentu wycofania parametr MINEXTENTS musi byü wiĊkszy lub równy 2.
x WartoĞü parametru OPTIMAL musi wynosiü przynajmniej tyle, co inicjalny rozmiar segmentu
wyznaczony przez parametry INITIAL, NEXT i MINEXTENTS.
x Dla segmentów wycofania wskazane jest, aby rozmiar wszystkich zakresów byá równy, czyli wartoĞü
parametru INITIAL powinna byü równa wartoĞci parametru NEXT.
x NaleĪy unikaü ustawiania parametru MAXEXTENTS na UNLIMITED, poniewaĪ moĪe to powodowaü
nadmierny wzrost segmentów wycofania i plików danych w przypadku wystąpienia báĊdów
aplikacji.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 65 -
x W celu minimalizowania rywalizacji i fragmentacji naleĪy umieszczaü segmenty wycofania
w specjalnie dla nich wydzielonej przestrzeni tabel.
Do zmiany segmentu wycofania sáuĪy polecenie ALTER ROLLBACK SEGMENT.
Skáadnia polecenia ALTER ROLLBACK SEGMENT:
SQL> ALTER ROLLBACK SEGMENT nazwa_segmentu
{
ONLINE|OFFLINE
|STORAGE storage_clause
|SHRINK [TO liczba [K|M] ]
};
gdzie:
SHRINK - Powoduje zmniejszenie rozmiaru segmentu do wskazanego rozmiaru, lub rozmiaru podanego w parametrze
OPTIMAL w przypadku, gdy rozmiar nie zostaá podany.
Aby segment wycofania byá automatycznie wáączany przez instancjĊ musi byü wyspecyfikowany w pliku
parametrów, przez parametr ROLLBACK_SEGMENTS. Liczba segmentów wycofania, które mogą byü
wáączone przez instancjĊ jest ustalana parametrem MAX_ROLLBACK_SEGMENT. Zaleca siĊ ustawiaü go na
liczbĊ o jeden wiĊkszą od liczby wymaganych w instancji niesystemowych segmentów wycofania.
W momencie otwierania bazy danych segmenty wycofania są przydzielane instancji.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 66 -
Do usuwania segmentów wycofania sáuĪy polecenie DROP ROLLBACK SEGMENT. Jego uĪycie
wymaga posiadania uprawnienia DROP ROLLBACK SEGMENT.
Skáadnia polecenia DROP ROLLBACK SEGMENT:
SQL> DROP ROLLBACK SEGMENT nazwa_segmentu;
Przed usuniĊciem segmentu wycofania naleĪy go wyáączyü poleceniem ALTER ROLLBACK SEGMENT.
Utwórzmy segment wycofania rb02.
SQL> CREATE ROLLBACK SEGMENT rb02
TABLESPACE users
STORAGE (
INITIAL 100K
NEXT 100K
OPTIMAL 4M
MINEXTENTS 20
MAXEXTENTS 100
);
PoniĪsze zapytanie pokazuje, Īe zostaá utworzony segment wycofania rb02 i jest on w trybie OFFLINE.
SQL> SELECT segment_name, status FROM dba_rollback_segs;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 67 SEGMENT_NAME
SYSTEM
…
RB02
STATUS
ONLINE
…
OFFLINE
UdostĊpnimy go teraz transakcjom, przeáączając go w tryb ONLINE.
SQL> ALTER ROLLBACK SEGMENT rb02 ONLINE;
SQL> SELECT segment_name,status FROM dba_rollback_segs
WHERE segment_name='RB02';
SEGMENT_NAME
RB02
STATUS
ONLINE
JeĪeli chcemy, aby nasz nowo utworzony segment rb02 byá dostĊpny po starcie systemu musimy
wyspecyfikowaü je w parametrze ROLLBACK_SEGMENTS pliku init<sid>.ora.
ROLLBACK_SEGMENTS = (rb02)
UsuĔmy segment wycofania rb02.
SQL> DROP ROLLBACK SEGMENT rb02;
BàĄD w linii 1:
ORA-XXXXX: wyspecyfikowany segment wycofania 'RB02' nie jest dostĊpny
Jak widaü polecenie spowodowaáo wyjątek, który oznacza brak moĪliwoĞci usuniĊcia wáączonego
segmentu wycofania.
Wyáączenie i usuniĊcie segmentu wycofania rb02.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 68 -
SQL> ALTER ROLLBACK SEGMENT rb02 OFFLINE;
Segment wycofania zostaá zmieniony.
SQL> DROP ROLLBACK SEGMENT rb02;
Segment wycofania zostaá usuniĊty.
§ 8.4. Automatyczne zarządzanie wycofywaniem transakcji
Od wersji 9i wprowadzono moĪliwoĞü automatycznego sposóbu wycofywania transakcji Undo
Management.
W pliku init<SID>.ora lub w spfile<SID>.ora musi znajdowaü siĊ wtedy wpis:
undo_management=AUTO
undo_retention=10800
undo_tablespace=undotbs01
System w przestrzeni tabel UNDOTBS01 tworzy kilka segmentów wycofywania i sam nimi zarządza.
Uwaga. Przy tworzeniu bazy danych nazwa przestrzeni tabel wycofywania musi byü zgodna z nazwą
w pliku init<SID>.ora lub w spfile<SID>.ora tzn. w naszym przykáadzie UNDOTBS01.
§ 8.5. Zarządzanie przestrzeniami tabel i plikami danych
WáaĞciwoĞci przestrzeni tabel:
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 69 -
x NaleĪy tylko do jednej bazy.
x Skáada siĊ z jednego lub wielu plików systemu operacyjnego.
x MoĪe byü przyáączona i odáączona do bazy w trakcie jej pracy (poza przestrzenią SYSTEM).
x MoĪe mieü status READ ONLY - „tylko odczyt” lub READ WRITE - „odczyt i zapis”, który moĪna
zmieniaü podczas pracy bazy.
Mechanizm przestrzeni tabel umoĪliwia miĊdzy innymi:
x Rozmieszczenie przechowywanych danych na róĪnych urządzeniach fizycznych, co zwiĊksza
wydajnoĞci operacji zapisu i odczytu przez zmniejszenie rywalizacji dostĊpu do dysku.
x Dokonanie czĊĞciowych archiwizacji oraz czĊĞciowego odtworzenia archiwum.
x Przechowywanie statycznych danych na urządzeniach „tylko do odczytu”.
Baza danych zawsze zawiera przestrzeĔ tabel SYSTEM, która przechowuje sáownik danych oraz segment
wycofania SYSTEM.
Do tworzenia przestrzeni tabel sáuĪy polecenie CREATE TABLESPACE. Do jego uĪycia potrzebne jest
uprawnienie systemowe CREATE TABLESPACE.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
Do tworzenia przestrzeni tabel sáuĪy polecenie CREATE TABLESPACE o nastĊpującej skáadni:
SQL> CREATE TABLESPACE nazwa_przestrzeni_tabel
DATAFILE ’plik’ SIZE rozmiar [K|M]
[ AUTOEXTEND ON NEXT rozmiar [K|M] [MAXSIZE rozmiar [K|M]] ]
[ONLINE|OFFLINE]
DEFAULT STORAGE
(
[INITIAL rozmiar [K|M]]
[NEXT rozmiar [K|M]]
[MINEXTENTS liczba]
[MAXEXTENTS liczba]
[PCTINCREASE liczba]
);
gdzie:
plik
rozmiar
ONLINE
OFFLINE
-
oznacza nazwĊ pliku wraz z peánią ĞcieĪką dostĊpu
oznacza rozmiar pliku podany w bajtach, kilobajtach (K) lub megabajtach (M)
powoduje utworzenie aktywnej przestrzeni tabel
powoduje utworzenie nieaktywnej przestrzeni tabel
Utwórzmy przestrzeĔ table dane.
SQL> CREATE TABLESPACE dane
DATAFILE 'c:\oraclexe\oradata\xe\dane.dbf' SIZE 5M
DEFAULT STORAGE
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
- 70 -
8. STRUKTURA PRZECHOWYWANIA
- 71 -
(
INITIAL 512K
NEXT 512K
PCTINCREASE 20
MINEXTENTS 2
MAXEXTENTS 20
);
PoniĪsza instrukcja tworzy przestrzeĔ tabel baza skáadającą siĊ z dwóch plików danych.
SQL> CREATE TABLESPACE baza
DATAFILE 'c:\oraclexe\oradata\xe\baza_1_live.dbf' SIZE 1M
AUTOEXTEND ON NEXT 1M MAXSIZE 50M,
'c:\oraclexe\oradata\xe\baza_2_live.dbf' SIZE 1M
AUTOEXTEND ON NEXT 1M MAXSIZE 50M
DEFAULT STORAGE
(
INITIAL 10K
NEXT 50K
MINEXTENTS 1
MAXEXTENTS 999
PCTINCREASE 10
)
ONLINE;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 72 -
Przestrzenie tabel moĪna zmieniaü poleceniem ALTER TABLESPACE.
Skáadnia polecenia ALTER TABLESPACE:
SQL> ALTER TABLESPACE nazwa_przestrzeni_tabel
{ ADD DATAFILE 'plik' [autoextend_clause]
[ , 'plik' [autoextend_clause] ]
| RENAME DATAFILE 'plik' [,'plik']
TO 'plik' [,'plik']
| COALESCE
| DEFAULT STORAGE storage_clause };
PrzestrzeĔ tabel moĪna usunąü z bazy poleceniem DROP TABLESPACE.
Skáadnia polecenia DROP TABLESPACE:
SQL> DROP TABLESPACE nazwa_przestrzeni_tabel
[INCLUDING CONTENTS [CASCADE CONSTRAINTS] ];
gdzie:
INCLUDING CONTENTS
CASCADE CONSTRAINTS
- Powoduje usuniĊcie wszystkich segmentów (tabel z danymi) przed jej usuniĊciem.
- Powoduje usuniĊcie wiĊzów spójnoĞci referencyjnej z tabel przechowywanych w innych
przestrzeniach, które odwoáują siĊ do tabel usuwanej przestrzeni.
Rozmiar przestrzeni tabel moĪna zwiĊkszyü przez:
x Dodanie nowego pliku danych (ALTER TABLESPACE),
x ZwiĊkszenie rozmiaru juĪ istniejącego pliku.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 73 -
Zmiana rozmiaru pliku danych moĪe nastĊpowaü w wyniku:
x Wydania polecenia ALTER DATABASE (tzw. rĊczna zmiana rozmiaru pliku),
x Automatycznego rozszerzenia.
PoniĪsze polecenie zwiĊksza rozmiar dwóch plików danych przestrzeni baza.
SQL> ALTER DATABASE
DATAFILE 'c:\oraclexe\oradata\xe\baza_1_live.dbf',
'c:\oraclexe\oradata\xe\baza_2_live.dbf'
RESIZE 2M;
Automatyczne zwiĊkszenie rozmiaru pliku danych moĪe nastĊpowaü, jeĪeli opcja pliku danych
AUTOEXTEND jest wáączona, co moĪe byü spowodowane uĪyciem nastĊpujących poleceĔ zawierających
klauzulĊ autoextend_clause:
x
x
x
x
CREATE DATABASE (dla tworzonych plików danych),
ALTER DATABASE (dla istniejących plików danych),
CREATE TABLESPACE (dla tworzonych plików danych),
ALTER TABLESPACE (dla istniejących plików danych).
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 74 -
Skáadnia klauzuli autoextend_clause:
AUTOEXTEND
{OFF
|ON [NEXT liczba [K|M]] [MAXSIZE {UNLIMITED|liczba [K|M]}]}
Przykáad 8.5.1. Zobaczmy, jakie pliki danych przestrzeni tabel baza mogą ulegaü automatycznemu
rozszerzeniu.
SQL> SELECT file_name, autoextensible
FROM dba_data_files
WHERE tablespace_name = 'BAZA';
FILE_NAME
C:\ORACLEXE\ORADATA\XE\BAZA_1_LIVE.DBF
C:\ORACLEXE\ORADATA\XE\BAZA_2_LIVE.DBF
AUTOEXTENSIBLE
YES
YES
Jak widaü wszystkie mogą byü rozszerzane automatycznie przez system.
Odáączmy tĊ wáaĞciwoĞü.
SQL> ALTER DATABASE
DATAFILE 'c:\oraclexe\oradata\xe\baza_2_live.dbf',
'c:\oraclexe\oradata\xe\baza_1_live.dbf'
AUTOEXTEND OFF;
SQL> SELECT file_name, autoextensible
FROM dba_data_files
WHERE tablespace_name = 'BAZA';
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 75 -
FILE_NAME
C:\ORACLEXE\ORADATA\XE\BAZA_1_LIVE.DBF
C:\ORACLEXE\ORADATA\XE\BAZA_2_LIVE.DBF
AUTOEXTENSIBLE
NO
NO
PrzestrzeĔ tabel moĪe mieü ustawiony nastĊpujący status:
x ONLINE
x READ ONLY
x READ WRITE
x OFFLINE
Do przestrzeni tabel, która ma status OFFLINE, uĪytkownicy nie mają dostĊpu (tzn. nie mają dostĊpu do
juĪ istniejących obiektów oraz nie mogą tworzyü w niej nowych obiektów).
Podczas przeáączania przestrzeni w stan OFFLINE system wykonuje punkt kontrolny (bĊdzie o nim
mowa w dalszej czĊĞci) na wszystkich plikach bazy oraz odnotowuje to zdarzenie w sáowniku danych
i w pliku kontrolnym.
ZamkniĊcie i uruchomienie bazy nie zmienia stanów przestrzeni tabel.
Przykáad 8.5.2. SprawdĨmy status przestrzeni tabel baza.
SQL> SELECT tablespace_name, status
FROM dba_tablespaces
WHERE tablespace_name = 'USERS';
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 76 TABLESPACE_NAME
USERS
STATUS
ONLINE
Przykáad 8.5.3. Przeáączmy teraz przestrzeĔ tabel users w stan OFFLINE.
SQL> ALTER TABLESPACE users OFFLINE;
SQL> SELECT tablespace_name, status
FROM dba_tablespaces
WHERE tablespace_name = 'BAZA';
TABLESPACE_NAME
USERS
STATUS
OFFLINE
Przykáad 8.5.4. PoniĪsze polecenie pokazuje, Īe w odáączonej przestrzeni tabel nie moĪna tworzyü
obiektów.
SQL> CREATE TABLE t1 (id NUMBER) TABLESPACE users;
BàĄD w linii 1:
ORA-XXXXX: przestrzeĔ tabel 'USERS' jest offline, nie moĪna przydzieliü w niej miejsca
PrzestrzeĔ tabel ze statusem READ ONLY jest niedostĊpna dla operacji modyfikujących jej pliki danych.
System ORACLE nigdy nie modyfikuje plików danych przestrzeni READ ONLY, co pozwala umieĞciü je na
urządzeniach tylko do odczytu np. CD-ROM.
Aby moĪliwe byáo przeáączenie przestrzeni tabel w tryb READ ONLY musi ona speániaü nastĊpujące
warunki:
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 77 -
x musi byü wáączona (ONLINE),
x nie mogą byü z nią związane Īadne aktywne transakcje,
x nie moĪe zawieraü aktywnego segmentu wycofania,
x nie moĪe podlegaü w tym momencie gorącej archiwizacji (bĊdzie opisane póĪniej).
Zalecanym sposobem przeáączenia przestrzeni tabel w tryb READ ONLY jest uruchomienie instancji
w trybie ograniczonego dostĊpu (RESTRICT).
Przeáączenie przestrzeni tabel w tryb READ ONLY skutkuje wykonaniem punktów kontrolnych na
plikach danych tej przestrzeni.
Przy przechodzeniu przestrzeni ze stanu READ ONLY w tryb pozwalający na zapis, muszą byü wáączone
wszystkie pliki danych tej przestrzeni. PrzejĞcie do stanu peánego dostĊpu wykonuje siĊ poleceniem:
SQL> ALTER TABLESPACE nazwa_przestrzeni_tabel READ WRITE;
Do przeniesienia plików danych moĪna wykorzystaü polecenia: ALTER TABLESPACE lub ALTER
DATABASE.
Polecenia te faktycznie sprawdzają tylko istnienie plików docelowych, przed ich wykonaniem naleĪy
utworzyü pliki docelowe przez skopiowanie plików Ĩródáowych.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 78 -
Przykáad 8.5.5. Przykáad zmiany poáoĪenia plików danych. Utwórzmy tabelĊ w przestrzeni tabel baza,
aby po zakoĔczeniu przeniesienia móc zaprezentowaü poprawnoĞü operacji.
SQL> CREATE TABLE t(k NUMBER) TABLESPACE baza;
SQL> INSERT INTO t (k) VALUES (1);
SQL> COMMIT;
PoniĪsze zapytanie pokazuje, Īe istnieją dwa pliki danych przestrzeni baza.
SQL> SELECT file_name, status
FROM dba_data_files
WHERE tablespace_name = 'BAZA';
FILE_NAME
C:\ORACLEXE\ORADATA\XE\BAZA_1_LIVE.DBF
C:\ORACLEXE\ORADATA\XE\BAZA_2_LIVE.DBF
Przeáączmy przestrzeĔ baza w tryb tylko do odczytu.
SQL> ALTER TABLESPACE baza READ ONLY;
SQL> SELECT tablespace_name, status
FROM dba_tablespaces
WHERE tablespace_name = 'BAZA';
TABLESPACE_NAME
BAZA
STATUS
READ ONLY
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
STATUS
AVAILABLE
AVAILABLE
8. STRUKTURA PRZECHOWYWANIA
- 79 -
Dalej wykorzystamy narzĊdzie SQL*Plus, aby zatrzymaü, a nastĊpnie wystartowaü bazĊ w trybie
RESTRICT
(z bazą mogą áączyü siĊ tylko uĪytkownicy posiadający uprawnienie RESTRICTED
SESSION).
SQL> CONNECT system@xe AS SYSDBA
Hasáo:
Poáączony.
SQL> SHUTDOWN
Baza danych zamkniĊta.
Baza danych zdemontowana.
Instancja ORACLE zamkniĊta.
SQL> STARTUP RESTRICT
Instancja ORACLE wystartowaáa.
Baza danych zamontowana.
Baza danych otwarta.
Przeáączamy przestrzeĔ w tryb OFFLINE.
SQL> ALTER TABLESPACE baza OFFLINE;
Instrukcja przetworzona.
Kopiujemy plik przestrzeni tabel do katalogu C:\baza\ oraz wykonujemy poniĪsze polecenie.
SQL> ALTER TABLESPACE baza
RENAME DATAFILE
'c:\oraclexe\oradata\xe\baza_1_live.dbf',
'c:\oraclexe\oradata\xe\baza_2_live.dbf'
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 80 -
TO
'c:\baza\baza_1_live.dbf',
'c:\baza\baza_2_live.dbf';
Instrukcja przetworzona.
Przeáączamy przestrzeĔ w tryb ONLINE i ponownie restartujemy bazĊ.
SQL> ALTER TABLESPACE baza ONLINE;
Instrukcja przetworzona.
SQL> SHUTDOWN
Baza danych zamkniĊta.
Baza danych zdemontowana.
Instancja ORACLE zamkniĊta.
SQL> STARTUP
Instancja ORACLE wystartowaáa.
Baza danych zamontowana.
Baza danych otwarta.
PoniĪsze zapytanie pokazuje, Īe pliki zostaáy przeniesione i obiekty przestrzeni są dostĊpne.
SQL> SELECT file_name, status
FROM dba_data_files
WHERE tablespace_name = 'BAZA';
FILE_NAME
C:\BAZA\BAZA_1_LIVE.DBF
C:\BAZA\BAZA_2_LIVE.DBF
STATUS
AVAILABLE
AVAILABLE
SQL> SELECT * FROM t;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
- 81 -
§ 8.6. Zarządzanie przestrzeniami tymczasowymi i automatycznego wycofywania
8.6.1. Zarządzanie przestrzeniami tymczasowymi
DROP TABLESPACE bazatmp;
CREATE TEMPORARY TABLESPACE bazatmp
TEMPFILE 'c:\oraclexe\bazatmp01.dbf' SIZE 5 M
EXTENT MANAGEMENT LOCAL;
ALTER
ALTER
TABLESPACE bazatmp TEMPFILE OFFLINE;
TABLESPACE bazatmp TEMPFILE ONLINE;
ALTER DATABASE
TEMPFILE 'c:\oraclexe\bazatmp01.dbf'
RESIZE 8M;
ALTER USER hr
TEMPORARY TABLESPACE bazatmp;
8.6.2. Zarządzanie przestrzeniami automatycznego wycofywania
DROP TABLESPACE undoxe;
CREATE UNDO TABLESPACE UNDOXE
DATAFILE 'c:\oraclexe\undoxe01.dbf'
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
8. STRUKTURA PRZECHOWYWANIA
SIZE 5M AUTOEXTEND ON
RETENTION GUARANTEE;
Muszą byü zmienione wartoĞci pewnych parametrów.
ALTER SYSTEM SET undo_management='auto' scope=spfile;
ALTER SYSTEM SET rollback_segments='' scope=spfile;
ALTER SYSTEM SET undo_tablespace='undoxe' scope=spfile;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
- 82 -
9. OBIEKTY BAZY DANYCH (POWTÓRZENIE)
- 83 -
9. OBIEKTY BAZY DANYCH (POWTÓRZENIE)
§ 9.1. Tabela
Tabela bazodanowa jest to obiekt, w którym logicznie przechowywane są dane. Polecenie tworzące tabele
wygląda nastĊpująco:
SQL> CREATE TABLE nazwa_tabeli
(atrybut typ (DEFAULT wyraĪenie] [,..])
[PCTFREE liczba]
[PCTUSED liczba]
[INITRANS liczba]
[MAXTRANS liczba]
[TABLESPACE przestrzen_tabel]
[STORAGE (
[INITIAL liczba [K/M]]
[NEXT liczba [K/M]
[PCTINCREAE liczba]
[MINEXTENTS liczba]
[MAXEXTENTS liczba]
)];
gdzie:
PCTFREE liczba
PCTUSED liczba
przestrzen_tabel
INITIAL liczba
-
IloĞü wolnej przestrzeni pozostawionej w blokach.
Procent wypeánienia bloku, poniĪej którego blok traktowany jest za dostĊpny.
Nazwa przestrzeni tabel, w której skáadowane bĊdą dane.
Rozmiar pierwszego rozszerzenia, jakie zostanie przydzielony tabeli.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
9. OBIEKTY BAZY DANYCH
NEXT liczba
PCTINCREASE liczba
MINEXTENTS liczba
MAXEXTENTS liczba
- 84 -
Rozmiar drugiego rozszerzenia.
Procentowy przyrost rozmiaru kaĪdego kolejnego rozszerzenia.
Liczba rozszerzeĔ, jakie zostaną przydzielone w chwili tworzenia.
Maksymalna liczba rozszerzeĔ, z jakich moĪe skáadaü siĊ tabela.
W przypadku braku któregoĞ parametru przyjmowana jest wartoĞü domyĞlna.
Usuwanie tabeli:
SQL> DROP TABLE nazwa_tabeli [CASCADE CONSTRAINTS];
Informacje o istniejących tabelach moĪna znaleĨü w perspektywach:
DBA_TABLES,
ALL_TABLES,
USER_TABLES
§ 9.2. Indeksy
Są to struktury fizyczne tworzone na Īądanie uĪytkownika, sáuĪą one do skrócenia czasu wyszukiwania
rekordów speániających warunki selekcji okreĞlone w zapytaniu.
SQL> CREATE INDEX nazwa_indeksu
ON tabela(atrybut [,…])
[PCTFREE liczba]
[PCTUSED liczba]
[INITRANS liczba]
[MAXTRANS liczba]
[TABLESPACE przestrzen_tabel]
[STORAGE (
[INITIAL liczba [K|M]]
[NEXT liczba [K|M]]
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
9. OBIEKTY BAZY DANYCH
- 85 -
[PCTINCREAE liczba]
[MINEXTENTS liczba]
[MAXEXTENTS liczba]
)];
gdzie:
Usuwanie indeksów:
SQL> DROP INDEX nazwa_indeksu;
Informacje o istniejących indeksach moĪna znaleĨü w perspektywach:
DBA_INDEXES,
ALL_INDEXES,
USER_INDEXES,
DBA_IND_COLUMNS,
ALL_IND_COLUMNS
USER_IND_COLUMNS
§ 9.3. Perspektywy
Struktury ograniczające zakres dostĊpnych danych do atrybutów krotek okreĞlonych w definicji; są
definiowane na bazie, co najmniej jednej relacji lub innej perspektywy; jest pamiĊtana wyáącznie w postaci
definicji.
Perspektywy stosowane są w celu:
x Ograniczenia dostĊpu do tabel bazy danych.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
9. OBIEKTY BAZY DANYCH
- 86 -
x Uproszczenia zapytaĔ w stosunku do zapytaĔ kierowanych bezpoĞrednio do tabel.
x ….
SQL> CREATE [OR REPLACE] VIEW nazwa_perspektywy
AS SELECT …
[WITH CHECK OPTION];
Klauzula WITH CHECK OPTION powoduje, Īe w trakcie wstawiania i modyfikacji danych za pomocą
perspektywy sprawdzane są warunki naáoĪone na nią i nie ma moĪliwoĞci wstawienia niepasujących danych.
Usuwanie perspektyw:
SQL> DROP VIEW nazwa_perspektywy;
§ 9.4. Synonimy
Synonimy są to obiekty pozwalające zastąpiü nazwy obiektów bazy danych innymi nazwami.
SQL> CREATE [PUBLIC] SYNONIM nazwa FOR obiekt;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 87 -
10. ZARZĄDZANIE BEZPIECZEēSTWEM
Zapewnienie bezpieczeĔstwa systemu jest jednym z najwaĪniejszych zadaĔ stawianych przed
administratorem bazy danych.
§ 10.1. Autoryzacja przez plik haseá
UĪytkownicy w Oracle standardowo autoryzowani są przez bazĊ danych. W pewnych sytuacjach moĪna
skorzystaü z autoryzacji przez plik haseá.
Autoryzacja przez plik haseá dostĊpna jest dla uĪytkowników posiadających uprawnienia SYSOPER lub
SYSDBA.
Uprawnienia te dają uĪytkownikowi moĪliwoĞü wykonywania miĊdzy innymi nastĊpujących operacji:
SYSDBA
x Wykonywanie poleceĔ STARTUP i SHUTDOWN.
x Wykonywanie polecenia ALTER DATABASE z klauzulami: OPEN, MOUNT, BACKUP.
x Wykonywanie polecenia CREATE DATABASE.
x Wykonywanie poleceĔ ARCHIVELOG oraz RECOVERY.
x Tworzenie binarnego pliku parametrów poleceniem CREATE SPFILE.
x Zawierają uprawnienie RESTRICTED SESSION.
SYSOPER
x Wykonywanie poleceĔ STARTUP i SHUTDOWN.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 88 -
x Wykonywanie polecenia ALTER DATABASE z klauzulami: OPEN, MOUNT, BACKUP.
x Wykonywanie poleceĔ ARCHIVELOG oraz RECOVERY.
x Tworzenie binarnego pliku parametrów poleceniem CREATE SPFILE.
x Zawierają uprawnienie RESTRICTED SESSION.
Plik haseá znajduje siĊ w katalogu:
...\database\pwd<SID>.ora
Nowy plik haseá moĪna utworzyü programem orapwd z systemowej linii poleceĔ:
c:\orapwd FILE=plik PASSWORD=hasáo ENTRIES= liczba
gdzie:
plik
hasáo
liczba
- Parametr powinien zawieraü peáną ĞcieĪkĊ do nowego pliku haseá wraz z jego nazwą.
- Hasáo, które bĊdzie obowiązywaáo uĪytkownika SYS do autoryzacji poza bazą danych.
- IloĞü wpisów zarezerwowanych dla uĪytkowników z uprawnieniami SYSOPER oraz SYSDBA. Po osiągniĊciu
limitu konieczne jest wygenerowanie nowego pliku.
Uwaga. Przed utworzeniem nowego pliku haseá naleĪy zamknąü bazĊ danych i zatrzymaü usáugĊ, która
uruchamia bazĊ danych w Ğrodowisku Windows.
W celu skorzystania z autoryzacji przez plik haseá naleĪy poáączyü siĊ jako uĪytkownik z klauzulą AS
SYSOPER lub AS SYSDBA, np.
SQL> CONNECT sys AS SYSOPER;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 89 -
Uwaga. Podczas instalacji Oracle w systemie operacyjnym Windows tworzona jest grupa uĪytkowników
ORA_DBA. UĪytkownicy systemu operacyjnego dopisani do tej grupy, którzy posiadają uprawnienie
SYSOPER lub SYSDBA nie są proszeni o podawanie hasáa podczas autoryzacji przez plik haseá.
Uwaga. Informacje, którzy uĪytkownicy posiadają uprawnienia SYSDBA lub SYSOPER moĪna znaleĨü
w perspektywie V_$PWFILE_USERS.
SQL> desc v_$pwfile_users
NAME
NULL?
TYPE
--------- --------- ------------USERNAME
VARCHAR2(30)
SYSDBA
VARCHAR2(5)
SYSOPER
VARCHAR2(5)
SQL> SELECT * FROM v_$pwfile_users;
USERNAME
-----------------------------SYS
SYSTEM
SYSDB
----TRUE
TRUE
SYSOPER
------TRUE
FALSE
§ 10.2. UĪytkownicy
Konta uĪytkowników tworzy siĊ poleceniem CREATE USER.
Skáadnia polecenia CREATE USER:
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 90 -
SQL> CREATE USER nazwa_uĪytkownika IDENTIFIED BY hasáo
[DEFAULT TABLESPACE nazwa_przestrzeni]
[TEMPORARY TABLESPACE nazwa_przestrzeni]
[QUOTA {liczba [K | M] | UNLIMITED} ON nazwa_przestrzeni]...
[PROFILE nazwa_profilu]
[PASSWORD EXPIRE]
[ACCOUNT { LOCK | UNLOCK }]
Do zmiany parametrów uĪytkownika bazy sáuĪy polecenie ALTER USER.
Skáadnia polecenia ALTER USER:
SQL> ALTER USER nazwa_uĪytkownika IDENTIFIED BY hasáo
[DEFAULT TABLESPACE nazwa_przestrzeni]
[TEMPORARY TABLESPACE nazwa_przestrzeni]
[QUOTA {liczba [K | M] | UNLIMITED} ON nazwa_przestrzeni]...
[PROFILE nazwa_profilu]
[PASSWORD EXPIRE]
[ACCOUNT { LOCK | UNLOCK }]
gdzie:
nazwa_uĪytkownika
hasáo
- Nazwa tworzonego (zmienianego) uĪytkownika, skáadająca siĊ z maksymalnie 30 znaków,
których wielkoĞü liter nie jest istotna.
- Hasáo podawane w przypadku uwierzytelniania poprzez system zarządzania bazą danych.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
DEFAULT TABLESPACE
TEMPORARY
TABLESPACE
QUOTA
nazwa_profilu
PASSWORD EXPIRE
ACCOUNT
- 91 -
- Skáada siĊ maksymalnie z 30 znaków, w których wielkoĞü liter nie jest istotna.
Przechowywane w postaci zaszyfrowanej w kolumnie PASSWORD tabeli SYS.USER$, jest
równieĪ udostĊpniane przez kolumnĊ PASSWORD perspektywy DBA_USERS.
- OkreĞla domyĞlną przestrzeĔ tabel, w której bĊdą tworzone obiekty uĪytkownika, jeĪeli nie
wyspecyfikuje on jawnie przestrzeni skáadowania. W przypadku pominiĊcia tego parametru
domyĞlną przestrzenią tabel dla uĪytkownika bĊdzie SYSTEM. Parametr ten nie ogranicza
moĪliwoĞci tworzenia obiektów w innych przestrzeniach tabel.
- OkreĞla tymczasową przestrzeĔ tabel, w której powstają segmenty tymczasowe
uĪytkownika wykorzystywane podczas operacji sortowania duĪej iloĞci danych.
- Pozwala okreĞliü limit miejsca dostĊpnego dla uĪytkownika w podanej przestrzeni tabel,
wyraĪony w bajtach (domyĞlnie), kilobajtach K, megabajtach M. UĪycie sáowa UNLIMITED
powoduje przyznanie nieograniczonego limitu.
- Przypisuje uĪytkownikowi profil. PominiĊcie tej klauzuli powoduje przyznanie profilu
DEFALUT.
- Ustawia status konta oznaczający wygaĞniĊcie hasáa.
- Blokuje (LOCK) lub odblokowuje (UNLOCK) konto uĪytkownika (zmienia status konta).
Uwagi.
x UĪytkownik, który tworzy uĪytkowników musi posiadaü uprawnienie systemowe CREATE USER.
x
Do zmiany uĪytkowników wymagane jest posiadanie uprawnienia ALTER USER.
x
UĪytkownik nieposiadający przyznanego uprawnienia ALTER USER moĪe jednak zmieniü swoje
hasáo poleceniem ALTER USER.
ALTER USER hr IDENTIFIED BY hr;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
x
- 92 -
W poleceniu CREATE USER parametry DEFAULT TABLESPACE, TEMPORARY TABLESPACE
są opcjonalne, jednak zaleca siĊ ich uĪywaü i przypisywaü inne przestrzenie tabel niĪ domyĞlna
SYSTEM.
x
W momencie tworzenia uĪytkownika tworzony jest jednoczeĞnie schemat uĪytkownika o tej samej
nazwie.
x Schemat to nazwany zestaw obiektów takich jak: tabele, indeksy, ograniczenia, wyzwalacze,
perspektywy,
pakiety,
procedury,
funkcje,
sekwencje.
Schemat
jest
ĞciĞle
związany
z uĪytkownikiem, dlatego czĊsto siĊ go z nim utoĪsamia.
x Usuwanie uĪytkowników wykonuje siĊ poleceniem DROP USER, do jego wykonywania wymagane
jest uprawnienie systemowe DROP USER.
Skáadnia polecenia DROP USER:
SQL> DROP USER nazwa_uĪytkownika [CASCADE];
gdzie:
nazwa_uĪytkownika - Nazwa usuwanego uĪytkownika
CASCADE
- UĪycie tej opcji powoduje usuniĊcie wszystkich obiektów uĪytkownika przed usuniĊciem jego
samego.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 93 -
§ 10.3. Przykáady
Przykáad 10.3.1. PoniĪsze polecenie tworzy uĪytkownika kowalski_jan z hasáem q1s#k45, który
bĊdzie miaá przypisany domyĞlną przestrzeĔ tabel users oraz tymczasową temp. UĪytkownik ten bĊdzie
mógá tworzyü obiekty (po przyznaniu odpowiednich uprawnieĔ systemowych) w przestrzeniach users
i indx, iloĞü zajĊtej przez niego przestrzeni nie moĪe przekroczyü 1 MB, w kaĪdej z nich.
SQL> CREATE USER kowalski_jan
IDENTIFIED BY q1s#k45
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 1M ON users
QUOTA 1M ON indx;
JeĪeli w schemacie kowalski_jan nie istnieją Īadne obiekty, to poleceniem
SQL> DROP USER kowalski_jan;
UĪytkownik zostanie usuniĊty, w przeciwnym razie zostanie zgáoszony báąd:
ORA-01922: potrzebna specyfikacja CASCADE, aby usunąü 'KOWALSKI_JAN'.
Przykáad 10.3.2. Przykáad ten pokazuje jak moĪna poáączyü siĊ jako dowolny uĪytkownik nie znając
jego hasáa. Aby tego dokonaü trzeba posiadaü uprawnienie systemowe ALTER USER oraz prawo
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 94 -
odczytywania perspektywy DBA_USERS. ZaáóĪmy, Īe chcemy poáączyü siĊ jako uĪytkownik u2.
Korzystając z perspektywy DBA_USERS sprawdzamy zakodowane hasáo uĪytkownika.
SQL> SELECT password
FROM dba_users
WHERE username = 'U2';
PASSWORD
E9F77666F376A74B
Zmieniamy hasáo uĪytkownika u2 i áączymy siĊ jako u2 z nowym hasáem.
SQL> ALTER USER u2 IDENTIFIED BY nowe_hasáo;
UĪytkownik zostaá zmieniony.
SQL> CONNECT u2/nowe_hasáo;
Poáączony.
A teraz korzystając z nieudokumentowanej opcji IDENTIFIED BY VALUES przywracamy poprzednie
hasáo uĪytkownika.
SQL> ALTER USER u2 IDENTIFIED BY VALUES 'E9F77666F376A74B';
Perspektywa DBA_USERS pokazuje to samo zakodowane hasáo, a uĪytkownik moĪe siĊ áączyü przy
uĪyciu swojego starego hasáa.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 95 -
SQL> SELECT password
FROM dba_users
WHERE username = 'U2';
PASSWORD
E9F77666F376A74B
SQL> CONNECT u2/stare_hasáo
Poáączony.
§ 10.4. ZakoĔczenie sesji uĪytkownika
ZakoĔczenia sesji uĪytkownika podáączonego do bazy danych:
x
UniemoĪliwia uĪytkownikowi wykonanie dalszych poleceĔ w bazie.
x
Zwalnia zablokowane zasoby.
x
WyĞwietli uĪytkownikowi komunikat.
x
Wymaga uprawnienia ALTER SYSTEM.
SesjĊ uĪytkownika naleĪy zakoĔczyü gdy:
x
UĪytkownik przetrzymuje zasoby pilnie potrzebne innemu uĪytkownikowi.
x
DBA musi zamknąü bazĊ danych.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 96 -
SesjĊ uĪytkownika koĔczy siĊ wydając polecenie
SQL> ALTER SYSTEM KILL SESSION ’sid, serial#’;
gdzie:
sid
- okreĞla nr sesji uĪytkownika (SESSION ID)
serial# - okreĞla nr seryjny uĪytkownika
Polecenie ALTER SYSTEM KILL SESSION
x Wycofuje aktualną transakcjĊ uĪytkownika.
x Zwalnia wszystkie aktualnie posiadane przez uĪytkownika blokady na tabelach i wierszach.
x Zwalnia wszystkie zasoby zarezerwowane dla uĪytkownika.
JeĞli sesja uĪytkownika oczekuje na zakoĔczenie transakcji, Serwer Oracle czeka, aĪ dziaáania to
zakoĔczy siĊ.
Nr identyfikacyjny sesji i nr seryjny sesji uĪytkownika moĪe odszukaü w perspektywie V$SESSION.
Przykáad 10.4.1. Wykonanie kroków potrzebnych do zakoĔczenia sesji uĪytkownika hr.
SQL> SELECT sid, serial#, username FROM v$session
WHERE username=’HR’;
SID
8
SERIAL#
103
USERNAME
HR
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 97 -
SQL> ALTER SYSTEM KILL SESSION ’8,103’;
§ 10.5. Profile
Profile są nazwanymi zbiorami limitów, dostarczającymi mechanizmu pozwalającego:
x Ograniczyü przydzielone zasoby systemu (np. liczba jednoczesnych sesji uĪytkownika).
x Prowadziü pewną politykĊ zarządzania hasáami.
Aby kontrola limitów zdefiniowanych przez profile byá dokonywana, wymagane jest wáączenie jej
poleceniem
SQL> ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;
lub ustawienie wartoĞci parametru inicjalizacji (w pliku init<SID>.ora)
RESOURCE_LIMIT = TRUE
co zapewnia jej automatyczne wáączenie równieĪ przy kolejnym uruchomieniu bazy.
Do tworzenia profili sáuĪy polecenie CREATE PROFILE. Aby je wykonywaü wymagane jest posiadanie
uprawnienia systemowego CREATE PROFILE.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 98 -
Skáadnia polecenia CREATE PROFILE:
CREATE PROFILE profile LIMIT
[SESSIONS_PER_USER
{liczba | UNLIMITED | DEFAULT}]
[CPU_PER_SESSION
{liczba | UNLIMITED | DEFAULT}]
[CPU_PER_CALL
{liczba | UNLIMITED | DEFAULT}]
[CONNECT_TIME
{liczba | UNLIMITED | DEFAULT}]
[IDLE_TIME
{liczba | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_SESSION {liczba | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_CALL
{liczba | UNLIMITED | DEFAULT}]
[COMPOSITE_LIMIT
{liczba | UNLIMITED | DEFAULT}]
[PRIVATE_SGA
{liczba [K|M]| UNLIMITED | DEFAULT}}]
[FAILED_LOGIN_ATTEMPTS
{liczba | UNLIMITED | DEFAULT}]
[PASSWORD_LIFE_TIME
{liczba | UNLIMITED | DEFAULT}]
[{PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX}
{ liczba | UNLIMITED | DEFAULT}]
[PASSWORD_LOCK_TIME
{ liczba | UNLIMITED | DEFAULT}]
[PASSWORD_GRACE_TIME
{ liczba | UNLIMITED | DEFAULT}]
[PASSWORD_VERIFY_FUNCTION
{function | NULL | DEFAULT}];
Profile moĪna zmieniaü poleceniem ALTER PROFILE wymagającego uprawnienia systemowego
ALTER PROFILE.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 99 -
Skáadnia polecenia ALTER PROFILE:
ALTER PROFILE profile LIMIT
[SESSIONS_PER_USER
{liczba | UNLIMITED | DEFAULT}]
[CPU_PER_SESSION
{liczba | UNLIMITED | DEFAULT}]
[CPU_PER_CALL
{liczba | UNLIMITED | DEFAULT}]
[CONNECT_TIME
{liczba | UNLIMITED | DEFAULT}]
[IDLE_TIME
{liczba | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_SESSION {liczba | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_CALL
{liczba | UNLIMITED | DEFAULT}]
[COMPOSITE_LIMIT
{liczba | UNLIMITED | DEFAULT}]
[PRIVATE_SGA
{liczba [K|M]| UNLIMITED | DEFAULT}}]
[FAILED_LOGIN_ATTEMPTS
{liczba | UNLIMITED | DEFAULT}]
[PASSWORD_LIFE_TIME
{liczba | UNLIMITED | DEFAULT}]
[{PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX}
{ liczba | UNLIMITED | DEFAULT}]
[PASSWORD_LOCK_TIME
{ liczba | UNLIMITED | DEFAULT}]
[PASSWORD_GRACE_TIME
{ liczba | UNLIMITED | DEFAULT}]
[PASSWORD_VERIFY_FUNCTION
{function | NULL | DEFAULT}];
gdzie:
profile
SESSIONS_PER_USER
CPU_PER_SESSION
CPU_PER_CALL
CONNECT_TIME
-Nazwa tworzonego / zmienianego profilu.
-Ogranicza liczbĊ równoczeĞnie otwartych sesji uĪytkownika.
-Ogranicza czas procesora dla sesji, podany w setnych czĊĞciach sekundy.
-Ogranicza czas procesora dla wywoáania (parse, execute, fetch), podany w setnych
czĊĞciach sekundy.
-Ogranicza czas trwania sesji, podany w minutach.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 100 -
-Ogranicza okres ciągáej bezczynnoĞci podczas sesji, podany w minutach. Dáugotrwaáe
operacje (np. zapytania) nie są brane pod uwagĊ przy ustalaniu czasu bezczynnoĞci,
nawet, jeĞli aplikacja nie wykonuje Īadnych operacji.
LOGICAL_READS_PER_SESSION-Ogranicza liczbĊ odczytanych bloków danych w sesji. Pod uwagĊ brane są bloki
odczytane, z dysku jak i z pamiĊci operacyjnej.
LOGICAL_READS_PER_CALL
-Ogranicza liczbĊ odczytanych bloków (z dysku i z pamiĊci) podczas jednego
wywoáania polecenia SQL.
COMPOSITE_LIMIT
-Ogranicza wykorzystanie caákowitego kosztu zasobów dla sesji. System oblicza
caákowity koszt zasobów jako sumĊ waĪoną wartoĞci:
x CPU_PER_SESSION,
x CONNECT_TIME,
x LOGICAL_READS_PER_SESSION,
x PRIVATE_SGA,
którą moĪna okreĞliü poleceniem ALTER RESOURCE COST.
PRIVATE_SGA
-Ogranicza iloĞü prywatnej przestrzeni sesji przydzielonej w SHARED POOL obszaru
SGA. WielkoĞü podana w bajtach, kilobajtach (K), lub megabajtach (M). Ograniczenie
ma sens jedynie w przypadku serwera wielowątkowego.
FAILED_LOGIN_ATTEMPTS
-OkreĞla iloĞü nieudanych prób logowania na konto uĪytkownika, po których nastąpi
zablokowanie konta na czas zaleĪny od wartoĞci PASSWORD_LOCK_TIME.
PASSWORD_LIFETIME
-Ograniczają okres waĪnoĞci hasáa.
PASSWORD_GRACE_TIME
-Po upáyniĊciu PASSWORD_LIFETIME dni od ostatniej zmiany hasáa, przy pierwszym
logowaniu zaczyna byü obliczany okres PASSWORD_GRACE_TIME, po którym hasáo
wygasa. JednoczeĞnie w okresie PASSWORD_GRACE_TIME, uĪytkownik jest
informowany o liczbie dni pozostaáych do wygaĞniĊcia.
PASSWORD_REUSE_TIME
-OkreĞla liczbĊ dni, przez jaką hasáo nie moĪe byü ponownie wykorzystane podczas
zmiany hasáa przez uĪytkownika. JeĪeli wartoĞü PASSWORD_REUSE_TIME ma
wartoĞü liczbową, to wartoĞü PASSWORD_REUSE_MAX musi byü ustalona na
UNLIMITED.
IDLE_TIME
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 101 -
-OkreĞla liczbĊ zmian haseá, po której hasáo moĪe byü ponownie wykorzystane podczas
zmiany hasáa przez uĪytkownika. JeĪeli wartoĞü PASSWORD_REUSE_MAX ma
wartoĞü liczbową, to wartoĞü PASSWORD_REUSE_TIME musi byü ustalona na
UNLIMITED.
PASSWORD_LOCK_TIME
-OkreĞla liczbĊ dni, przez jakie konto bĊdzie zablokowane po okreĞlonej przez
FAILED_LOGIN_ATTEMPTS nieudanych próbach logowania.
PASSWORD_VERIFY_FUNCTION -Nazwa funkcji weryfikacji hasáa. Funkcja ta musi byü umieszczona w schemacie
uĪytkownika SYS i posiadaü definicjĊ nastĊpującej postaci:
FUNCTION nazwa_funkcji
(
nazwa_uĪytkownika IN VARCHAR2,
hasáo
IN VARCHAR2,
poprzednie_hasáo IN VARCHAR2
)
RETURN BOOLEAN;
PASSWORD_REUSE_MAX
Uwaga. Zmiany dokonane poleceniem ALTER PROFILE nie wpáywają na juĪ rozpoczĊte sesje.
Rysunek poniĪej przedstawia znaczenie parametrów:
PASSWORD_LIFETIME i PASSWORD_GRACE_TIME.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 102 Pierwsze logowanie po upáywie
Zmiana hasáa
Zmiana hasáa
PASSWORD LIFE TIME
PASSWORD LIFE TIME
PASSWORD GRACE TIME EXPIRES
Rysunek 10.5.1. Znaczenie parametrów PASSWORD_LIFETIME i PASSWORD_GRACE_TIME
Do usuwania profili sáuĪy polecenie DROP PROFILE, do wykonywania, którego wymagane jest
posiadanie uprawnienia systemowego DROP PROFILE.
Skáadnia polecenia DROP PROFILE:
SQL> DROP PROFILE nazwa_profilu [CASCADE];
gdzie:
nazwa_profilu - Nazwa usuwanego profilu.
CASCADE
- Pozwala usunąü profil, do którego są przypisani uĪytkownicy. Przed usuniĊciem profilu uĪytkownicy
są przypisywani automatycznie do profilu DEFAULT.
Uwaga. Nie moĪna usunąü profilu DEFAULT.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 103 -
§ 10.6. Przykáady związane z zarządzaniem hasáami z poziomu profili
Przykáad 10.6.1. Utwórzmy 23 wrzeĞnia 2001 (data ta jest oczywiĞcie przypadkowa istotne jest tylko
czas, jaki upáywa pomiĊdzy kolejnymi operacjami) profil p1 z parametrem PASSWORD_LIFE_TIME=1,
a nastĊpnie przypiszmy uĪytkownika u1 do utworzonego profilu.
SQL> CREATE PROFILE p1 LIMIT
PASSWORD_LIFE_TIME 1;
SQL> ALTER USER u1 PROFILE p1;
Dnia 25 wrzeĞnia 2001 uĪytkownik loguje siĊ do bazy.
SQL> CONNECT u1/u1
BàĄD:
ORA-XXXXX: hasáo wygaĞnie w ciągu 24855 dni
Poáączony.
Jak widaü uĪytkownik otrzymuje komunikat, Īe hasáo wygaĞnie w ciągu 24855 dni, poniewaĪ parametr
PASSWORD_GRACE_TIME nie zostaá wyspecyfikowany i ma wartoĞü UNLIMITED. Ustawmy, zatem
wartoĞü tego parametru dla profilu p1 na 1.
SQL> ALTER PROFILE p1 LIMIT
PASSWORD_LIFE_TIME 1
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 104 -
PASSWORD_GRACE_TIME 1;
Poáączeniu 26 wrzeĞnia 2001 towarzyszy komunikat wskazujący, Īe zmiana profilu nie zostaáa wziĊta
pod uwagĊ.
SQL> CONNECT u1/u1
BàĄD:
ORA-XXXXX: hasáo wygaĞnie w ciągu 24854 dni
Poáączony.
OczywiĞcie po zmianie hasáa przy, ponownym poáączeniu, komunikat o wygaĞniĊciu hasáa przestaje siĊ
pojawiaü.
SQL> ALTER USER u1 IDENTIFIED BY u1;
UĪytkownik zostaá zmieniony.
SQL> CONNECT u1/u1
Poáączony.
28 wrzeĞnia, 2001 czyli 2 dni od zmiany hasáa i ostatniego poáączenia uĪytkownik áączy siĊ z bazą i jest
informowany o wygaĞniĊciu hasáa w ciągu 1 dnia.
SQL> CONNECT u1/u1
BàĄD:
ORA-28002: hasáo wygaĞnie w ciągu 1 dni
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 105 -
Po kolejnych 2 dniach, 30 wrzeĞnia, uĪytkownik u1 próbuje siĊ poáączyü z bazą i jest zmuszony do
zmiany hasáa.
SQL> CONNECT u1/u1
BàĄD:
ORA-28001: hasáo wygasáo
Zmiana hasáa dla u1
Stare hasáo: ....
Przykáad 10.6.2. 9 wrzeĞnia 2001 tworzymy uĪytkownika u3 nie przypisując mu jawnie profilu, czyli
przypisując mu profil DEFAULT, którego wszystkie wartoĞci są domyĞlne, co pokazuje poniĪsze zapytanie.
SQL> SELECT * FROM dba_profiles WHERE profile = 'DEFAULT'
PROFILE
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
DEFAULT
RESOURCE_NAME
COMPOSITE_LIMIT
SESSIONS_PER_USER
CPU_PER_SESSION
CPU_PER_CALL
LOGICAL_READS_PER_SESSION
LOGICAL_READS_PER_CALL
IDLE_TIME
CONNECT_TIME
PRIVATE_SGA
FAILED_LOGIN_ATTEMPTS
PASSWORD_LIFE_TIME
PASSWORD_REUSE_TIME
RESOURCE_TYPE
KERNEL
KERNEL
KERNEL
KERNEL
KERNEL
KERNEL
KERNEL
KERNEL
KERNEL
PASSWORD
PASSWORD
PASSWORD
LIMIT
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
DEFAULT
DEFAULT
DEFAULT
DEFAULT
- 106 -
PASSWORD_REUSE_MAX
PASSWORD_VERIFY_FUNCTION
PASSWORD_LOCK_TIME
PASSWORD_GRACE_TIME
PASSWORD
PASSWORD
PASSWORD
PASSWORD
UNLIMITED
UNLIMITED
UNLIMITED
UNLIMITED
Data wygaĞniĊcia konta u3 ma wartoĞü NULL.
SQL> SELECT username, expiry_date, profile
FROM dba_users
WHERE username = 'U3';
USERNAME
U3
EXPIRY_DATE
PROFILE
DEFAULT
Utwórzmy profil o nazwie p2, a nastĊpnie przypiszmy go uĪytkownikowi u3.
SQL> CREATE PROFILE p2 LIMIT
PASSWORD_LIFE_TIME 10
PASSWORD_GRACE_TIME 1000;
SQL> ALTER USER u3 PROFILE p2;
Po tych operacjach, perspektywa DBA_USERS, pokazuje, Īe data wygaĞniĊcia konta u3 zostaáa
zmieniona.
SQL> SELECT username, expiry_date, profile FROM dba_users
WHERE username = 'U3';
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 107 USERNAME
U3
EXPIRY_DATE
2001-09-19
PROFILE
P2
SQL> SELECT SYSDATE + 10 FROM DUAL;
SYSDATE+10
2001-09-19 22:39:02
PoniĪej zwiĊkszamy, a nastĊpnie zmniejszamy wartoĞü parametru PASSWORD_LIFE_TIME i widzimy,
Īe wartoĞü kolumny EXPIRY_DATE równieĪ ulegáa zmianom.
SQL> ALTER PROFILE p2 LIMIT
PASSWORD_LIFE_TIME 1000
PASSWORD_GRACE_TIME 1000;
SQL> SELECT username, expiry_date, profile
FROM dba_users
WHERE username = 'U3';
USERNAME
U3
EXPIRY_DATE
2004-06-05
PROFILE
P2
SQL> ALTER PROFILE p2 LIMIT
PASSWORD_LIFE_TIME 10
PASSWORD_GRACE_TIME 1000;
SQL> SELECT username, expiry_date, profile
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 108 -
FROM dba_users
WHERE username = 'U3';
USERNAME
U3
EXPIRY_DATE
2001-09-19
PROFILE
P2
Dopiero 17 listopada 2001 nastĊpuje pierwsze logowanie od czasu przypisania profilu i jednoczeĞnie, (co
istotne) jest to pierwsze logowanie od czasu upáyniĊcia okresu PASSWORD_LIFE_TIME.
SQL> CONNECT u3/u3
BàĄD:
ORA-XXXXX: hasáo wygaĞnie w ciągu 1000 dni
Poáączony.
SQL> SELECT username, expiry_date, profile
FROM dba_users
WHERE username = 'U3';
USERNAME
U3
EXPIRY_DATE
2004-08-13 23:43:56
PROFILE
P2
PoniewaĪ
SYSDATE + PASSWORD_GRACE_TIME = SYSDATE + 1000 = 2004-08-13
to data EXPIRY_DATE podczas logowania zostaje ustawiona na 2004-08-13.
SQL> SELECT SYSDATE + 1000 FROM DUAL;
SYSDATE+1000
2004-08-13 23:47:11
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 109 -
PoniĪsze instrukcje pokazują, Īe zmiana profilu nie wpáywa juĪ na wartoĞü EXPIRY_DATE.
SQL> ALTER PROFILE p2 LIMIT
PASSWORD_LIFE_TIME 1000
PASSWORD_GRACE_TIME 1000;
SQL> SELECT username, expiry_date, profile
FROM dba_users
WHERE username = 'U3';
USERNAME
U3
EXPIRY_DATE
2004-08-13 23:43:56
PROFILE
P2
Spróbujmy usunąü profil p3.
SQL> DROP PROFILE P3;
BàĄD w linii 1:
ORA-02382: profil P3 ma przypisanego uĪytkownika, nie moĪna go usunąü bez CASCADE
PoniĪszym zapytaniem moĪemy sprawdziü, jacy uĪytkownicy mają przypisany profil p3.
SQL> SELECT username
FROM dba_users
WHERE profile = 'P3';
USERNAME
KOWALSKI_JAN
SQL> DROP PROFILE p3 CASCADE;
Profil zostaá usuniĊty.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 110 -
A teraz sprawdĨmy, do jakiego profilu jest przypisany uĪytkownik, który byá przypisany do profilu
usuniĊtego z opcją CASCADE.
SQL> SELECT username, profile
FROM dba_users
WHERE username = 'KOWALSKI_JAN';
USERNAME
KOWALSKI_JAN
PROFILE
DEFAULT
Przykáad 10.6.3. CzĊsto, tworząc nowe konto dla uĪytkownika chcemy, wymusiü zmianĊ hasáa przy
pierwszym logowaniu. MoĪemy to zrobiü uĪywając parametru PASSWORD EXPIRE, co pokazują poniĪsze
instrukcje.
SQL> CREATE USER kowalski_jan IDENTIFIED BY q1s#k45
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 1M ON users
QUOTA 1M ON indx
PASSWORD EXPIRE;
SQL> GRANT create session TO kowalski_jan;
Aplikacje powinny Īądaü zmiany hasáa przy pierwszym logowaniu.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 111 -
§ 10.7. Weryfikacja hasáa
System ORACLE dostarcza bardzo elastyczny system weryfikacji trudnoĞci hasáa. MoĪliwoĞci są
wáaĞciwie nieograniczone. MoĪna np. sprawdziü czy uĪytkownicy nie uĪywają w swoich hasáach danych
ogólnie dostĊpnych jak numery telefonu itp.
Przykáadowa funkcja weryfikacji hasáa (dla zainteresowanych).
CREATE OR REPLACE FUNCTION czy_haslo_trudne(
username
IN
VARCHAR2,
password
IN
VARCHAR2,
old_password
IN
VARCHAR2 ) RETURN BOOLEAN
IS
v_zglaszany_dbms_error
CONSTANT INTEGER NOT
v_cyfry
CONSTANT VARCHAR2(10)
v_litery
CONSTANT VARCHAR2(35)
:= 'qwertyuiopasdfghjklzxcvbnmĊóąĞáĪĨüĔ';
v_symbole
CONSTANT VARCHAR2(31)
v_min_dlugosc
CONSTANT PLS_INTEGER
v_wymaga_cyfr
CONSTANT BOOLEAN
v_wymaga_liter
CONSTANT BOOLEAN
v_wymaga_symboli
CONSTANT BOOLEAN
v_rozne_od_nazwy
CONSTANT BOOLEAN
v_nie_zawiera_starego
CONSTANT BOOLEAN
v_nie_jest_czescia_starego CONSTANT BOOLEAN
v_nie_wystepuje_w_slowniku CONSTANT BOOLEAN
NULL := -20997;
NOT NULL := '0123456789';
NOT NULL
NOT NULL :=
:=
NOT NULL :=
NOT NULL :=
NOT NULL :=
NOT NULL :=
NOT NULL :=
NOT NULL :=
NOT NULL :=
'~`!@#$%^&*()-_=+[{]};:"\|,<.>/?';
5;
TRUE;
TRUE;
TRUE;
TRUE;
TRUE;
TRUE;
TRUE;
BEGIN
IF LENGTH(password) < v_min_dlugosc THEN
raise_application_error( v_zglaszany_dbms_error,
Hasáo musi skáadaü siĊ z co najmniej ' || v_min_dlugosc || ' znaków.');
END IF;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
IF
v_rozne_od_nazwy AND password = username THEN
raise_application_error( v_zglaszany_dbms_error,
'Hasáo jest áatwe do odgadniĊcia (nazwa uĪytkownika i hasáo są identyczne).');
END IF;
IF
v_nie_zawiera_starego AND INSTR(password, old_password) != 0 THEN
raise_application_error( v_zglaszany_dbms_error,
'Nowe hasáo nie moĪe zwieraü poprzedniego hasáa.');
END IF;
IF
v_nie_jest_czescia_starego AND INSTR(old_password, password) != 0 THEN
raise_application_error( v_zglaszany_dbms_error,
'Nowe hasáo nie moĪe byü wycinkiem poprzedniego hasáa.');
END IF;
IF
v_wymaga_cyfr AND LENGTH(password)!=LENGTH(TRANSLATE(password, 'X' || v_cyfry, 'X')) THEN
raise_application_error( v_zglaszany_dbms_error, 'Hasáo musi zawieraü cyfrĊ.');
END IF;
IF v_wymaga_symboli AND LENGTH(password)!=LENGTH(TRANSLATE(password, 'X' || v_symbole, 'X') )
THEN
raise_application_error( v_zglaszany_dbms_error,
'Hasáo musi zawieraü jeden z symboli: ' || v_symbole );
END IF;
IF
v_wymaga_liter
AND LENGTH(NLS_LOWER(password) ) != LENGTH(TRANSLATE(password, 'X' || v_litery, 'X') )
THEN
raise_application_error( v_zglaszany_dbms_error, 'Hasáo musi zawieraü literĊ');
END IF;
IF v_nie_wystepuje_w_slowniku THEN
DECLARE
v_haslo VARCHAR2(30);
BEGIN
SELECT s.haslo
INTO
v_haslo
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
- 112 -
10. ZARZĄDZANIE BEZPIECZEēSTWEM
- 113 -
FROM
sl_hasel s
WHERE s.haslo = NLS_UPPER(password);
raise_application_error(
v_zglaszany_dbms_error,
'Hasáo jest áatwe do odgadniĊcia (znajduje siĊ w sáowniku niedozwolonych haseá).'
);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END IF;
RETURN TRUE;
END czy_haslo_trudne;
/
Przykáadowa funkcja tworzona jest przez skrypt utlpwdmg.sql, który znajduje siĊ w katalogu
...\RDBMS\ADMIN.
Przykáad 10.7.1. Prosta funkcja weryfikacji hasáa.
CREATE OR REPLACE FUNCTION verify_function
(username VARCHAR2,password VARCHAR2, old_password VARCHAR2)
RETURN BOOLEAN
IS
BEGIN
IF LENGTH(password) < 5 THEN
RAISE_APPLICATION_ERROR (-20001,
‘Hasáo musi posiadaü co najmniej 5 znaków’);
END IF;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
10. ZARZĄDZANIE BEZPIECZEēSTWEM
RETURN (TRUE);
END;
/
Modyfikacja profilu.
ALTER PROFILE default LIMIT
PASSWORD_VERIFY_FUNCTION verify_function;
Przykáad 10.7.2. Modyfikacja uĪytkownika (o ile miaá inny profil).
ALTER USER hr PROFILE default ;
Spróbowaü zmieniü hasáo nie speániające warunku z funkcji verify_function.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
- 114 -
11. UPRAWNIENIA
- 115 -
11. UPRAWNIENIA
To, jakie operacje mogą wykonywaü uĪytkownicy jest regulowane poprzez nadane im uprawnienia.
Nowo utworzony uĪytkownik nie posiada Īadnych uprawnieĔ, czyli nawet nie moĪe uzyskaü poáączenia
z bazą (utworzyü sesji).
Rodzaje uprawnieĔ:
x
Uprawnienia systemowe.
x
Uprawnienia obiektowe.
§ 11.1. Przykáadowe uprawnienia systemowe
Uprawnienia i role
GRANT ANY PRIVILEGE
- Pozwala przyznawaü i odbieraü dowolne uprawnienie systemowe (nie istnieje analogiczne
uprawnienie obiektowe, czyli uĪytkownik A nie moĪe przyznaü bezpoĞrednio uprawnieĔ do
obiektów uĪytkownika B, jeĪeli nie posiada do nich uprawnienia obiektowego z opcją
GRANT).
- Pozwala tworzyü rolĊ.
- Pozwala zmieniaü dowolną rolĊ.
- Pozwala zmieniaü dowolną rolĊ.
- Pozwala przyznawaü dowolną rolĊ.
CREATE ROLE
ALTER ANY ROLE
DROP ANY ROLE
GRANT ANY ROLE
UĪytkownicy
CREATE USER
- Pozwala tworzyü uĪytkowników.
ALTER USER
- Pozwala zmieniaü uĪytkowników. UĪytkownik nieposiadający tego uprawnienia moĪe wykonaü
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
- 116 -
polecenie ALTER USER, aby zmieniü swoje hasáo.
DROP USER
- Pozwala usuwaü uĪytkowników.
Profile uĪytkowników
CREATE PROFILE
- Pozwala tworzyü profile uĪytkowników.
ALTER PROFILE
- Pozwala zmieniaü profile uĪytkowników.
DROP PROFILE
- Pozwala usuwaü profile uĪytkowników.
ALTER RESOURCE COST - Pozwala zmieniaü koszty zasobów systemowych dla wszystkich sesji uĪytkowników.
Tabele, indeksy, ograniczenia
CREATE TABLE
- Pozwala tworzyü, usuwaü, zmieniaü tabele i widoki we wáasnym schemacie oraz związane
z nimi indeksy i ograniczenia.
CREATE ANY TABLE
- Pozwala tworzyü tabele w dowolnym schemacie oraz związane z nimi indeksy
i ograniczenia.
ALTER ANY TABLE
- Pozwala zmieniaü tabele i kompilowaü widoki z dowolnego schematu oraz związane z nimi
indeksy i ograniczenia.
BACKUP ANY TABLE
- Pozwala uĪyü narzĊdzi eksportu dla tabel z dowolnego schematu.
DROP ANY TABLE
- Pozwala usuwaü i obcinaü tabele z dowolnego schematu.
LOCK ANY TABLE
- Pozwala blokowaü dowolną tabelĊ lub widok w bazie.
COMMENT ANY TABLE
- Pozwala tworzyü komentarz dla dowolnej tabeli lub widoku w bazie.
SELECT ANY TABLE
- Pozwala zadaü zapytania do dowolnej tabeli, widoku, migawki.
INSERT ANY TABLE
- Pozwala wstawiaü wiersze do dowolnej tabeli lub widoku.
UPDATE ANY TABLE
- Pozwala zmieniaü wiersze w dowolnej tabeli lub widoku.
DELETE ANY TABLE
- Pozwala usuwaü dowolną tabelĊ lub widok.
CREATE ANY INDEX
- Pozwala tworzyü indeks w dowolnym schemacie dla dowolnej tabeli.
ALTER ANY INDEX
- Pozwala zmieniaü dowolny indeks w bazie.
DROP ANY INDEX
- Pozwala usunąü dowolny indeks w bazie.
WYZWALACZE
CREATE TRIGGER
- Pozwala tworzyü, zmieniaü i usuwaü wyzwalacze we wáasnym schemacie.
CREATE ANY TRIGGER - Pozwala tworzyü wyzwalacze w dowolnym schemacie.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
ALTER ANY TRIGGER
DROP ANY TRIGGER
PERSPEKTYWY
CREATE VIEW
CREATE ANY VIEW
DROP ANY VIEW
Migawki
CREATE SNAPSHOT
- 117 - Pozwala zmieniaü wyzwalacze w dowolnym schemacie (wáączaü, wyáączaü, kompilowaü).
- Pozwala usuwaü wyzwalacze znajdujące siĊ w dowolnym schemacie.
- Pozwala tworzyü, zmieniaü i usuwaü widoki we wáasnym schemacie.
- Pozwala tworzyü widoki w dowolnym schemacie. Dodatkowo wymagane jest posiadanie
uprawnieĔ do obiektów wykorzystywanych przez tworzony widok.
- Pozwala usuwaü widoki z kaĪdego schematu.
- Pozwala tworzyü migawki we wáasnym schemacie (wymagane jest równieĪ posiadanie
uprawnienia CREATE TABLE).
CREATE ANY SNAPSHOT - Pozwala tworzyü migawki w dowolny schemacie (dodatkowo wymagane jest uprawnienie
CREATE ANY TABLE).
ALTER SNAPSHOT
- Pozwala zmieniaü migawki wáasnego schematu.
DROP ANY SNAPSHOT
- Pozwala usuwaü migawki ze wszystkich schematów.
Klastry
CREATE CLUSTER
- Pozwala tworzyü, zmieniaü i usuwaü klaster we wáasnym schemacie.
CREATE ANY CLUSTER - Pozwala tworzyü klaster w dowolnym schemacie.
ALTER ANY CLUSTER
- Pozwala zmieniaü dowolny klaster w bazie.
DROP ANY CLUSTER
- Pozwala usuwaü dowolny klaster w bazie.
SEKWENCJE
CREATE SEQUENCE
- Pozwala tworzy, zmieniaü i usuwaü sekwencje we wáasnym schemacie.
CREATE ANY SEQUENCE - Pozwala tworzyü sekwencje w dowolnym schemacie.
ALTER ANY SEQUENCE
- Pozwala zmieniaü sekwencje znajdujące siĊ w dowolnym schemacie.
DROP ANY SEQUENCE
- Pozwala usuwaü sekwencje z dowolnego schematu.
SELECT ANY SEQUENCE - Pozwala korzystaü z sekwencji znajdującej siĊ w dowolnym schemacie.
PROCEDURY, FUNKCJE, PAKIETY
CREATE PROCEDURE
- Pozwala tworzyü, zmieniaü, usuwaü procedury, funkcje, pakiety we wáasnym
schemacie.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
CREATE ANY PROCEDURE
ALTER ANY PROCEDURE
DROP ANY PROCEDURE
EXECUTE ANY PROCEDURE
LINKI BAZODANOWE
CREATE DATABASE LINK
- 118 - Pozwala tworzyü procedury, funkcje i pakiety w dowolnym schemacie (Wymagane jest,
aby uĪytkownik posiadaá równieĪ uprawnienia ALTER ANY TABLE, BACKUP ANY
TABLE, DROP ANY TABLE, SELECT ANY TABLE, INSERT ANY TABLE,
UPDATE ANY TABLE, DELETE ANY TABLE).
- Pozwala kompilowaü dowolną procedurĊ, funkcjĊ, pakiet z dowolnego schematu.
- Pozwala usuwaü dowolną procedurĊ, funkcjĊ, pakiet z dowolnego schematu.
- Pozwala wywoáywaü procedurĊ, funkcjĊ (samodzielną lub znajdującą siĊ w pakiecie) oraz
korzystaü z publicznych zmiennych pakietów.
- Pozwala usuwaü i tworzyü prywatne linki do innych baz wáasnym
schemacie.
- Pozwala tworzyü publiczne linki do innych baz danych.
- Pozwala usuwaü publiczne linki do innych baz danych.
CREATE PUBLIC DATABASE LINK
DROP PUBLIC DATABASE LINK
SYNONIMY
CREATE PUBLIC SYNONYM - Pozwala tworzyü publiczne synonimy do obiektów.
DROP PUBLIC SYNONYM
- Pozwala usuwaü publiczne synonimy.
CREATE SYNONYM
- Pozwala tworzyü i usuwaü synonimy prywatne we wáasnym schemacie.
CREATE ANY SYNONYM
- Pozwala tworzyü synonimy prywatne w dowolnym schemacie.
DROP ANY SYNONYM
- Pozwala usuwaü synonimy prywatne z dowolnego schematu.
BIBLIOTEKI ZEWNĉTRZNE
CREATE LIBRARY
- Pozwala utworzyü bibliotekĊ (doáączyü zewnĊtrzny program, bibliotekĊ systemu
operacyjnego) we wáasnym schemacie.
CREATE ANY LIBRARY
- Pozwala utworzyü bibliotekĊ (doáączyü zewnĊtrzny program, bibliotekĊ systemu
operacyjnego) w dowolnym schemacie.
DROP LIBRARY
- Pozwala usunąü bibliotekĊ z wáasnego schematu.
DROP ANY LIBRARY
- Pozwala usunąü bibliotekĊ z dowolnego schematu.
SESJE
CREATE SESSION
- Pozwala utworzyü sesjĊ, czyli poáączyü siĊ z bazą danych.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
ALTER SESSION
RESTRICTED SESSION
BAZA DANYCH
ALTER DATABASE
PRZESTRZENIE TABEL
CREATE TABLESPACE
ALTER TABLESPACE
MANAGE TABLESPACE
DROP TABLESPACE
UNLIMITED TABLESPACE
- 119 - Pozwala wywoáywaü polecenie ALTER SESSION.
- Pozwala poáączyü siĊ z bazą, gdy zostaáa ona uruchomiona przy uĪyciu polecenia
STARTUP RESTRICT.
- Pozwala zmieniaü cechy bazy danych, dodawaü pliki z poziomu bazy, bez wzglĊdu na
posiadane uprawnienia w systemie operacyjnym.
- Pozwala tworzyü przestrzenie tabel.
- Pozwala zmieniaü przestrzenie tabel.
- Pozwala przeáączaü przestrzenie tabel w tryb ONLINE/OFLINE oraz wykonywaü backup
przestrzeni tabel.
- Pozwala usuwaü przestrzenie tabel.
- Pozwala na zapisywanie we wszystkich przestrzeniach tabel. Uprawnienie to jest
nadrzĊdne w stosunku do „quota” naáoĪonych na uĪytkowników i moĪe byü przyznawane
tylko bezpoĞrednio uĪytkownikowi (bez poĞrednictwa roli).
SEGMENTY WYCOFANIA
CREATE ROLLBACK SEGMENT - Pozwala tworzyü segmenty wycofania.
ALTER ROLLBACK SEGMENT
- Pozwala zmieniaü segmenty wycofania.
DROP ROLLBACK SEGMENT
- Pozwala usuwaü segmenty wycofania.
SYSTEM
ALTER SYSTEM
- Pozwala wywoáywaü polecenie ALTER SYSTEM.
ANALIZOWANIE
ANALYZE ANY
- Pozwala analizowaü (wykonaü polecenia ANALYZE) dowolną tabelĊ, indeks lub klaster.
ĝLEDZENIE
AUDIT ANY
- Pozwala wáączaü i wyáączaü Ğledzenie dowolnego obiektu.
AUDIT SYSTEM
- Pozwala wáączaü i wyáączaü Ğledzenie poleceĔ i uprawnieĔ.
TRANSAKCJE
FORCE TRANSACTION
- Pozwala na zatwierdzenie lub wycofanie wáasnych zawieszonych
transakcji
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
FORCE ANY TRANSACTION
- 120 rozproszonych w lokalnej bazie danych.
- Pozwala na zatwierdzenie lub wycofanie dowolnych zawieszonych transakcji
rozproszonych w lokalnej bazie danych
§ 11.2. Przykáady
Przykáad 11.2.1. Utwórzmy uĪytkownika u5 z hasáem i z uprawnieniami create
session,
create table oraz z prawem do tworzenia obiektów w przestrzeniach users i system.
SQL> CREATE USER u5 IDENTIFIED BY u5
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 1m ON users
QUOTA 1m ON system;
SQL> GRANT create session, create table TO u5;
Jako nowo utworzony uĪytkownik utwórzmy tabelĊ, indeks, zmieĔmy tabelĊ a nastĊpnie usuĔmy
utworzone obiekty.
SQL> CREATE TABLE t1(k1 NUMBER);
Tabela zostaáa utworzona.
SQL> CREATE INDEX t1_k1_i ON t1(k1) TABLESPACE users;
Indeks zostaá utworzony.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
- 121 -
SQL> DROP TABLE t1;
Tabela zostaáa usuniĊta.
Jak widaü uprawnienie create table pozwala nie tylko tworzyü tabele, ale równieĪ je usuwaü oraz
tworzyü i usuwaü indeksy i ograniczenia.
Przykáad 11.2.2. Utwórzmy uĪytkownika u_baza w bazie danych poleceniem
SQL> CREATE USER u_baza IDENTIFIED BY u_baza
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
Spróbujmy teraz poáączyü siĊ z bazą jako uĪytkownik u_baza.
SQL> CONNECT u_baza/u_baza
BàĄD:
ORA-XXXX: uĪytkownik u_baza nie ma uprawnienia CREATE SESSION; odmowa rejestracji
Próba nie powiodáa siĊ, poniewaĪ nie przyznaliĞmy uĪytkownikowi uprawnienia systemowego create
session.
PoniewaĪ uĪytkownik u_baza ma byü uĪytkownikiem, który bĊdzie wáaĞcicielem aplikacji, zatem poza
uprawnieniem pozwalającym na poáączenie z systemem, musi mieü uprawnienia pozwalające mu na
tworzenie obiektów w jego schemacie. Przyznajmy mu uprawnienia do tworzenia tabel, perspektyw,
wyzwalaczy, procedur, funkcji, pakietów, sekwencji.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
- 122 -
SQL> GRANT
create session,
create table,
create view,
create trigger,
create procedure,
create sequence
TO u_baza;
Spróbujmy poáączyü siĊ jako uĪytkownik u_baza, a nastĊpnie utworzyü prostą tabelĊ.
SQL> CONNECT u_baza/u_baza
Poáączony.
SQL> CREATE TABLE t1 (k1 NUMBER);
BàĄD w linii 1:
ORA-XXXXX: brak uprawnieĔ na przestrzeni tabel 'USERS'
Jak widaü próba poáączenia zakoĔczyáa siĊ sukcesem, natomiast nie udaáo siĊ utworzyü tabeli
w domyĞlnej przestrzeni tabel. UĪytkownikowi u_baza powinniĞmy nadaü uprawnienia do przestrzeni
users (baza_i przestrzeĔ tabel przeznaczona dla indeksów).
SQL> ALTER USER u_baza
QUOTA UNLIMITED ON baza
QUOTA UNLIMITED ON baza_i;
UĪytkownik zostaá zmieniony.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
- 123 -
Teraz jako uĪytkownik u_baza moĪemy spróbowaü utworzyü tabelĊ przechowywaną w domyĞlnej
przestrzeni tabel z indeksem w przestrzeni baza_i.
SQL> CREATE TABLE t1
(
id NUMBER(4) PRIMARY KEY USING INDEX TABLESPACE baza_i,
k1 VARCHAR2(100)
);
Tabela zostaáa utworzona.
A teraz spróbujmy utworzyü tabelĊ w przestrzeni tabel SYSTEM.
SQL> CREATE TABLE t2(k1 VARCHAR2(100)) TABLESPACE system;
BàĄD w linii 1:
ORA-XXXXX: brak uprawnieĔ na przestrzeni tabel 'SYSTEM'
Jak widaü dopóki nie przyznamy uprawnienia do przestrzeni tabel, uĪytkownik nie moĪe tworzyü w niej
obiektów.
§ 11.3. Uprawnienia obiektowe
UĪytkownik nieposiadający uprawnieĔ systemowych typu ANY moĪe wykonywaü operacje na obiekcie
innego schematu tylko wtedy, gdy posiada do tego obiektu odpowiednie uprawnienie obiektowe. To, jakie
uprawnienia moĪna przyznaü do obiektu, jest uzaleĪnione od typu obiektu.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
- 124 Typ obiektu
TABELA
Uprawnienie
obiektowe
SELECT
INSERT
UPDATE
DELETE
ALTER
EXECUTE
INDEX
REFERENCES
x
x
x
x
x
PERSPEKTYWA
SEKWENCJA
x
x
x
x
PROCEDURA
FUNKCJA
PAKIET
x
x
x
x
x
Rysunek 11.3.1. Uprawnienia obiektowe
Uprawnienie INDEX, REFERENCES nie mogą byü przyznane roli.
Skrót ALL (lub ALL PRIVILEGES) zastĊpuje wszystkie dostĊpne dla danego obiektu uprawnienia
obiektowe. ALL nie jest uprawnieniem, a jedynie mechanizmem pozwalającym przydzielaü wszystkie
dozwolone uprawnienia obiektowe.
Przykáad 11.3.2. Utwórzmy dwóch uĪytkowników u1, u2 i nadajmy im uprawnienia systemowe
CREATE SESSION i CREATE TABLE oraz uprawnienia do tworzenia obiektów w przestrzeni tabel
users i user_i.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
- 125 -
SQL> CREATE USER u1 IDENTIFIED BY u1
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 1M ON users
QUOTA 1M ON users_i;
SQL> GRANT create session, create table TO u1;
SQL> CREATE USER u2 IDENTIFIED BY u2
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 1M ON users
QUOTA 1M ON users_i;
SQL> GRANT connect, create table TO u2;
Jako uĪytkownik u1 utwórzmy tabelĊ t1 wstawmy do niej wiersz oraz przyznajmy do niej uprawnienie
obiektowe REFERENCES uĪytkownikowi u2.
SQL> CREATE TABLE t1
(
id NUMBER CONSTRAINT t1_pk PRIMARY KEY
USING INDEX TABLESPACE users,
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
- 126 -
k1 VARCHAR2(100)
);
SQL> INSERT INTO t1 (id, k1) VALUES (1, 'a');
SQL> GRANT REFERENCES ON t1 TO u2;
Jako uĪytkownik u2 utwórzmy tabelĊ t2 związaną z tabelą u1.t1 obowiązkowym kluczem obcym
z opcją usuwania kaskadowego, a nastĊpnie wstawmy do niej wiersz.
SQL> CREATE TABLE t2
(
id NUMBER CONSTRAINT t2_pk
PRIMARY KEY
USING INDEX TABLESPACE users,
k1 VARCHAR2(100),
u1_t1_id NUMBER CONSTRAINT t2_u1_t1_fk REFERENCES u1.t1(id)
ON DELETE CASCADE
);
SQL> INSERT INTO t2 (id, k1, u1_t1_id) VALUES (1, 'b', 1);
SQL> COMMIT;
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
11. UPRAWNIENIA
- 127 -
Jak widaü udaáo siĊ wstawiü wiersz podrzĊdny, mimo Īe uĪytkownik u2 nie posiada uprawnieĔ do
wybierania z tabeli u1.t1. Próba wykonania polecenia SELECT z tabeli u1.t1 powoduje zgáoszenie
wyjątku ORA-…..: niewystarczające uprawnienia. Gdyby uĪytkownik u2 nie posiadaá Īadnych uprawnieĔ
do tabeli u1.t1, próba pobrania z niej wierszy zakoĔczyáaby siĊ báĊdem ORA-…..: tabela lub perspektywa
nie istnieje.
Spróbujmy teraz jako uĪytkownik u1 usunąü wiersz z tabeli t1, dla którego istnieje wiersz podrzĊdny
w tabeli u2.t2.
SQL> DELETE FROM t1 WHERE id = 1;
1 wiersz zostaá usuniĊty.
SQL> COMMIT;
Jak widzimy zostaá usuniĊty wiersz z tabeli u1.t1 oraz kaskadowo wiersz z tabeli u2.t2, do której
usuwający uĪytkownik nie ma Īadnych uprawnieĔ, a próba wykonania przez niego polecenia SELECT dla
tej tabeli koĔczy siĊ báĊdem ORA-……: tabela lub perspektywa nie istnieje.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
12. ROLE
- 128 -
12. ROLE
Mechanizm ról pozwala w áatwy i kontrolowany sposób zarządzaü uprawnieniami systemowymi i
objektowymi. Role są nazwanymi grupami powiązanych uprawnieĔ.
Roli moĪna przyznaü:
x
inne role,
x
dowolne uprawnienie systemowe poza UNLIMITED TABLESPACE,
x
uprawnienie do obiektów poza INDEX, REFERENCES.
RolĊ moĪna przyznaü uĪytkownikowi lub innej roli.
§ 12.1. Tworzenie roli
Do tworzenia roli sáuĪy polecenie CREATE ROLE. Aby utworzyü rolĊ trzeba posiadaü uprawnienie
systemowe CREATE ROLE.
SQL> CREATE ROLE nazwa_roli;
SQL> CREATE ROLE test;
Podczas tworzenia roli system nadaje ją z opcją ADMIN tworzącemu.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
12. ROLE
- 129 -
Do usuwania ról sáuĪy polecenie DROP ROLE. UĪytkownik usuwający rolĊ musi posiadaü ją z opcją
ADMIN OPTION lub posiadaü uprawnienie systemowe DROP ANY ROLE.
SQL> DROP ROLE nazwa_roli;
Uwaga. W momencie usuwania roli system automatycznie odbiera ją wszystkim uĪytkownikom.
Podczas instalacji systemu tworzone są specjalne role:
x OSOPER,
x OSDBA.
Są one potrzebne do wykonywania operacji na bazie, która nie jest zamontowana, czyli wtedy, kiedy
sáownik danych nie jest dostĊpny. Role te są uĪywane przy poáączeniu typu AS
SYSDBA i AS SYSOPER.
Uprawnienia przypisane SYSDBA odpowiadają uprawnieniom OSDBA, zaĞ uprawnienia przypisane
SYSOPER odpowiadają uprawnieniom OSOPER.
Rola OSOPER uprawnia do wykonywania nastĊpujących poleceĔ na bazie danych:
x
STARTUP,
x
SHUTDOWN,
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
12. ROLE
- 130 -
x
ALTER DATABASE OPEN/MOUNT,
x
ALTER DATABASE BACKUP CONTROLFILE,
x
ALTER TABLESPACE BEGIN/END BACKUP,
x
ARCHIVE LOG,
x
RECOVER.
Rola OSDBA posiada rolĊ OSOPER z opcją ADMIN. Jest ona rolą wykorzystywaną podczas tworzenia
bazy danych.
Role OSDBA i OSOPER posiadają przywilej systemowy RESTRICTED SESSION.
Podczas tworzenia bazy danych tworzone są miĊdzy innymi role:
x
CONNECT,
x
RESOURCE,
x
DBA.
Role te są rolami definiowanym dla zachowania zgodnoĞci z wczeĞniejszymi wersjami i mogą byü
dowolnie modyfikowane.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
12. ROLE
- 131 -
Rola CONNECT ma nastĊpujące uprawnienia systemowe:
x
CREATE SESSION,
x
...,
Rola RESOURCE posiada nastĊpujące uprawnienia systemowe
x
CREATE CLUSTER,
x
CREATE PROCEDURE,
x
CREATE SEQUENCE,
x
CREATE TABLE,
x
CREATE VIEW,
x
CREATE TRIGGER.
Rola DBA obejmuje wszystkie uprawnienia systemowe.
UWAGA! Podczas nadawania uĪytkownikowi roli RESOURCE lub DBA przyznawane jest równieĪ
uprawnienie UNLIMITED TABLESPACE.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
12. ROLE
- 132 -
Przy tworzeniu bazy tworzone są role:
x
EXP_FULL_DATABASE,
x
IMP_FULL_DATABASE.
Są to role pozwalające na wykonywanie peánego importu i eksportu bazy danych narzĊdziami Imp, Exp.
§ 12.2. Przyznawanie uprawnieĔ systemowych i ról
UĪytkownik przyznający rolĊ musi posiadaü przyznawaną rolĊ z opcją ADMIN lub posiadaü uprawnienie
systemowe GRANT ANY ROLE. Roli nie moĪna przyznaü jej samej.
UĪytkownik przyznający uprawnienie systemowe musi posiadaü je z opcją ADMIN lub mieü przyznane
uprawnienie systemowe GRANT ANY PRIVILEGE.
SQL> GRANT
{system_priv | role}
[, { system_priv | role}]
TO
{user | role* | PUBLIC} [, { user | role* | PUBLIC}]
[WITH ADMIN OPTION];
gdzie:
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
12. ROLE
system_priv
role
user
role*
PUBLIC
WITH ADMIN OPTION
- 133 -
Przyznawane uprawnienie systemowe.
Przyznawana rola.
Nazwa uĪytkownika, któremu przyznawane są uprawnienia.
Nazwa roli, której przyznawane są uprawnienia.
Powoduje, Īe uprawnienia zostają przyznane wszystkim uĪytkownikom.
Przyznaje uprawnienia z opcją administracyjną, która pozwala przyznaü lub odebraü
otrzymane uprawnienie innym uĪytkownikom lub rolom. Rola przyznana z tą opcją moĪe
zostaü zmieniona lub usuniĊta przez otrzymującego uprawnienie. Aby odebraü opcjĊ
ADMIN naleĪy odebraü uprawnienie lub rolĊ, a nastĊpnie przyznaü je bez opcji ADMIN.
Uwaga. UĪytkownik, który posiada uprawnienie do obiektu przyznane poĞrednio poprzez role, nie moĪe
z niego korzystaü w swoich obiektach skáadowanych w bazie, takich jak perspektywy, procedury, funkcje,
wyzwalacze. Aby tworzyü obiekty wykorzystujące obiekty innych uĪytkowników, wymagane jest
posiadanie uprawnieĔ nadanych bezpoĞrednio przez wáaĞciciela wykorzystywanych obiektów. Zatem jeĪeli
uĪytkownik a chce odwoáywaü siĊ we wáasnym obiekcie do obiektu b.o uĪytkownika b, to uprawnienie do
obiektu b.o musi zostaü przyznane uĪytkownikowi a bez poĞrednictwa roli.
Uwaga. JeĪeli uĪytkownik otrzymaá uprawnienie systemowe wraz z opcją administracyjną i przekazaá je
innym uĪytkownikom, to odebranie mu tego prawa nie spowoduje odebrania go uĪytkownikom, którzy je od
niego otrzymali.
UPRAWNIENIA SYSTEMOWE NIE SĄ ODBIERANE KASKADOWO !
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
12. ROLE
- 134 -
§ 12.3. Przyznawanie uprawnieĔ obiektowych
Aby przyznawaü uprawnienie do obiektu innemu uĪytkownikowi lub roli trzeba byü jego wáaĞcicielem
lub posiaü uprawnienia do niego z opcją GRANT.
SQL> GRANT {object_priv | All [PRIVILEGES]}
[( column [, column] ...)]
[, {object_priv | All [PRIVILEGES]}
[ ( column [, column] ...) ] ]
ON [schema.]object
TO {user | role* | Public}
[WITH GRANT OPTION];
gdzie:
object_priv
ALL [PRIVILEGES]
column
[schema.]object
user
role*
- Przyznawane uprawnienie obiektowe.
- Skrót zastĊpujący wszystkie uprawnienia jakie moĪe przyznaü uĪytkownik nadający
uprawnienie. Nie jest to nazwa uprawnienia.
- W przypadku przyznawania uprawnienia INSERT, REFERENCES, UPDATE do tabeli lub
widoku moĪliwe jest wyspecyfikowanie kolumn, do których ma byü ograniczone przyznane
uprawnienie.
- Nazwa obiektu poprzedzona opcjonalnie nazwą schematu, do którego nastĊpuje przyznanie
uprawnieĔ.
NazwĊ obiektu moĪna zastąpiü synonimem do niego. Przyznanie uprawnienia do synonimu
jest równoznaczne z przyznaniem uprawnienia do obiektu, do którego odnosi siĊ synonim
i odwrotnie.
- Nazwa uĪytkownika, któremu przyznawane są uprawnienia.
- Nazwa roli, której przyznawane są uprawnienia.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
12. ROLE
- 135 -
PUBLIC
WITH GRANT OPTION
- Powoduje, Īe uprawnienia zostają przyznane wszystkim uĪytkownikom.
- Pozwala przyznaü uprawnienia do obiektów, z prawem przyznania ich dalej. Opcji tej nie
moĪna stosowaü przyznając prawa roli.
Uwaga. JeĪeli uĪytkownik otrzymaá uprawnienie do obiektu wraz z opcją administracyjną i przekazaá je
innym uĪytkownikom, to odebranie mu tego prawa spowoduje odebranie go uĪytkownikom, którzy je od
niego otrzymali.
UPRAWNIENIA DO OBIEKTÓW SĄ ODBIERANE KASKADOWO !
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
13. PLIK PARAMETRÓW SPFILE<SID>.ORA
- 136 -
13. PLIK PARAMETRÓW SPFILE<SID>.ORA
Poleceniem
SQL> CREATE SPFILE=
’c:\oraclexe\app\oracle\product\10.2.0\server\dbs\spfilexe.ora’
FROM PFILE=
’c:\oraclexe\app\oracle\product\10.2.0\server\database\initxe.ora’;
moĪna utworzyü nowy plik spfileXE.ora i restartowaü instancjĊ. UĪyty zostanie plik parametrów
spfileXEt.ora (w przypadku jego braku uĪyty bĊdzie plik initXE.ora).
Poleceniem
SQL> CREATE PFILE=
’c:\oraclexe\app\oracle\product\10.2.0\server\database\initxe.ora’
FROM SPFILE=
’c:\oraclexe\app\oracle\product\10.2.0\server\dbs\spfilexe.ora’;
moĪna odtworzyü
plik initXE.ora i zmodyfikowaü go. NastĊpnie znowu utworzyü plik
spfileXEt.ora i restartowaü instancjĊ.
W
czasie
pracy
instancji
zmiana
parametrów
systemu
spfile<sid>.ora.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
moĪe
byü
zmieniona
w pliku
13. PLIK PARAMETRÓW SPFILE<SID>.ORA
- 137 -
SQL> ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;
/*MEMORY|SPFILE|BOTH*/
Uwaga. Nie wszystkie parametry moĪna zmieniü z opcją MEMORY. Tak wiĊc dla niektórych parametrów
polecenie ze SCOPE=BOTH lub SCOPE=MEMEORY zakoĔczy siĊ báĊdem.
Przykáad 13.1.1. Zmiana parametru SGA_MAX_SIZE okreĞlającego maksymalny rozmiar obszaru SGA
z opcją SCOPE=BOTH zakoĔczy siĊ báĊdem.
SQL> ALTER SYSTEM SET sga_max_size=536870912 SCOPE=BOTH;
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
BIBLIOGRAFIA
- 138 -
BIBLIOGRAFIA
[ 1] Dokumentacja ORACLE 9i
[ 2] Marlene Theriault, Rachel Carmichael, James Viscusi, ORACLE DBA, Wydawnictwo RM, 2001
Wydawnictwo RM, 2001
[ 3] Robert Wrembel, Juliusz Jezierski, Maciej Zakrzewicz, System zarządzania bazą danych Oracle 7
i Oracle 8, Wydawnictwo NAKOM, 1999
[ 4] David Austin, Poznaj ORACLE, MIKOM, 2000
[ 5] Zasoby http://metalink.oracle.com
[ 6] Zasoby http://www.orafaq.com
[ 7] Lentner M.: Oracle 9i - Kompletny podrĊcznik uĪytkownika. Wydawnictwo PJWSTK 2003
[ 8] Whalen E., Schroeter M.: Oracle - Optymalizacja wydajnoĞci. Helion 2003
[ 9] Theriaut M., Carmichael R., Viscusi J.: Oracle 9i - Administrowanie bazami danych od podstaw.
Helion 2003
[ 10] Loney Kelvin, Oracle 10g. Kompendium administratora. Helion 2005.
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
DODATKI
- 139 -
DODATEK A – PRZYKàAD PLIKU TNSNAMES.ORA
baza =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = zysknt.math.uni.lodz.pl)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = baza)
)
)
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”
SPIS ILUSTRACJI
- 140 -
SPIS ILUSTRACJI
Rysunek 2.1.1. PojĊcie instancji .........................................................................................................................................7
Rysunek 2.2.1. Globalny obszar systemowy SGA. ............................................................................................................8
Rysunek 3.1.1. Pliki kontrolne, danych i wycofywania. ..................................................................................................11
Rysunek 3.1.2. Pliki dziennika powtórzeĔ. ......................................................................................................................12
Rysunek 3.1.3. Pliki kontrolne, danych i wycofywania. ..................................................................................................13
Rysunek 3.1.4. Pliki konfiguracyjne bazy. .......................................................................................................................14
Rysunek 3.1.5. Sieciowe pliki konfiguracyjne. ................................................................................................................14
Rysunek 4.1.1. Proces nasáuchowy (Listener)..................................................................................................................16
Rysunek 4.3.1. Serwer dedykowany.................................................................................................................................19
Rysunek 4.3.2. Serwer wielokanaáowy.............................................................................................................................20
Rysunek 4.3.3. Serwer wieloinstancyjny..........................................................................................................................21
Rysunek 6.6.1. Etapy uruchamiania instancji...................................................................................................................30
Rysunek 8.1.1. Warstwa logiczna i fizyczna danych........................................................................................................41
Rysunek 8.1.2. Przestrzenie danych. ................................................................................................................................42
Rysunek 8.1.3. Rozszerzenia i segment............................................................................................................................44
Rysunek 8.1.4. Budowa segmentu....................................................................................................................................45
Rysunek 8.1.5. Budowa bloku..........................................................................................................................................46
Rysunek 8.2.1. Budowa ROWID .....................................................................................................................................52
Rysunek 8.2.2. Parametry PCTFREE i PCTUSED ..........................................................................................................55
Rysunek 8.3.1. Rollback segment.....................................................................................................................................62
Rysunek 10.5.1. Znaczenie parametrów PASSWORD_LIFETIME i PASSWORD_GRACE_TIME ...........................102
Rysunek 11.3.1. Uprawnienia obiektowe .......................................................................................................................124
Rok akademicki – 2007/2008 - Notatki do wykáadów z przedmiotu „Administracja bazami danych”