Pages

15 Ocak 2011 Cumartesi

Bozuk veya kayıp arşiv log dosyası sonrası standby veritabanını geri kurtarma

Fiziksel standby veritabanı, primary veritabanından kendisine arşivlenmiş logların sürekli uygulanması ve bu senkronizasyonun sürekli devam etmesi esasına dayanmaktadır. Oracle 10g öncesinde arşivlenmiş loglardan birinin kaybolması veya bozulması durumunda standby veritabanının yeniden inşa edilmesi gerekmekteydi.

Ancak, Oracle 10g sürümünden itibaren kayıp veya bozulmuş arşiv loglarla karşılaşıldığında artalan yedekten standby veritabanını geri kurtarabilmekteyiz.

Aşağıdaki senaryoda uygulanacağı üzere standby veritabanına senkronize edilmesi gereken 234 ve 235 sıra numaralı arşivlenmiş loglar primary veritabanından kazara silinmiştir. Şimdi bu durumda standby veritabanını geri yükleme ve çalışmaya devam etmesini adım adım inceleyelim.


1. Standby veritabanında en son SCN numarasını kontrol edelim.

SQL>select current_scn from v$database;
CURRENT_SCN
----------------------
5486525

2. Primary veritabanında yukardaki SCN numarasından  artalan yedek oluşturalım.
SQL>rman target /
Recovery Manager: Release 10.2.0.2.0 - Production on Mon Jan 10 13:39:04 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORCL (DBID=318347637)


RMAN> BACKUP DEVICE TYPE DISK INCREMENTAL FROM SCN 5486525 DATABASE FORMAT '/tmp/oracle/bkup_%U';

Starting backup at 10/JAN/11
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/U01/APP/ORACLE/ORADATA/ORCL/SYSTEM01.DBF
input datafile fno=00002 name=/U01/APP/ORACLE/ORADATA/ORCL/UNDOTBS01.DBF
input datafile fno=00003 name=/U01/APP/ORACLE/ORADATA/ORCL/SYSAUX01.DBF
input datafile fno=00004 name=/U01/APP/ORACLE/ORADATA/ORCL/USERS01.DBF
channel ORA_DISK_1: starting piece 1 at 10/JAN/11
channel ORA_DISK_1: finished piece 1 at 10/JAN/11
piece handle=/tmp/oracle/BKUP_02I0NSNE_1_1 tag=TAG20110110T134102 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
including current SPFILE in backupset
channel ORA_DISK_1: starting piece 1 at 10/JAN/11
channel ORA_DISK_1: finished piece 1 at 10/JAN/11
piece handle=/tmp/oracle/BKUP_03I0NSOI_1_1 tag=TAG20110110T134102 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 10/JAN/11


3. Standby veritabanında “managed recovery” modunu iptal edelim.

SQL>recover managed standby database cancel;
Media recovery complete.

4. Standby veritabanında artalan yedek dosyasını kataloglayalım.

SQL>rman target /
Recovery Manager: Release 10.2.0.2.0 - Production on Mon Jan 10 13:39:04 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORCL (DBID=318347637, not open)


RMAN> CATALOG START WITH '/tmp/oracle';

searching for all files that match the pattern /tmp/oracle
List of Files Unknown to the Database
=====================================
File Name: /tmp/oracle/BKUP_02I0NSNE_1_1
File Name: /tmp/oracle/BKUP_03I0NSOI_1_1

Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /tmp/oracle/BKUP_02I0NSNE_1_1
File Name: /tmp/oracle/BKUP_03I0NSOI_1_1


5. Bu alınan artalan yedeği standby veritabanına uygulayalım.

RMAN> RECOVER DATABASE NOREDO;

Starting recover at 10/JAN/11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=151 devtype=DISK
channel ORA_DISK_1: starting incremental datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /U01/APP/ORACLE/ORADATA/ORCLSTDY/
SYSTEM01.DBF
destination for restore of datafile 00002: /U01/APP/ORACLE/ORADATA/ORCLSTDY/
UNDOTBS01.DBF
destination for restore of datafile 00003: /U01/APP/ORACLE/ORADATA/ORCLSTDY/
SYSAUX01.DBF
destination for restore of datafile 00004: /U01/APP/ORACLE/ORADATA/ORCLSTDY/
USERS01.DBF
channel ORA_DISK_1: reading from backup piece /tmp/oracle/BKUP_02I0NSNE_
1_1
channel ORA_DISK_1: restored backup piece 1
piece handle=/tmp/oracle/BKUP_02I0NSNE_1_1 tag=TAG20110110T134102
channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
Finished recover at 10/JAN/11


6. Standby veritabanını tekrar “managed recovery” moduna sokalım.

SQL>recover managed standby database nodelay disconnect;
Media recovery complete.
From the alert.log you will notice that the standby database is still looking for the old log files
*************************************************
FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence 234-234
DBID 318347637 branch 600609988
**************************************************


Yukardaki hata mesajının alınmasının sebebi standby kontrol dosyasının henüz güncellenmemiş olmasıdır. Böylece standby kontrol dosyasını yeniden oluşturuyoruz.

Primary veritabanında;

SQL>alter database create standby controlfile as '/tmp/standby01.ctl';
System altered.

/tmp/standby01.ctl dosyasını primary veritabanından standby veritabanının bulunduğu sunucuya kopyalıp standby veritabanını “managed recovery” modda yeniden başlatıyoruz ve alttaki mesajı alıyoruz.

Managed Standby Recovery not using Real Time Apply
parallel recovery started with 2 processes
Media Recovery Waiting for thread 1 sequence 234


Yukardaki mesajdada belritildiği üzere standby bizden uygulamamız için sonraki arşiv log dosyalarını talep ediyor.

0 yorum:

Yorum Gönder