Przykład skryptu powłoki Oracle RMAN Backup Shell

  • Vovich Masterovich
  • 0
  • 4002
  • 880

Wymagania wstępne

1. Utwórz bazę danych katalogu (rmancat), jeśli taka nie istnieje. (Z dodatkowymi obszarami tabel UNDO-, USERS- i TEMP)

2. Skonfiguruj SQL * Net do obsługi połączeń z katalogiem (rmancat) i „docelową” bazą danych.

3. Utwórz użytkownika „RMAN” w bazie danych katalogu.

SQL> utwórz użytkownika rman określonego przez rman domyślny obszar tabel USERS nieograniczony przydział tymczasowy dla użytkowników tymczasowy obszar tabel TEMP;
SQL> przyznaj recovery_catalog_owner do rman;

4. Utwórz katalog RMAN w bazie danych katalogu.

$ rman katalog rman / rman @ rmancat RMAN> utwórz katalog;

5. Zarejestruj docelową bazę danych w katalogu. Ustaw środowisko (ORACLE_HOME, ORACLE_SID i PATH) na docelową bazę danych.

$ rman katalog rman / rman @ rmancat target / RMAN> baza danych rejestru;

6. Uprawnienia dostępu:
- Użytkownik będący członkiem grupy dba.
- Zezwolenie na zapis w katalogu, w którym będą przechowywane kopie zapasowe podczas tworzenia kopii zapasowych na dysku.

Wykorzystanie skryptu

Użycie: backup_database [sid] [backup_type] gdzie, sid = ORACLE_SID instancji docelowej, której kopia zapasowa ma zostać utworzona backup_type = dysk | taśma

Przykład:

% backup_database v112 taśma #### Kopia zapasowa bazy danych v112 na taśmie

lub

% backup_database v112 dysk #### Utwórz kopię zapasową bazy danych v112 na dysku

Instrukcje

1. Sprawdź, czy katalog działa i możesz połączyć się jako rman przez sqlnet.

% sqlplus rman / rman @ rmancat

2. Korzystając z tych informacji, aby połączyć się z katalogiem za pośrednictwem sqlplus, ustaw następujące parametry w skrypcie.

rman_id = rman # identyfikator użytkownika RMAN rman_pw = rman # hasło RMAN catalog_alias = rmancat # Skrypt połączenia katalogu z tnsnames.ora 

3. Określ, której instancji chcesz utworzyć kopię zapasową (miejsce docelowe). Docelowa instancja do utworzenia kopii zapasowej musi być wymieniona w następującym pliku

Dla Solaris: / var / opt / oracle / oratab
W przypadku systemów AIX, HPUX, Linux, HP Tru64: / etc / oratab

4. Określ ustawienie nls instancji docelowej dla parametru nls_lang.

SQL> wybierz wartość z v $ nls_parameters gdzie parametr = 'NLS_LANGUAGE'; SQL> wybierz wartość z v $ nls_parameters gdzie parametr = 'NLS_TERRITORY'; SQL> wybierz wartość z v $ nls_parameters gdzie parametr = 'NLS_CHARACTERSET';

5. Użyj powyższych informacji nls, aby edytować skrypt w celu zmiany parametru zestawu znaków.

charset = "LANGUAGE_TERRITORY.CHARACTERSET" # Zestaw znaków bazy danych

6. Określ, czy kopia zapasowa będzie na dysku czy na taśmie.
- Jeśli na dysk
a) Określ lokalizację, do której trafi kopia zapasowa, i sprawdź, czy masz uprawnienia do zapisu w katalogu.
b) Edytuj skrypt, aby zmienić zmienną „backup_dir” w celu odzwierciedlenia tego katalogu

- Jeśli chcesz nagrać
a) Sprawdź, czy taśma jest zamontowana.
b) Uruchom następujące polecenie, aby sprawdzić, czy Oracle może komunikować się z warstwą zarządzania nośnikiem taśmowym

% $ ORACLE_HOME / bin / sbttest test 

7. Uruchom skrypt.

