2012 PROCEDURA BACKUP & RECOVER Dokument opisuje procedurę backup u i odtwarzania dla bazy Oracle 11gR2
ORA- 600 Kamil Stawiarski Spis treści Pełny backup serwera Oracle... 3 Backup wykonywany z jednego węzła na system plików... 3 Skrypt do backup u... 3 Backup wykonywany z dwóch węzłów na współdzieloną grupę dyskową ASM... 4 Serwisy RAC... 4 Skrypt do backup u... 4 Podstawowe przypadki odtwarzania bazy z backup u... 6 Bez utraty pliku kontrolnego... 6 RMAN ADVISOR... 6 Ręczne odtwarzanie... 6 Odtwarzanie do punktu w czasie... 7 Utrata plików kontrolnych... 7 Przydatne polecenia RMAN:... 7 Tworzenie bazy katalogowej Oracle.... 8 2
Pełny backup serwera Oracle ORA- 600 Kamil Stawiarski W celu uruchomienia procedury backup u z użyciem narzędzia RMAN, został włączony na bazie tryb ARCHIVELOG. Backup wykonywany z jednego węzła na system plików W tym przypadku, backup zostanie wykonany z poziomu jednego z węzłów, wchodzących w skład instalacji Oracle RAC 11gR2. Skrypt do backup u Przykładowe ustawienia zmiennych: ORACLE_SID ORACLE_HOME PATH Basedir muszą być dostosowane do bieżących ścieżek instalacyjnych Oracle. Plik ze zmiennymi środowiskowymi dla bazy danych (prod1.env), znajduje się w katalogu domowym użytkownika Oracle. Skrypt do backup u powinien być uruchamiany z poziomu użytkownika Oracle. Skrypt wykonuje pełny backup bazy danych #!/bin/bash export ORACLE_SID=prod1 export PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin:/data/oraclei/bin:/data/oraclei/product/11.2.0/dbho me_1/bin export ORACLE_HOME=/data/oraclei/product/11.2.0/dbhome_1 export NLS_DATE_FORMAT="HH24:MI:SS DD:MM:YYYY" # Lokalizacja miejsca skladowania backup u basedir=/mnt/sdb7_kosz/backup_prod dirname=`date '+%d%m%y'` filename=`date '+%d%m%y.%h.%m'` test -d ${basedir}/${dirname} mkdir -p ${basedir}/${dirname} 3
ORA- 600 Kamil Stawiarski rman target sys/skalari log=${basedir}/${dirname}/log_${filename} <<! run { allocate channel c1 device type disk; allocate channel c2 device type disk; allocate channel c3 device type disk; allocate channel c4 device type disk; backup as compressed backupset database format '${basedir}/${dirname}/data_${filename}_lev${inclev}.%u'; backup as compressed backupset archivelog all format '${basedir}/${dirname}/arch_${filename}.%u'; backup as compressed backupset current controlfile format '${basedir}/${dirname}/control_${filename}.%u'; backup as compressed backupset spfile format '${basedir}/${dirname}/spfile_${filename}.%u'; delete noprompt obsolete recovery window of 7 days; }! Backup wykonuje się równolegle 4 kanałami do lokalizacji wskazanej parametrem basedir. Pliki zbędne do zachowania 7- dniowego okna odtwarzania są usuwane. Format nazewniczy plików backup u, pozwala na łatwe zidentyfikowanie zawartości pliku i jego czasu powstania po jego nazwie. Backup wykonywany z dwóch węzłów na współdzieloną grupę dyskową ASM W celu optymalizacja wykonywania pełnego backup u Oracle, można uruchomić wykonywanie archiwizacji równolegle przez dwa węzły w klastrze. W tym celu można powołać odpowiednie serwisy, do których RMAN będzie nawiązywał połączenia Serwisy RAC Stworzone serwisy będą działały w trybie HA, zapewniając ciągłość backup u $ srvctl add service -d prod -s rman1 -r prod1 -a prod2 $ srvctl add service -d prod -s rman2 -r prod2 -a prod1 $ srvctl start service -d prod -s rman1 $ srvctl start service -d prod -s rman2 Skrypt do backup u Przykładowe ustawienia zmiennych: ORACLE_SID ORACLE_HOME PATH Asm_disk 4
Log_dest ORA- 600 Kamil Stawiarski muszą być dostosowane do bieżących ścieżek instalacyjnych Oracle. Plik ze zmiennymi środowiskowymi dla bazy danych (prod1.env), znajduje się w katalogu domowym użytkownika Oracle. Skrypt do backup u powinien być uruchamiany z poziomu użytkownika Oracle. #!/bin/bash export ORACLE_SID=prod1 export ORACLE_BASE=/u01/app/oraowner export PATH=/u01/app/oraowner/product/11.2.0/dbhome_1/bin:/u01/app/11.2.0/grid/bin:/usr/ke rberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oraowner/bin export ORACLE_HOME=/u01/app/oraowner/product/11.2.0/dbhome_1 export NLS_DATE_FORMAT=YYYY.MM.DD.HH24:MI:SS # Lokalizacja plikow backup u asm_disk='+data' # Lokalizacja plikow log log_dest=/home/oraowner/bin/mk_backup.log #Dlugosc okna odtwarzania rec_window=14 sys_pwd=oracle inclev=0 rman target / append log=${log_dest} <<! run { allocate channel c1 device type disk connect sys/${sys_pwd}@oracle-db:1521/rman1; allocate channel c2 device type disk connect sys/${sys_pwd}@oracle-db:1521/rman1; allocate channel c3 device type disk connect sys/${sys_pwd}@oracle-db:1521/rman1; allocate channel c4 device type disk connect sys/${sys_pwd}@oracle-db:1521/rman2; allocate channel c5 device type disk connect sys/${sys_pwd}@oracle-db:1521/rman2; allocate channel c6 device type disk connect sys/${sys_pwd}@oracle-db:1521/rman2; crosscheck archivelog all; crosscheck backupset; backup as compressed backupset database format '${asm_disk}'; backup as compressed backupset archivelog all delete input format '${asm_disk}'; backup as compressed backupset current controlfile format '${asm_disk}'; backup spfile format '${asm_disk}'; delete noprompt obsolete recovery window of ${rec_window} days; release channel c1; release channel c2; release channel c3; release channel c4; release channel c5; release channel c6; }! 5
ORA- 600 Kamil Stawiarski Podstawowe przypadki odtwarzania bazy z backup u Bez utraty pliku kontrolnego W przypadku sytuacji, w której nie utracimy wszystkich plików kontrolnych, można użyć jednej z dwóch metod odtwarzanie ręczne lub z użyciem narzędzia rman advisor. RMAN ADVISOR Użycie tego narzędzia polega na doprowadzeniu do sytuacji, w której RMAN zauważy, że pojawił się jakiś błąd. W tym celu należy spróbować podnieść bazę danych z poziomu RMAN a za pomocą poleceń STARTUP lub ALTER DATABASE OPEN (w przypadku gdy baza jest już w trybie MOUNT). Następnie musimy użyć trzech komend w dokładnie takiej kolejności: 1. LIST FAILURE; - RMAN opisze błąd, który został znaleziony 2. ADVISE FAILURE; - zostanie wygenerowany automatyczny skrypt odtwarzania 3. REPAIR FAILURE; - skrypt zostanie uruchomiony, odtwarzając bazę danych do najświeższego punktu w czasie. Ręczne odtwarzanie Ręczne odtwarzanie wiąże się z koniecznością znajomości administracji serwerem Oracle i narzędzia RMAN. Używane będą tu dwie główne komendy: RESTORE odtworzenie fizycznego pliku z backup u; RECOVER zaaplikowanie zmian transakcyjnych z plików archivelog i redo Odtwarzać możemy całą bazę, lub pojedyncze pliki albo przestrzenie tabel takich sytuacjach konstrukcja odtwarzania mogłaby wyglądać następująco: RESTORE DATABASE; RECOVER DATABASE; Lub RESTORE DATAFILE <nr pliku> RECOVER DATAFILE <nr pliku> Lub RESTORE TABLESPACE <nazwa przestrzeni tabel> RECOVER TABLESPACE <nazwa przestrzeni tabel> W przypadku wątpliwości należy posłużyć się narzędziem RMAN ADVISOR. 6
Odtwarzanie do punktu w czasie ORA- 600 Kamil Stawiarski Jeśli zamierzamy odtworzyć bazę danych do punktu w czasie należy przeprowadzić pełne odtwarzanie bazy ręcznie. Przykładowa komenda: run { set until time to_date( 01-08-2012 12:00:00, DD-MM-YYYY HH24:MI:SS ) ; restore database; recover database; alter database open resetlogs; } Jeśli nastąpi błąd przy ustawieniu komendy until time, może być konieczne ustawienie zmiennej systemowej NLS_LANG, przed uruchomieniem narzędzia RMAN. Utrata plików kontrolnych W przypadku utraty wszystkich plików kontrolnych, należy przeprowadzić odtworzenie ręczne z użyciem narzędzia RMAN: 1. Zlokalizowanie najświeższego pliku backupset zawierającego backup pliku kontrolnego 2. Odtworzenie pliku kontrolnego: Restore controlfile from /pelna/sciezka/do/pliku/backupset ; Alter database mount; 3. Zakatalogowanie plików backup u lub archivelog, o których baza z tym plikiem kontrolnym może nie wiedzieć: Catalog start with /sciezka/do/katalogu/z/plikami ; 4. Następnie należy posłużyć się advisorem lub ręcznym odtwarzaniem bazy danych Przydatne polecenia RMAN: LIST BACKUPSET; wyświetla wszystkie pliki backup u ze statusami CROSSCHECK BACKUPSET; - sprawdza czy pliki backupset są dostępne na dysku, jeśli nie zostają one oznaczone statusem EXPIRED CROSSCHECK ARCHIVELOG ALL; - sprawdza czy pliki archivelog są dostępne na dysku, jeśli nie zostają one oznaczone statusem EXPIRED DELETE EXPIRED BACKUPSET; - usuwa z repozytorium wpisy o plikach backupset ze statusem expired DELETE EXPIRED ARCHIVELOG ALL; - usuwa z repozytorium wpisy o plikach archivelog ze statusem expired DELETE OBSOLETE RECOVERY WINDOW OF 10 DAYS; - usuwa wszystkie pliki backup u nie potrzebne do zachowania 10- dniowego okna odtwarzania 7
ORA- 600 Kamil Stawiarski DELETE ARCHIVELOG BACKED UP 1 TIMES TO DEVICE TYPE DISK; - usuwa plik archivelog, które zostały przynajmniej raz dołączone do backup u. Tworzenie bazy katalogowej Oracle. Baza katalogowa Oracle pozwala na przechowywanie metadanych backup u w osobnym schemacie Oracle, zmiast w pliku kontrolnym. Dzięki temu odtwarzanie jest znacznie uproszczone. Kroki potrzebne do stworzenia bazy katalogowej: 1. Instalacja serwera Oracle najlepiej na osobnym serwerze 2. Stworzenie schematu o dowolnej nazwie np. RMAN 3. Nadanie schematowi uprawnień: CONNECT, RESOURCE, RECOVERY_CATALOG_OWNER 4. Podłączenie się narzędziem RMAN do bazy target i catalog oraz wydanie poleceń: a. CREATE CATALOG; b. REGISTER DATABASE; 5. Następnie backup i odtwarzanie należy wykonywać, podłączając się jednocześnie do bazy katalogowej i targetowej. 8