Pokazywanie postów oznaczonych etykietą RMAN ORACLE. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą RMAN ORACLE. Pokaż wszystkie posty

środa, 20 maja 2015

Tryb Archivelog

Włączenie trybu archivelog
wpisujemy do konsoli

rman target /
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
SQL "ALTER DATABASE ARCHIVELOG";
ALTER DATABASE OPEN;



Wyłączenie trybu archivelog

rman target /
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
SQL "ALTER DATABASE NOARCHIVELOG";
ALTER DATABASE OPEN;


Sprawdzenie stanu czy archivelog jest wyłączony
 

logujemy się do SQLPlus
wpisujemy


select log_mode from v$database;

Wykonanie backupu przed usunięciem dzienników

rman target /
crosscheck archivelog all;
backup archivelog all delete input;

Usunięcie starych dzienników

rman target /
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate-1';


Ustawienie zapisu archivelog
np:
SET ARCHIVELOG DESTINATION TO '/oracle/temp_restore';

Wyświetlenie zawartości dzienników

ls -lh /u01/flash_recovery_area/INSTANCJA/archivelog/2014_01_02/

total 1012M
-rw-r----- 1 oracle oinstall 42M Jan  2 10:22 o1_mf_1_10_9dbcz0kd_.arc
-rw-r----- 1 oracle oinstall 44M Jan  2 10:22 o1_mf_1_11_9dbcz9kt_.arc
-rw-r----- 1 oracle oinstall 48M Jan  2 10:22 o1_mf_1_12_9dbczlf6_.arc
-rw-r----- 1 oracle oinstall 42M Jan  2 10:23 o1_mf_1_13_9dbczvld_.arc
-rw-r----- 1 oracle oinstall 39M Jan  2 10:34 o1_mf_1_14_9dbdo2hk_.arc

........

Archivelog czyszczenie dzienników

Czyszczenie dzienników

Skrypt sh czyszczenie
#!/bin/bash
find /u01/flash_recovery_area/XE/archivelog/ -type d -mtime +1 | xargs rm -R
$ORACLE_HOME/bin/rman target / @/home/oracle/bin/czysc.sql


skrypt ten oprócz usunięcia starych plików archiwum pozostawia archiwum z dwóch ostatnich dni oraz uruchamia skrypt SQL czysc.sql -który wywala stare wpisy archiwum.

Skrypt SQL czysc

crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
 

W terminalu wpisujemy crontab-e

ustawienia crontab
#W każdą sobotę w nocy o godz 0.30
# usuwanie archivelog
30 0 * * 6 /home/oracle/bin/czyszczenie.sh


lub

# usuwanie archivelog pon-piat godz 23.15
15 23 * * 1-5 /home/oracle/bin/czyszczenie.sh 




wtorek, 19 maja 2015

RMAN podstawy Odtworzenie bazy danych Oracle po awarii



Logowanie

Oprócz poniżej opisywanych metod możemy logować się stosując

do SQLPlus
sqlplus / as sysdba

do RMAN
rman target /


1. Odtworzenie bazy danych Oracle po awarii


Logujemy się do RMAN

rman TARGET SYS/Password NOCATALOG

potem zamykamy bazę i uruchamiamy w trybie mount

RMAN:> shutdown immediate;
RMAN:> startup mount;


przywracamy do stanu z konkretnej daty

RMAN> run
{
allocate channel dev1 type disk;
set until time "to_date('2011-12-30:00:00:00', 'yyyy-mm-dd:hh24:mi:ss')";
restore database;
recover database; }

 
otwieramy bazę resetując dzienniki zdarzeń

RMAN> alter database open resetlogs;

W kolejnym punkcie szczegółowy opis

2. Jak wykonać Backup pełny i różnicowy bazy danych Oracle (XE).

Baza musi być w trybie ARCHIVELOG. Aby to sprawdzić, w jakim trybie
jest baza, należy połączyć się do SQLPlus na konto SYS, wpisując w terminalu

sqlplus sys/haslo as sysdba

wykonujemy zapytanie

SQL> SELECT LOG_MODE FROM SYS.V$DATABASE;