UWAGA: Jeśli instancja nie jest podłączona lub otwarta podczas wykonywania skryptu, utworzy kopię zapasową tylko plików danych, a nie kopii zapasowych dzienników archiwalnych, jeśli istnieją. W ten sposób instancja zostanie otwarta w trybie montowania w celu wykonania kopii zapasowej i pozostanie w tym stanie, chyba że kod „Przywróć do trybu oryginalnego” nie zostanie skomentowany.

Skrypt RMAN

#! / bin / sh # Parametry zdefiniowane przez użytkownika charset = "AMERICAN_AMERICA.WE8ISO8859P15" # Zestaw znaków bazy danych katalog_zapasowy = / mnt_pt / bkup # Katalog z powrotem do kopii zapasowej dysku rman_id = rman # ID użytkownika RMAN rman_pw = rman # hasło RMAN katalog_alias = rmancat # Połączenie z katalogiem skrypt z tnsnames.ora # # Parametry inicjalizacji # if [-z "$ 1" -o -z "$ 2"]; następnie echo "" echo "BŁĄD: nieprawidłowa liczba argumentów" echo "Użycie: backup_database  "exit fi sid = $ 1 # źródłowa baza danych backup_type = $ 2 # Typ kopii zapasowej: dysk lub taśma # # Główny # plik wyjściowy = / tmp / $$$ sid.bck # # Konfiguracja środowiska do źródłowej bazy danych # Wymaga: oraenv => musi być znaleziony jako plik wykonywalny # / var / opt / oracle / oratab lub / etc / oratab => Musi zawierać źródłową bazę danych # ORACLE_SID = $ sid; eksport ORACLE_SID ORAENV_ASK = NO; eksport ORAENV_ASK. oraenv unset ORAENV_ASK # # Ustaw zestaw znaków na zestaw znaków bazy danych: # do pomijania komunikatów o błędach RMAN dotyczących tego problemu # NLS_LANG = $ charset; eksport NLS_LANG # # Inicjalizacja zmiennych # db_status = "ZAMKNIĘTE" archive_log = "NOARCHIVELOG" log_seq = 0 # # Sprawdź stan bazy danych # pmon = „ps -ef | egrep pmon_ $ ORACLE_SID | grep -v grep "if [" $ pmon "=" "]; to db_status =" ZAMKNIĘTE "else db_status =" sqlplus -s "/ as sysdba" < $ outputfile echo "connect catalog $ rman_id / $ rman_pw @ $ catalog_alias" >> $ outputfile echo "connect target /" >> $ outputfile # # Instancja musi być uruchomiona w trybie montowania, aby wykonywać kopie zapasowe. Zamontuj instancję #, jeśli jest zamknięta lub w trybie nomount. # echo "" >> $ outputfile if [$ db_status = "CLOSED"]; następnie echo "montowanie startowe;" >> $ outputfile fi echo "" >> $ outputfile if [$ db_status = "STARTED"]; następnie echo "zmień montowanie bazy danych;" >> $ outputfile fi # # Rozpocznij proces tworzenia kopii zapasowej # echo "run" >> $ outputfile echo "" >> $ outputfile # # Jeśli baza danych nie działa w ARCHIVELOG, musi to być kopia zapasowa na zimno, więc zamknięcie bazy danych jest wymagane. # Odkomentuj następujący kod, aby dodać kod w tym celu. # - początek kodu zamknięcia #if [$ archive_log = "NOARCHIVELOG" -a $ db_status = "OPEN"]; następnie # echo "natychmiastowe zamknięcie;" >> $ plik wyjściowy # echo "montowanie startowe;" >> $ outputfile # echo "" >> $ outputfile #fi # - Koniec kodu zamykania # W przeciwnym razie program zostanie zakończony, aby użytkownik mógł ręcznie # zamknąć instancję w razie potrzeby. Jeśli powyższy kod do automatyzacji # shutdown jest używany, zakomentuj sekcję zakończenia poniżej. # - Rozpocznij kod zakończenia, jeśli [$ archive_log = "NOARCHIVELOG" -a $ db_status = "OPEN"]; then echo "Baza danych działa w trybie NOARCHIVELOG i musi być najpierw zamknięta" echo ", aby wykonać zimną kopię zapasową. Zakończenie backup_database." rm $ outputfile exit fi # - End termination code # # W zależności od argumentu backup_type: # Wybierz żądaną alokację kanału # if [$ backup_type = "tape"]; następnie echo "przydziel kanał ch1 type 'sbt_tape';" >> $ outputfile else echo "przydziel kanał typu ch1 dysk;" >> $ outputfile fi echo "" >> $ outputfile echo "" >> $ outputfile echo "backup" >> $ outputfile # # W zależności od argumentu backup_type: # Wybierz żądany format. # W przypadku kopii zapasowej na dysku: jest to ścieżka, w której kopia zapasowa zostanie # umieszczona. # if [$ backup_type = "dysk"]; następnie echo "format '$ backup_dir /% d_t% t_s% s_p% p'" >> $ outputfile else echo "format '% d /% d_t% t_s% s_p% p'" >> $ outputfile fi echo "filesperset = 4 ">> $ plik_wyjściowy # # kopie zapasowe dzienników archiwalnych zawsze na dysk i na żądanie na taśmę. # if [$ archive_log = "ARCHIVELOG"]; następnie echo "baza danych plus zestaw plików archiwum 12;" >> $ outputfile echo "" >> $ outputfile if [$ backup_type = "tape"]; następnie echo "zwolnij kanał ch1;" >> $ outputfile echo "przydziel kanał typu ch1 dysk;" >> $ outputfile echo "backup" >> $ outputfile echo "format '$ backup_dir /% d_al_t% t_s% s_p% p'" >> $ outputfile echo "filesperset = 12" >> $ outputfile echo "(archiwum do czasu ' sysdate - 3 '">> $ outputfile echo" usuń wejście); " >> $ outputfile echo "" >> $ outputfile else echo "usuń archiwum do czasu 'sysdate - 3' zarchiwizowano 1 razy na dysk typu urządzenia;" >> $ outputfile fi else echo "database;" >> $ outputfile echo "" >> $ outputfile fi # # Przywróć instancję do trybu oryginalnego. # Odkomentuj następujący kod, aby przywrócić instancję do trybu zamknięcia lub nomount. # - Rozpocznij przywracanie kodu #if [$ db_status = "ZAMKNIĘTE" -o $ db_status = "ROZPOCZĘCIE"]; następnie # echo "wyłącz natychmiast;" >> $ plik_wyjściowy # if [$ db_status = "STARTED"]; następnie # echo "start nomount;" >> $ outputfile # fi #fi # - Zakończ przywracanie kodu echo "" >> $ outputfile echo "release channel ch1;" >> $ outputfile echo "" >> $ outputfile # # Wykonaj utworzony skrypt za pomocą rman. # logfile = / tmp / rman_ $ sid.log rm $ logfile 2> / dev / null rman cmdfile = $ outputfile msglog = $ logfile echo "" echo "Tworzenie kopii zapasowej rman dla $ sid zakończyło się, a wyniki zostały zapisane do pliku $ logfile. " echo "" rm $ plik wyjściowy

