5 Ağustos 2009 Çarşamba

RMAN Recovery

select table_name, tablespace_name from user_tables;
example tablespace siliyoruz.
select * from job_history;
hata verecektir.
bu konuda kullıcılardan ekran görüntüsü şart!!!
çalışan veritabanında illa yedekten donulmesi şart değil. test sunucuya gidip restore edip
hangi zaman aralığında veri kaybolduysa export edip appli sunucuya import edebiliriz.
tablespace düşürdüğümüz için sunucuyu kapatmaya gerek yok.

DataFile Recover Etmek:

1) hr ile bağlanıp employees tablosunu sorgulayalım:

sqlplus hr/hr@orcl

set pagesize 5000;

select * from employees;

2) Enterprise Manager ile employees tablosunun tablespace’ini önce offline yapıp sonra düşürelim.

3) SQL Plus’da 1.sıradaki sorguyu tekrar çalıştırıp employees tablosunun gittiğini görelim. Hangi datafile’ın eksik olduğunu numarasıyla birlikte söyleyecek.

4) datafile’ı rman ile recover edelim:

rman target sys/oracle@orcl;
restore datafile 5;
recover datafile 5;

RMAN> SQL ‘alter tablespace example online’;

Bu adımları tablespace üzerinden de yapabiliriz:

rman target sys/sarar@orcl;
restore tablespace EXAMPLE;
recover tablespace EXAMPLE;

RMAN> SQL ‘alter tablespace example online’;


5) Datafile’ın gelip gelmediğini görmek için 1.sıradaki sorguyu tekrar çalıştıralım.



Database Recover Etmek:

6) 1. sırdaki sorguyu çalıştırın.

7) shutdown abort komutu ile veritabanını kapatın.
oradata\orcl altındaki sonu *.dbf ile biten tüm dosyaları silin.
veritabanını startup mount komutuyla (RMAN> startup mount ) açın.

8) tüm veritabanını recover edelim:

rman target sys/oracle@orcl
restore database;
recover database;
alter database open;

9) 1. işlemdeki sorguyu çalıştırın:


INCOMPLETE RECOVERY:

Online redo logların olduğu hard disk göçerse, archived loglardan birkaç tanesi ya da hepsi kayıpsa, control file’ı kaybettiyseniz incomplete recovery yapmanız gerekir:

10) 1. sıradaki işlemi yapınız.

11) sys olarak bağlanıp dbid’yi alalım. Bu dbid’yi bir yere not edelim, çünkü control file’ı sileceğiz ve bu dbid ile geri dönebileceğiz.

Connect sys/oracle@orcl as sysdba
SELECT dbid
FROM v$database;

12) shutdown abort komutu ile veritabanını kapatın.
oradata\orcl altındaki tüm dosyaları silin.

13) 1.sıradaki işlemi çalıştırmaya ya da veritabanını açmaya çalışın.

14) RMAN’de aşağıdaki komutları yazın:

DOS> RMAN

SET DBID X;
CONNECT TARGET SYS/oracle@orcl;
STARTUP NOMOUNT;
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'c:\vtyedek\%F';
RESTORE CONTROLFILE FROM AUTOBACKUP;

PWD dosyasını d:\oracle\ora92\database altına kopyala
NLS_LANG SERVERLA Aynı olsun.
Not: Bir kaldırdığın backuptan tekrar kaldıramazsın.(O yüzden recovery yapmadan önce yedeğin yedeğini al). Veritabanını kaldırdığın backup geçersiz olacak. O yüzden ayağa kalktıktan sonra backup almakta fayda var.

STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;

Online redo loglarda kayıp olduğu için sonunda RMAN hataları oluşacak.

15) Online redo loglar kayıp olduğu için veritabanını onlar olmadan ve sequence’i sıfırlayarak açıyoruz.

RMAN> ALTER DATABASE OPEN RESETLOGS;




16) 1. sıradaki işlemi yapın :)

17) 4-5 kere switch yaparak biraz archive log üretelim.

alter system switch logfile;

/
/
/
/


18) rman’e bağlanıp backup ihtiyacı olan dosyalara bakalım.

rman target sys/oracle@orcl
RMAN> report need backup;

19) rman de yedek alalım.

rman> backup database plus archivelog;

20) eski dosyaları silelim.

rman> report obsolete;
rman> delete obsolete;

delete noprompt obsolete;

alter database backup controlfile to trace;

2 yorum:

  1. Merhaba FERHAN incomplate recovery kısmında sys ile bağlanıp database'i açalım ve DBID yi alalım demişsin ama ben denedim olmadı control file olmadığı için database id sini bulamadım bu durumda nasıl bir kurtarma yapmamız gerekir. Hatta database hiçbir şekilde açılmıyor...

    YanıtlaSil
  2. kardes kusura bakma yeni gordum... RESTORE CONTROLFILE FROM AUTOBACKUP dedikten sonra ne hatasi alıyorsun?

    YanıtlaSil