Zarządzanie instancją bazy danych Oracle 11g

Transkrypt

Zarządzanie instancją bazy danych Oracle 11g
Zarządzanie instancją bazy danych Oracle 11g
Zarządzanie instancją bazy danych
Oracle11g
Wstęp
Na poprzednim laboratorium zapoznaliście się Państwo ze środowiskiem maszyny wirtualnej, systemem
Linux oraz podstawowymi operacjami na bazie danych. Na tych zajęciach zostaną omówione
podstawowe zagadnienia związane z:




uruchamianiem i zatrzymywaniem bazy danych,
konfiguracją LISTENER-a,
zarządzaniem pamięcią
zarządzaniem procesami instancji
Uruchamianie bazy danych
Baza danych startuje przechodząc kolejno przez 3 etapy:
1. Alokacja pamięci oraz uruchomienie procesów. Na tym etapie odczytywany jest plik
parametrów SPFILE (binarny) lub PFILE (tekstowy). Ten tryb używany jest do tworzenia bazy lub
tworzenia CONTROL FILE-a po jego utracie.
A. STARTUP NOMOUNT;
2. “Montowanie” bazy danych czyli odczyt CONTROL FILE-a i sprawdzenie obecności i integralności
pozostałych plików (np. plików danych, redo logów itp)
A. STARTUP MOUNT;
b. ALTER DATABASE MOUNT; (w przypadku gdy baza została już uruchomiona w
trybie NOMOUNT)
3. Otwarcie bazy dla wszystkich użytkowników
A. STARTUP;
b. ALTER DATABASE OPEN; (w przypadku gdy baza została już uruchomiona w trybie
MOUNT)
Istnieje możliwość otwarcia bazy w trybie RESTRICT czyli tylko dla administratorów głównie w celu
przeprowadzenia np. eksportu lub większego importu danych, przeprowadzenia aktualizacji lub po
prostu jeśli chcemy zablokować dostęp zwykłym użytkownikom
STARTUP RESTRICT;
Odblokowanie trybu RESTRICTED jest możliwe za pomocą komendy:
Strona: 1 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
ALTER SYSTEM DISABLE RESTRICTED SESSION;
Zatrzymywanie bazy danych
Bazę danych można zamykać na kilka różnych sposobów:




Zatrzymanie normalne (domyślne). Baza danych czeka aż wszyscy użytkownicy sami rozłączą się.
Ponowny start bazy nie wymaga odtwarzania
o SHUTDOWN NORMAL; (lub po prostu SHUTDOWN)
Zatrzymanie po zakończeniu wszystkich rozpoczętych transakcji. Ponowne uruchomienie bazy
nie wymaga odtwarzania
O SHUTDOWN TRANSACTIONAL;
Zatrzymanie natychmiastowe. Wszystkie działające transakcje są wycofywane, a użytkownicy
rozłączani. Ponowne uruchomienie bazy nie wymaga odtwarzania
O SHUTDOWN IMMEDIATE;
Zatrzymanie awaryjne. Instancja przestaje działać bez wcześniejszych ostrzeżeń i oczekiwania na
normalne zakończenie transakcji. Należy stosować ten typ zatrzymywania jeśli żaden z
powyższych nie działa, baza działa w sposób nieprzewidywalny lub są problemy z jej
uruchomieniem. Ponowne uruchomienie bazy wymaga odtwarzania (najczęściej wykonywane
automatycznie)
O SHUTDOWN ABORT;
Konfiguracja LISTENER-a
LISTENER jest procesem nasłuchującym na konkretnym porcie (domyślnie 1521) i adresie IP. Umożliwia
zdalne łączenie się do bazy danych przez sieć. Najprostsza konfiguracja wymaga określenia nazwy
serwera lub adresu IP oraz portu na którym ma nasłuchiwać. Odpowiednich wpisów dokonujemy w pliku
listener.ora znajdującym się w katalogu $ORACLE_HOME/network/admin:
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle1.localdomain)(PORT = 1521))
)
LISTENER bez dodatkowej konfiguracji może uzyskać informacje o działających na tym samym serwerze
instancjach bazy Oracle i serwować usługę dostępu do nich z zewnątrz. Procesem, który automatycznie
rejestruje instancję bazy w LISTENER jest PMON. Niemniej jednak warto na stałe skonfigurować
LISTENER-a aby wiedział, że ma serwować usługi do danej instancji bazy. Robi się to poprzez ręczną
edycję pliku listener.ora lub za pomocą narzędzia graficznego Oracle Net Manager uruchamianego
komendą
Strona: 2 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
netmgr
Narzędzie umożliwia konfigurację LISTENER-a
Aby na stałe wpisać w konfigurację serwowanie usług sieciowych do konkretnej instancji bazy należy
wybrać opcję Database Services jak na rysunku poniżej:
Należy wypełnić 3 pola zaznaczone w czerwonym prostokącie, a więc:
Strona: 3 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g