Przykładowe wyjście

Oto przykładowe dane wyjściowe z wykonania skryptu:

Recovery Manager: wersja 11.2.0.2.0 - produkcja: czw. 15 marca, 16:59:21 2012 Copyright (c) 1982, 2009, Oracle i / lub jej podmioty stowarzyszone. Wszelkie prawa zastrzeżone. RMAN> # 2> połącz katalog * 3> połącz cel * 4> 5> 6> uruchom 7> 8> przydziel kanał typu ch1; 9> 10> 11> kopia zapasowa 12> format '/ u01 / oradata / rzy /% d_t% t_s% s_p% p' 13> filesperset = 4 14> baza danych plus archiwum zestaw plików 12; 15> 16> usuń archiwum do czasu sysdate - 3 razy zarchiwizowano 1 raz na dysk typu urządzenia; 17> 18> zwolnij kanał ch1; 19> 20> połączono z bazą danych katalogu odtwarzania połączoną z docelową bazą danych: V1122 (DBID = 4126790627) przydzielony kanał: kanał 1 kanał 1: SID = 146 typ urządzenia = DYSK Rozpoczęcie tworzenia kopii zapasowej o 15 marca 2012 16:59:25 w bieżącym dzienniku zarchiwizowany kanał kanał 1: rozpoczęcie zarchiwizowanego dziennika zestawu kopii zapasowych kanał kanał 1: określanie zarchiwizowanych dzienników w zestawie kopii zapasowych wejście zarchiwizowany dziennik wątek = 1 sekwencja = 4900 RECID = 5511 STAMP = 772265173… wejście zarchiwizowany wątek dziennika = 1 sekwencja = 4910 RECID = 5532 STAMP = 772534947 kanał kanał 1: element początkowy 1 o 15-MAR-2012 16:59:32 kanał kanał 1: gotowy element 1 o 15-MAR-2012 17:02:28 element uchwyt = / u01 / oradata / rzy / V1122_t778006893_s1186_p1 tag = TAG20120315T165930 komentarz = BRAK kanał kanał 1: tworzenie kopii zapasowej zakończone, czas, który upłynął: 00:00:55 Kopia zakończona 15 marca 2012 17:02:28 Rozpoczęcie tworzenia kopii zapasowej 15 marca 2012 17:17:59 kanał kanał 1: rozpoczęcie pełnego pliku danych Kanał zestawu kopii zapasowych kanał 1: określanie plików danych w zestawie kopii zapasowych numer pliku wejściowego pliku danych = 00002 nazwa = / u01 / oradata / v1122 / V1122 / datafile / o1_mf_sysaux_6c0tltsv_.dbf inp ut numer pliku danych = 00004 nazwa = / u01 / oradata / v1122 / V1122 / datafile / o1_mf_undotbs1_6c0tohcs_.dbf wejściowy numer pliku danych = 00003 nazwa = / u01 / oradata / v1122 / V1122 / datafile / o1_mof_006s name = / u01 / oradata / v1122 / V1122 / datafile / o1_mf_users_6jycwgkf_.dbf kanał kanał 1: część początkowa 1 o 15 marca 2012 17:18: 02… kanał kanał 1: zakończona część 1 o 15 marca 2012 17:24: 02 element uchwyt = / u01 / oradata / rzy / V1122_t778008017_s1190_p1 tag = TAG20120315T171759 komentarz = BRAK kanał kanał 1: zestaw kopii zapasowych zakończony, czas, który upłynął: 00:03:46 kanał kanał 1: rozpoczęcie pełnego zestawu kopii zapasowej pliku danych kanał kanał 1: określenie pliku (ów) danych w zestaw kopii zapasowej zawierający bieżący plik kontrolny w zestawie kopii zapasowej zawierający bieżący plik SPFILE w zestawie kopii zapasowej kanał 1: część początkowa 1 o 15 marca 2012 17:24:06 kanał kanał 1: ukończona część 1 o 15 marca 2012 17:24:11 część handle = / u01 / oradata / rzy / V1122_t778008243_s1191_p1 tag = TAG20120315T171759 komentarz = BRAK kanał kanał1: kopia zapasowa zakończona, czas, który upłynął: 00:00:05 Finishe d kopia zapasowa 15 marca 2012 17:24:11 Rozpoczynanie tworzenia kopii zapasowej 15 marca 2012 17:24:12 bieżący log zarchiwizowany kanał kanał 1: uruchamianie zarchiwizowanego dziennika tworzenia kopii zapasowej kanał kanał 1: określanie zarchiwizowanych dzienników na wejściu zestawu kopii zapasowych zarchiwizowany wątek dziennika = 1 sekwencja = 4926 RECID = 5548 STAMP = 778008252 kanał 1: początek 1 o 15 marca 2012 17:24:17 kanał 1: skończona część 1 o 15 marca 2012 17:24:18 część uchwyt = / u01 / oradata / rzy / V1122_t778008257_s1192_p1 tag = TAG20120315T172415 komentarz = BRAK kanał kanał 1: zestaw kopii zapasowych zakończony, czas, który upłynął: 00:00:01 Kopia zapasowa zakończona 15 marca 2012 17:24:18 specyfikacja nie pasuje do żadnego zarchiwizowanego dziennika w kanale opublikowanym w repozytorium: ch1 Recovery Manager zakończony.




Jeszcze bez komentarzy

Zbiór przydatnych informacji o systemie operacyjnym Linux i nowych technologiach
Świeże artykuły, praktyczne wskazówki, szczegółowe recenzje i poradniki. Poczuj się jak w domu w świecie systemu operacyjnego Linux