Jeśli baza jest w trybie NOARCHIVELOG, to należy przełączyć ją w tryb ARCHIVELOG:

wykonujemy polecenia

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> exit;

wychodzimy z SQLPlus

Przechodzimy do narzędzia RMAN logujemy się na konto SYS

wpisujemy

RMAN

a następnie

RMAN> connect target sys/haslo

Włączenie automatycznych kopii pliku kontrolnego
Kiedy zostanie nawiązane połączenie z bazą należy wykonać

RMAN> configure controlfile autobackup on

Prawidłowe działanie backupu bazy wymaga wykonanie przynajmniej jednego backupu pełnego. Wykonujemy następujące polecenie, przy założeniu, że {path} jest ścieżką do folderu do którego zapisywane będą pliki backupu. Folder taki musimy wcześniej utworzyć w wybranym przez siebie miejscu na dysku.

run {
backup incremental level 0 as compressed backupset
spfile format '{path}/%d_%I_%s_FULL_%U.spfile'
database format '{path}/%d_%I_%s_FULL_%U.database'
plus archivelog delete all input format
'{path}/%d_%I_%s_FULL_%U.archivelog';
backup as compressed backupset current controlfile format
' {path}/%d_%I_%s_FULL_%U.controlfile';
}

Po wykonaniu backupu pełnego możliwe jest wykonywanie backupów różnicowych.
Aby wykonać backup różnicowy musimy w narzędziu RMAN wykonać poniższe polecenie. Podobnie jak w przypadku pełnego {path} jest ścieżką do folderu do którego zapisywane będą pliki backupu.

run {
backup incremental level 1 as compressed backupset
spfile format '{path}/%d_%I_%s_DIFF_%U.spfile'
database format '{path}/%d_%I_%s_DIFF_%U.database'
plus archivelog delete all input format
'{path}/%d_%I_%s_DIFF_%U.archivelog';
backup as compressed backupset current controlfile format
'{path}/%d_%I_%s_DIFF_%U.controlfile';
}

3. Odtwarzanie bazy Oracle (XE) 

Odtworzenie bazy danych z wykonanego backupu, na docelowym hoście musi spełniać następujące warunki konieczne
  • ta sama wersja Oracle, 
  • baza danych musi mieć tę samą nazwę,  
  • struktura wszystkich katalogów bazy danych musi być taka sama jak na oryginalnym hoście.  
  • pliki backupu muszą znajdować w takiej samej ścieżce do której zostały utworzone.

logujemy się na konto SYS i wpisujemy:

RMAN

a następnie:

RMAN> connect target sys/haslo

również możemy zalogować w następujący sposób


RMAN> rman target /

Po zalogowaniu należy wykonywać kolejne polecenia:

RMAN> shutdown immediate;
RMAN> set dbid {DBID};
(parametr DBID widoczny jest po zalogowaniu do bazypoleceniem RMAN)
RMAN> startup force nomount;
 
Następnie przy założeniu, że {SpfilePath}będzie pełną ścieżką do pliku o rozszerzeniu .spfile znajdującego się w folderze {path},najświeższy plik spfile, a{tmp}będzie dowolnym folderem tymczasowym, wykonujemy polecenia:

RMAN> restore spfile to pfile '{tmp}/init.ora'from'{SpfilePath}';RMAN> shutdown immediate;RMAN> startup nomount pfile='{tmp}/init.ora';
 
Następnie przy założeniu, że {ControlfilePath} będzie pełną ścieżką do pliku o rozszerzeniu .controlfile znajdującego się w folderze {path},najświeższy plik controlfile , wykonać polecenia:
 
RMAN> restore controlfile from '{ControlfilePath}';RMAN> alter database mount;
 
Następnie dla każdego pliku w folderze {path}należy wykonać poniższą komendę, wstawiając pod {FilePath} pełną ścieżkę pliku.
 
RMAN> catalog backuppiece '{FilePath}';
 
Następnie należy wykonywać kolejno polecenia:

RMAN> restore database;
RMAN> recover database;
RMAN> sql 'create spfile from pfile';
RMAN> alter database open resetlogs;
RMAN> shutdown immediate;
RMAN> startup;RMAN> exit; 


To już wszystko