27 Eylül 2013 Cuma

Standby Veri tabanında Fark(GAP) Problemi Çözme

Standby veritabanınız primary veritabanından geri kalmışsa(gap) önünüzde 2 seçenek var.
1. Elinizde o aradaki tüm archiveloglar varsa bunları stanby veritabanına taşıyarak bu farkı kolayca kapatabilirsiniz.
2. Eğer archiveloglardan bir kısmına ulaşamıyorsanız bu gap’i kapatmak için production veritabanından incremental backup alıp , alınan backup’ı standby’ apply ederek bu farkı kapatabilirsiniz.

Bunun adımları aşağıdaki gibidir;
1.standby veritabanı ve primary veritabanı için son scn numaralarını belirle. Bunu aşağıdaki şekilde yapabilirsiniz.
SQL>select current_scn from v$database;
Benim testimde production ve standby için aşağıdaki şekilde.
standby :11657291913
production:11697000123
Eğer isterseniz bu scn’nin hangi zamana denk geldiğini aşağıdaki şekilde görebilirsiniz.
select scn_to_timestamp(11657291913) from dual;

2. production veritabanından standby’ın kaldığı noktadan sonrası için incremental backup al. Örnek
run { 
allocate channel a1 type disk format ‘/backup/%U.rmb’; 
backup incremental from scn 11657291913 database;
release channel a1;
}

3. Bu alınan yedeği scp /backup/ standby_ip:/restore_location/ olacak şekilde standbyda bir lokasyona taşı.
Benim testimde restore_location=/u01/app/oracle/backup

4.Standby veritabanına taşınan yedeği tanıt.Bunun için
rman target /
RMAN> CATALOG START WITH ‘/u01/app/oracle/backup’;
5. Standby veritabanını recover et. Bu biraz zaman alabilir.
RMAN> RECOVER DATABASE NOREDO;
6.Primary veritabanından controlfile yedeği al ve stanby veritabanına taşı.
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT ‘/backup/backupcontrol.ctl’;
daha sonra
scp /backup/backupcontrol.ctl standby_ip:/restore_location/backupcontrol.ctl

7. Stanby veritabanını kapat ve nomount modda aç.
RMAN> shutdown
RMAN> startup mount;

8. Standby veritabanında controlfile’i backuptan restore et
RMAN> RESTORE STANDBY CONTROLFILE FROM ‘/restore_location/backupcontrol.ctl’;

9. Standby veritabanını kapat ve mount modda aç
RMAN> SHUTDOWN;
RMAN> STARTUP MOUNT;

10. Bu aşamada standby controlfile mevcut datafile’leri görmeyebilir. Onları catalog komutuyla tanıtmak gerekebilir. Bunun için standby veritabanında;
RMAN> CATALOG START WITH ‘<data file location>’;
RMAN> SWITCH DATABASE TO COPY;

11. Standby veritabanında LOG_FILE_NAME_CONVERT parametresini kontrol et, düzgün şekilde yapılandırılmış olması gerekir.
örnek 
LOG_FILE_NAME_CONVERT=’+DATA/PROD’,'+DATA/DG’ gibi.

12.Stanby veritabanında varolan tüm loggroupları clear et
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1; 
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2; 
..
SQL> ALTER DATABASE CLEAR LOGFILE GROUP x;

13. Daha sonra standby veritabanını recovery modda aç
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;


Alıntıdır;



Hiç yorum yok:

Yorum Gönder