1- Bütün datafile lar kaybedildiğinde, tüm yedeğin geri dönülmesi için;
2 |
RMAN> restore database ; |
3 |
RMAN> recover database ; |
4 |
SQL> alter database open ; |
2- Bir tablespace kaybedildiğinde, kaybedilen tablespace in geri dönülmesi için;
1 |
SQL> alter tablespace users offline; |
2 |
RMAN> restore tablespace users; |
3 |
RMAN> recover tablespace users; |
4 |
SQL> alter tablespace users online; |
Tablespace offline yapılamazsa aşağıdaki yol izlenmelidir.
1 |
$ sqlplus “/ as sysdba” |
4 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
5 |
RMAN> restore tablespace users; |
6 |
RMAN> recover tablespace users; |
7 |
SQL> alter database open ; |
3- Bir datafile kaybedildiğinde, kaybedilen datafile ın geri dönülmesi için;
1 |
SQL> alter database datafile '/oracle/oradata/users.dbf' offline; |
2 |
RMAN> restore datafile '/oracle/oradata/users.dbf' |
3 |
RMAN> recover datafile '/oracle/oradata/users.dbf' |
4 |
SQL> alter database datafile '/oracle/oradata/users.dbf' online; |
Datafile offline yapılamazsa aşağıdaki yol izlenmelidir.
1 |
$ sqlplus “/ as sysdba” |
4 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
5 |
RMAN> restore datafile '/oracle/oradata/users.dbf' ; |
6 |
RMAN> recover datafile '/oracle/oradata/users.dbf' ; |
7 |
SQL> alter database open ; |
4- Controlfile lar kaybedildiğinde, kaybedilen controlfile ın geri dönülmesi için;
1 |
$ sqlplus “/ as sysdba” |
4 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
5 |
RMAN> set dbid = 3970640872; |
6 |
RMAN> restore controlfile; |
7 |
SQL> alter database mount; |
8 |
SQL> alter database open ; |
Controlfile yedekten geri dönüldükten sonra, veritabanının açılması esnasında aşağıdaki gibi ORA-01589 hatası ile karşılaşılabilir.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
Bu durumda aşağıdaki işlemler yapılmalıdır.
3 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
4 |
RMAN> recover database ; |
5 |
SQL> alter database open resetlogs; |
Veritabanı “resetlogs” ile açıldığı için controlfile daki SCN numarası sıfırlanacaktır. Bu durumda önceki alınan yedekler geçersiz olacaktır. Yeniden full yedek alınması zorunludur.
5- Özel bir durum gerekebilir. Ve bizden belirli bir zamana dönmemiz istenebilir. Belirli bir zamana dönmek için 3 yöntem mevcuttur. Zamana göre, Arşiv sıra nosuna göre ve SCN (System Change Number) ye göre incomplete recovery (Belirli bir zamana dönme işlemi) yapabiliriz.
A. Zamana göre (Time-Based) incomplete recovery;
1 |
$ sqlplus "/ as sysdba" |
4 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
5 |
RMAN> restore database until time "to_date('06/05/11 12:0:00','DD/MM/YY HH24:MI:SS')" ; |
6 |
RMAN> recover database until time "to_date('06/05/11 12:0:00','DD/MM/YY HH24:MI:SS')" ; |
7 |
SQL> alter database open resetlogs; |
B. Sistem değişiklik numarasına göre (SCN-Based) incomplete recovery;
1 |
$ sqlplus "/ as sysdba" |
4 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
5 |
RMAN> restore database until scn 1000; |
6 |
RMAN> recover database until scn 1000; |
7 |
SQL> alter database open resetlogs; |
C. Arşiv dosyası sequence numarasına göre incomplete recovery;
1 |
$ sqlplus "/ as sysdba" |
4 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
5 |
RMAN> restore database until sequence 9923; |
6 |
RMAN> recover database until sequence 9923; |
7 |
SQL> alter database open resetlogs; |
6- Alınan yedekte arşiv dosyaları varsa ve belirli arşiv dosyalarının geri dönülmesi gerekirse;
1 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
2 |
RMAN> restore ARCHIVELOG FROM TIME 'SYSDATE-1' UNTIL TIME 'SYSDATE' ; |
Ya da
1 |
RMAN> restore ARCHIVELOG FROM TIME "to_date( '07/11/05 00:00:01' , 'MM/DD/YY HH24:MI:SS' ) |
7- Herhangi bir datafile ın bir bloğunda corruption oluşursa aşağıdaki gibi bir hata alınır ve ilgili datafile ın ilgili bloğu aşağıdaki gibi kurtarılır.
Hata:
ORA-01578: ORACLE data block corrupted (file # 8, block # 13)
ORA-01110: data file 8: ‘/oracle/oradata/users.dbf’
Kurtarmak için:
1 |
$ rman target / catalog_user/catalog_user_password@catalogdb |
2 |
RMAN>blockrecover datafile 8 block 13; |
Kurtarmak için özel bir backup set verebiliriz;
1 |
# backupset den kurtarma |
2 |
RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 FROM BACKUPSET; |
3 |
# image copy den kurtarma |
4 |
RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 |
6 |
# "FULL" taglı olan backupset den kurtarma |
7 |
RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 199 |
Backup esnasında veya “Backup Validate” komutuyla RMAN bulduğu corrupted blokları V$DATABASE_BLOCK_CORRUPTION viewına yazar. Corrupt olan blok recover edildiğinde RMAN otomatik bu view ı günceller. Geçmişe yönelik tüm corruption listesi V$BACKUP_CORRUPTION ve V$COPY_CORRUPTION viewlarından bakılabilir. Aşağıdaki komut çalıştırıldığında RMAN, V$DATABASE_BLOCK_CORRUPTION viewında bulunan tüm corrupted blokları recover eder.
1 |
RMAN>BLOCKRECOVER CORRUPTION LIST |
2 |
RESTORE UNTIL TIME 'SYSDATE-10' ; |
8- 2. veri dosyamızda problem olduğunda, 2. veri dosyamızı “image copy” yedeğe switch etmek için;
1 |
RMAN>sql ‘ alter database datafile 2 offline’; |
2 |
RMAN>switch datafile 2 to copy; |
3 |
RMAN>recover datafile 2; |
4 |
RMAN>sql ‘ alter database datafile 2 online’; |