Global Database Name – pełna nazwa instancji (orcl)
Oracle Home Directory – czyli $ORACLE_HOME
SID – skrócona nazwa instancji czyli orcl
Po zapisaniu zmian (File -> Save Network Configuration) i ponownym uruchomieniu LISTENER-a zmiany
zostaną wprowadzone. Kod wygenerowany przez narzędzie graficzne można zobaczyć otwierając plik
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl)))
Najprostsze zarządzanie LISTENER-em sprowadza się do jego uruchomienia, sprawdzania statusu oraz
zatrzymywania:
lsnrctl start
lsnrctl status
lsnrctl stop
Oracle Net Manager umożliwia również:






dodawanie nowego adresu i portu nasłuchu w przypadku jeśli konieczne jest nasłuchiwanie na
kilku interfejsach sieciowych (w przypadku maszyny z kilkoma kartami sieciowymi)
zmianę portu nasłuchu
rejestrację instancji bazy do obsługi
konfigurację aliasów sieciowych po stronie klienta
konfigurację uwierzytelnienia z katalogów LDAP
Zaawansowanej obsługi sieciowej z szyfrowaniem, load balancing itp.
Zarządzanie pamięcią
Strona: 4 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
Jednym z kluczowych zadań administracyjnych jest konfiguracja i zarządzanie pamięcią SGA i PGA w
instancji bazy danych. Najprostszym sposobem na konfigurację pamięci jest włączenie automatycznego
zarządzania pamięcią. Wykonuje się to ustawiając parametr
MEMORY_TARGER = nM
gdzie n oznacza ilość megabajtów przydzielonych wspólnie na SGA i PGA
Powyższy parametr ustawić można poniższą komendą:
ALTER SYSTEM SET MEMORY_TARGET = 308M;
Aby wyłączyć automatyczne zarządzanie pamięcią wystarczy ustawić wartość zero parametrowi
MEMORY_TARGET:
ALTER SYSTEM SET MEMORY_TARGET = 0;
Poszczególne parametry konfiguracyje można wyświetlić za pomocą SQLPLUS-a i komendy:
SHOW PARAMETER TARGET
Powyższa komenda wyświetla wszystkie parametry, które mają w swojej nazwie słowo target.
memory_max_target
big integer 332M
memory_target
big integer 308M
pga_aggregate_target
big integer 108M
sga_target
big integer 200M
Uwaga!
Niektóre parametry można zmieniać dynamicznie w trakcie działania instancji bazy np.
memory_target czy sga_target. Są jednak i takie parametry, które wymagają restartu instancji. W
celu zmiany wartości takiego parametru należy posłużyć się klauzulą scope=spfile np.
ALTER SYSTEM SET MEMORY_MAX_TARGET=350M SCOPE=SPFILE;
Powoduje ona zapisanie nowej wartości w pliku inicjalizacyjnym SPFILE i wprowadzenie jej do użycia
przy kolejnym starcie instancji bazy.
W przypadku kiedy z powodu błędu wprowadzimy do pliku SPFILE nieprawidłową wartość jakiegoś
parametru, ponowne uruchomienie instancji bazy może się nie udać. Plik SPFILE jest plikiem binarnym
więc nie da się go edytować ręcznie. To co należy wtedy zrobić to po zalogowaniu do SQLPLUS wykonać
następującą komendą:
CREATE PFILE=’pelna sciezka do pliku’ FROM SPFILE; np:
CREATE PFILE=’/tmp/pfile.ora’ FROM SPFILE;
Strona: 5 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
Uwaga!
Apostrofy w komendach błędnie kopiują się do konsoli SQLPLUS. Należy je wpisać w konsoli ręcznie.
Powyższe polecenie tworzy plik PFILE który w odróżnieniu od SPFILE jest tekstowy i może być edytowany
ręcznie. Należy więc otworzyć PFILE w pliku tekstowym i zmienić błędnie ustawione wartości
parametrów. Kolejne uruchomienie instancji bazy odbywa się przy wskazaniu lokalizacji pliku PFILE np:
STARTUP PFILE=’/tmp/pfile.ora’;
Aby powrócić do korzystania z pliku SPFILE jako domyślnego pliku z parametrami startowymi należy
wykonać poniższą komendę:
CREATE SPFILE FROM PFILE;
Kolejne uruchamianie instancji bazy będzie znowu przy użyciu pliku SPFILE (czyli binarnego)
Monitorowanie zasobów pamięci
W trakcie działania instancji bazy można sprawdzać ilość pamięci przydzielonej poszczególnym buforom
za pomocą widoków V$ lub Enterprise Manager-a.
Sprawdzanie alokacji pamięci w SQLPLUS
W bazie Oracle istnieje wiele widoków w których można sprawdzać różne statystyki związane z
przydziałem pamięci. Do nich należą między innymi: V$SGASTAT dla obszaru SGA oraz V$PGASTAT dla
obszaru PGA .
Mimo że baza pracuje w trybie automatycznego przydzielania pamięci (MEMORY_TARGET > 0) to
możemy określać wartości dla poszczególnych składowych czyli PGA (PGA_AGGREGATE_TARGET) i
SGA (SGA_TARGET). Baza potraktuje nasze wskazania jako wartości minimalne, ale może je
samodzielnie zwiększyć do maksymalnego rozmiaru MEMORY_TARGET .
Poniżej przydatne zapytania na widokach V$SGASTAT i V$PGASTAT:
Wyświetla ilość pamięci dla “pool-i” czyli SHARED POOL, JAVA POOL, LARGE POOL, STREAMS POOL
SELECT POOL, SUM(BYTES) FROM V$SGASTAT GROUP BY POOL;
Wyświetla ilość pamięci dla buforów czyli dla LOG BUFFER i BUFFER CACHE
SELECT NAME, SUM(BYTES) FROM V$SGASTAT WHERE POOL IS NULL GROUP
BY NAME;
Wyświetla ilość pamięci całej przestrzeni SGA w megabajtach
SELECT SUM(BYTES)/1048576 FROM V$SGASTAT;
Strona: 6 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
Wyświetla statystyki przydziału pamięci dla PGA
SELECT * FROM V$PGASTAT;
Sprawdzanie alokacji pamięci w Enterprise Manager
Uruchamiając EM komendą:
emctl start dbconsole
możemy w narzędziu graficznym przyjrzeć się między innymi alokacji pamięci.
W przeglądarce otwieramy link Oracle Enterprise Manager i logujemy się jako:
Username: sys
Password: oracle
Connect as: SYSDBA
Następnie ze strony domowej przechodzimy na zakładkę Server i wybieramy opcję Memory Advisors
Na wyświetlonej stronie po kliknięciu na Memory Advisor można zobaczyć aktualną alokację pamięci
wraz z możliwości zmiany parametrów.
Strona: 7 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
Zarządzanie procesami
Jednym z elementów na które administrator ma wpływ w przypadku procesów jest ilość uruchomionych
procesów Database Writer-a, który w sposób asynchroniczny zapisuje zmodyfikowane bloki z pamięci
(Database Buffer Cache) do plików na dysku. Można ustawić do 20 procesów DBW uwzględniając ilość
procesorów i rdzeni w fizycznej maszynie. Parametrem którym sterujemy ilość procesów jest:
DB_WRITER_PROCESS
Zmiana odbywa się przez wydanie komendy:
ALTER SYSTEM SET DB_WRITER_PROCESSES = 2 SCOPE=SPFILE;
Strona: 8 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
Ćwiczenia
Ćwiczenie 1 – Uruchamianie i zatrzymywanie instancji bazy
1. Uruchomić instancję bazy ręcznie wprowadzając ją w kolejne tryby NOMOUNT, MOUNT i OPEN.
2. W drugim terminalu podłączyć się do bazy przez SQLPLUS na konto użytkownika DBSNMP/oracle
3. Z pierwszego terminala spróbować zamknąć bazę danych opcją shutdown. Zastanowić się nad
rezultatem tej operacji. Co trzeba zrobić żeby instancja rzeczywiście się zamknęła?
4. Ponownie wystartować bazę w trybie normalnym
5. Zamknąć bazę opcją abort
6. Ponownie ją otworzyć, ale w trybie RESTRICT i sprawdzić w pliku alert_orcl.log czy baza
wykonała odtworzenie po awarii (recovery)
7. W drugim terminalu zalogować się jako użytkownik DBSNMP. Sprawdzić czy się powiodło. Co
należy zrobić, żeby ten użytkownik mógł się zalogować?
Ćwiczenie 2 – LISTENER
1. Uruchomić proces nasłuchu bazy danych LISTENER i sprawdzić czy instancja bazy orcl
zarejestrowała się w nim
2. Za pomocą Oracle Net Manager skonfigurować proces LISTNER-a do automatycznej rejestracji
instancji bazy orcl
3. Również za pomocą Oracle Net Manager skonfigurować proces LISTNER żeby nasłuchiwał na
adresie IP 127.0.0.1 (localhost) i porcie 1555.
4. Sprawdzić poleceniem systemu operacyjnego Linux czy LISTENE R rzeczywiście nasłuchuje na
dwóch adresach IP i dwóch różnych portach
Ćwiczenie 3 – Zarządzanie pamięcią
1. Sprawdzić za pomocą SQLPLUS czy instancja bazy jest ustawiona w trybie automatycznego
zarządzania pamięcią
2. Sprawdzić wartości parametrów SGA i PGA
3. Sprawdzić za pomocą poleceń SQL jakie aktualnie wartości zostały przydzielone:
a. całej przestrzeni SGA
b. Shared Pool
c. Large Pool
d. Java Pool
e. Log Buffer
f. Buffer Cache
Strona: 9 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
4. Zmienić wartość parametru MEMORY_MAX_TARGET na 330M. Zastosować zmiany i sprawdzić
czy się udało.
5. Ponownie zmienić parametr MEMORY_MAX_TARGET na 250M. Zastosować zmiany i sprawdzić
czy się udało.
6. Uruchomić EM i sprawdzić sposób alokacji pamięci. Porównać z wartościami otrzymanymi w
SQLPLUS
Ćwiczenie 4 – Zarządzanie procesem DBW
1. Sprawdzić ile jest aktualnie uruchomionych procesów Database Writer (DBW) za pomocą
SQLPLUS i polecenia systemu operacyjnego Linux
2. Zwiększyć ilość procesów DBW do 3 i zastosować zmiany. Sprawdzić czy się udało.
3. Sprawdzić w systemie operacyjnym Linux ile jest aktualnie uruchomionych procesów DBWR.
4. Ponownie przywrócić oryginalną ilość procesów DBW.
Strona: 10 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
Odpowiedzi do zadań
Ćwiczenie 1
1. Należy wykonać po kolei następujące polecenia
a. sqlplus sys as sysdba
b. startup nomount
c. alter database mount;
d. alter database open;
2. Otworzyć drugi terminal tekstowy i podłączyć się do bazy jako użytkownik dbsnmp z hasłem
oracle
a. sqlplus dbsnmp/oracle
3. Próba zamknięcia bazy komendą shutdown nie powiedzie się bo instancja oczekuje na
wylogowanie użytkownika DBSNMP. Należy zakończyć sesję użytkownika DBSNMP lub przerwać
wykonywanie komendy shutdown przez wciśnięcie CTRL-C i zakończenie działania instancji
poleceniem shutdown immediate.
4. Wystartowanie bazy w trybie normalnym:
a. startup;
5. Zamknąć baze w trybie abort:
a. shutdown abort
6. Ponownie uruchomić instancję i sprawdzić w pliku alert_orcl.log czy baza wykonała
odzyskiwanie po awarii
a. startup restrict
b. find /u01 –name alert_orcl.log
c. emacs /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
d. Odnaleźć na końcu pliku informacje o przeprowadzonym odtwarzaniu np:
Recovery of Online Redo Log: Thread 1 Group 2 Seq 428
Reading mem 0
Mem# 0: /u01/app/oracle/oradata/orcl/redo02.log
Completed redo application of 0.13MB
Completed crash recovery at
7. Podłączenie z drugiego terminala jako użytkownik DBSNMP
a. sqlplus dbsnmp/oracle
b. logowanie nieudane ponieważ baza została otwarta w trybie RESTRICT.
c. Należy z pierwszej konsoli jako użytkownik SYS wyłączyć tryb RESTRICT
d. alter system disable restricted session;
e. Kolejne podłączenie zwykłego użytkownika będzie udane
...
Strona: 11 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
Ćwiczenie 2
Opis jak wykonać poszczególne kroki tego ćwiczenia znajduje się na początku Odpowiedzi na
zagadnienia w tym ćwiczeniu znajdują w rozdziale Konfiguracja LISTENER-a
Ćwiczenie 3
1. Aby sprawdzić czy baza działa w trybie automatycznego zarządzania pamięcią wystarczy w
poziomu SQLPLUS sprawdzić wartość parametru MEMORY_TARGET. Jeśli jest niezerowy to
znaczy że automatyczne zarządzanie pamięcią jest włączone.
a. sqlplus sys as sysdba
b. show parameter memory_target
2. Aby sprawdzić wartości parametrów PGA i SGA ponownie trzeba użyć polecenia w SQLPLUS:
a. show parameter sga_target
b. show parameter pga_aggregate_target
3. Aby sprawdzić aktualne wartości dla poszczególnych obszarów pamięci należy odpytać widoki
V$SGASTAT i V$PGASTAT:
a. Cała przestrzeń SGA
i. SELECT SUM(BYTES)/1048576 FROM V$SGASTAT;
b. Dla Shared Pool, Large Pool i Java Pool wystarczy zadać jedno polecenie:
i. SELECT POOL, SUM(BYTES) FROM V$SGASTAT GROUP BY POOL;
c. Dla Log Buffer i Buffer Cache też pojedyncze zapytanie:
i. SELECT NAME, SUM(BYTES) FROM V$SGASTAT WHERE POOL IS
NULL GROUP BY NAME;
4. Zmienić wartość parametru MEMORY_MAX_TARGET na 330M
a. alter system set memory_max_target=330M scope=spfile;
b. shutdown immediate
c. startup
5. Zmienić wartość parametru MEMORY_MAX_TARGET na 250M
a. alter system set memory_max_target=250M scope=spfile;
b. shutdown immediate
c. startup
Podczas próby ponownego uruchomienia instancji po zmianie parametru MEMORY_MAX_TARGET na
250M baza zgłosi problem:
ORA-00837: Specified value of MEMORY_TARGET greater than
MEMORY_MAX_TARGET
Baza nie uruchomi się z tak dobraną wartości dla tego parametru. Zanim ponownie uruchomimy
instancję należy poprawić wartość MEMORY_MAX_TARGET. Problem w tym że plik SPFILE jest binarnym
i nie można go zmieniać ręcznie. Dlatego należy stworzyć jego kopię tekstową czyli PFILE i poprawić
błędną wartość za pomocą edytora. Należy wykonać następujące polecenia:
Strona: 12 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
sqlplus sys as sysdba
create pfile=’/tmp/pfile.ora’ from spfile;
Otworzyć i zmodyfikować plik /tmp/pfile.ora i poprawić błędną wartość MEMORY_MAX_TARGET, a
następnie uruchomić bazę wskazując przy starcie plik PFILE:
startup pfile=’/tmp/pfile.ora’
i ostatecznie odtworzyć plik SPFILE
create spfile from pfile=’/tmp/pfile.ora’
6. Uruchomić Enterprise Manager i sprawdzić alokację pamięci
a. emctl start dbconsole
b. Należy się zalogować i wejść do zakładki Server i potem Memory Advisors.
Ćwiczenie 4
Aby sprawdzić ilość procesów DBW to należy sprawdzić wartość parametru DB_WRITER_PROCESSES
c. sqlplus sys as sysdba
d. show parameter DB_WRITER_PROCESSES
Zmiana parametru
e. alter system set db_writer _processes=3 scope=spfile;
f. shutdown immediate
g. startup
Z poziomu systemu operacyjnego można sprawdzić poleceniem
h. ps aux | grep ora_dbw
Na ekranie można zauważyć dwa procesy DBW0 i DBW1
Powrót do starych ustawień:
a. alter system set db_writer _processes=1 scope=spfile;
b. shutdown immediate
c. startup
Strona: 13 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2
Zarządzanie instancją bazy danych Oracle 11g
Strona: 14 | Administracja bazą Oracle 11g | Studia Podyplomowe SGGW | Laboratorium nr 2

Podobne dokumenty