7 Aralık 2010 Salı

Rman Catalog Database’ i Kullanarak, Kartuşa Alınan Backupı Farklı bir Sunucuya Dönme -2


kaldığımız yerden devam ediyoruz ;

·        Sıra datafile’ leri restore/recover etmeye geldi ;

Pathler backupı alınan database’ deki pathler ile aynı olmadığından öncelikle bu değişikliği yapmamız gerekiyor.

Aşağıdaki script ile datafile’ leri bizim belirttiğimiz yeni lokasyonlarına restore ediyoruz.

Bundan sonraki kısım aslında iki aşamalı olarak düşünebiliriz, birinci aşamamız restore, sonraki aşamamız ise recover aşamasıdır.  Datafile’ ler restore edilirken farklı seuence numaralarına sahip olarak restore edilir, yani db içerisindeki tün datafile’ lerin sequence değerleri biririnden farklılık gösterecektir. Bu farklılığı ortadan kaldırıp max sequence değeri altında datafile’ lerin hepsini aynı noktaya çeken işlem ise recover aşamasıdır. Bu konuyla  ilgili olarak aşağıdaki iki script ve arasındaki fark aslında konuyu açıklamak için yeterli diye düşünüyorum.

Aşağıdaki scripti çalıştırdığımda restore işleminin en sonunda  “RMAN-06054: media recovery requesting unknown log: thread 1 seq 686 lowscn 2858652“  böyle bir hata verdi. Almış olduğumuz backup full backupdı ve backuplanan son archive log numarası 684 idi. Recover işlemini hangi sequence değerine kadar yapılmasını belirtmediğim için aşağıdaki hatayı aldım.

RMAN> run {
2> allocate channel 'dev_0' type 'sbt_tape';
3> allocate channel 'dev_1' type 'sbt_tape';
4> allocate channel 'dev_2' type 'sbt_tape';
5> allocate channel 'dev_3' type 'sbt_tape';
6> set NEWNAME for datafile 1 to '/data/oracle/oradata/prdtest/system01.dbf';
7> set NEWNAME for datafile 2 to '/data/oracle/oradata/prdtest/undotbs01.dbf';
8> set NEWNAME for datafile 3 to '/data/oracle/oradata/prdtest/sysaux01.dbf';
9> set NEWNAME for datafile 4 to '/data/oracle/oradata/prdtest/users01.dbf';
10> set NEWNAME for datafile 5 to '/data/oracle/oradata/prdtest/example01.dbf';
11> set NEWNAME for datafile 6 to '/data/oracle/oradata/prdtest/kamil_deneme1_01.dbf';
12> set NEWNAME for datafile 7 to '/data/oracle/oradata/prdtest/kamil_deneme1_02.dbf';
13> set NEWNAME for datafile 8 to '/data/oracle/oradata/prdtest/kamil_deneme2_01.dbf';
14> set NEWNAME for datafile 9 to '/data/oracle/oradata/prdtest/kamil_deneme2_02.dbf';
15> restore database;
16> switch datafile all;
17> recover database;
18> }

allocated channel: dev_0
channel dev_0: sid=161 devtype=SBT_TAPE
channel dev_0: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_1
channel dev_1: sid=160 devtype=SBT_TAPE
channel dev_1: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_2
channel dev_2: sid=159 devtype=SBT_TAPE
channel dev_2: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_3
channel dev_3: sid=156 devtype=SBT_TAPE
channel dev_3: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 01-DEC-10

channel dev_0: starting datafile backupset restore
channel dev_0: specifying datafile(s) to restore from backup set
restoring datafile 00005 to /data/oracle/oradata/prdtest/example01.dbf
restoring datafile 00006 to /data/oracle/oradata/prdtest/kamil_deneme1_01.dbf
restoring datafile 00007 to /data/oracle/oradata/prdtest/kamil_deneme1_02.dbf
channel dev_1: starting datafile backupset restore
channel dev_1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /data/oracle/oradata/prdtest/undotbs01.dbf
restoring datafile 00003 to /data/oracle/oradata/prdtest/sysaux01.dbf
restoring datafile 00004 to /data/oracle/oradata/prdtest/users01.dbf
channel dev_2: starting datafile backupset restore
channel dev_2: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /data/oracle/oradata/prdtest/system01.dbf
restoring datafile 00008 to /data/oracle/oradata/prdtest/kamil_deneme2_01.dbf
restoring datafile 00009 to /data/oracle/oradata/prdtest/kamil_deneme2_02.dbf
[Normal] From: OB2BAR_Oracle8@betasetapp2 ""  Time: 12/01/10 09:55:10
        Starting OB2BAR Restore:

Finished restore at 01-DEC-10

Starting recover at 01-DEC-10

starting media recovery

channel dev_0: starting archive log restore to default destination
channel dev_0: restoring archive log
archive log thread=1 sequence=685
[Normal] From: OB2BAR_Oracle8@betasetapp2 ""  Time: 12/01/10 09:57:35
        Starting OB2BAR Restore: …

channel dev_0: restore complete
archive log filename=/data/oracle/flash_recovery_area/PRDTEST/archivelog/2010_12_01/o1_mf_1_685_6hczzhn4_.arc thread=1 sequence=685
channel default: deleting archive log(s)
archive log filename=/data/oracle/flash_recovery_area/PRDTEST/archivelog/2010_12_01/o1_mf_1_685_6hczzhn4_.arc recid=681 stamp=736595856
unable to find archive log
archive log thread=1 sequence=686
released channel: dev_0
released channel: dev_1
released channel: dev_2
released channel: dev_3
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/01/2010 09:57:43
RMAN-06054: media recovery requesting unknown log: thread 1 seq 686 lowscn 2858652

Until seq vererek çalıştırdığım zaman ;

RMAN> run {
2> allocate channel 'dev_0' type 'sbt_tape';
3> allocate channel 'dev_1' type 'sbt_tape';
4> allocate channel 'dev_2' type 'sbt_tape';
5> allocate channel 'dev_3' type 'sbt_tape';
6> set NEWNAME for datafile 1 to '/data/oracle/oradata/prdtest/system01.dbf';
7> set NEWNAME for datafile 2 to '/data/oracle/oradata/prdtest/undotbs01.dbf';
8> set NEWNAME for datafile 3 to '/data/oracle/oradata/prdtest/sysaux01.dbf';
9> set NEWNAME for datafile 4 to '/data/oracle/oradata/prdtest/users01.dbf';
10> set NEWNAME for datafile 5 to '/data/oracle/oradata/prdtest/example01.dbf';
11> set NEWNAME for datafile 6 to '/data/oracle/oradata/prdtest/kamil_deneme1_01.dbf';
12> set NEWNAME for datafile 7 to '/data/oracle/oradata/prdtest/kamil_deneme1_02.dbf';
13> set NEWNAME for datafile 8 to '/data/oracle/oradata/prdtest/kamil_deneme2_01.dbf';
14> set NEWNAME for datafile 9 to '/data/oracle/oradata/prdtest/kamil_deneme2_02.dbf';
15> set until sequence 686 thread 1;
16> restore database;
17> switch datafile all;
18> recover database;
19> }

allocated channel: dev_0
channel dev_0: sid=161 devtype=SBT_TAPE
channel dev_0: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_1
channel dev_1: sid=160 devtype=SBT_TAPE
channel dev_1: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_2
channel dev_2: sid=159 devtype=SBT_TAPE
channel dev_2: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_3
channel dev_3: sid=156 devtype=SBT_TAPE
channel dev_3: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET until clause

Starting restore at 01-DEC-10

channel dev_0: starting datafile backupset restore
channel dev_0: specifying datafile(s) to restore from backup set
restoring datafile 00005 to /data/oracle/oradata/prdtest/example01.dbf
restoring datafile 00006 to /data/oracle/oradata/prdtest/kamil_deneme1_01.dbf
restoring datafile 00007 to /data/oracle/oradata/prdtest/kamil_deneme1_02.dbf
channel dev_1: starting datafile backupset restore
channel dev_1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /data/oracle/oradata/prdtest/undotbs01.dbf
restoring datafile 00003 to /data/oracle/oradata/prdtest/sysaux01.dbf
restoring datafile 00004 to /data/oracle/oradata/prdtest/users01.dbf
channel dev_2: starting datafile backupset restore
channel dev_2: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /data/oracle/oradata/prdtest/system01.dbf
restoring datafile 00008 to /data/oracle/oradata/prdtest/kamil_deneme2_01.dbf
restoring datafile 00009 to /data/oracle/oradata/prdtest/kamil_deneme2_02.dbf
[Normal] From: OB2BAR_Oracle8@betasetapp2 ""  Time: 12/01/10 10:06:54
        Starting OB2BAR Restore: …

media recovery complete
Finished recover at 01-DEC-10
released channel: dev_0
released channel: dev_1
released channel: dev_2
released channel: dev_3

RMAN>

·        Redologların path’ ini düzeltiyoruz.

Recover işlemi başarı ile bittikden redologların yeni pathlerini set etmemiz gerekiyor. Yeni pathleri vermeden açmaya çalışırsak aşağıdaki hatayı alırız.

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00344: unable to re-create online log '/data2/prdtest/redo01.log'
ORA-27040: file create error, unable to create file
IBM AIX RISC System/6000 Error: 2: No such file or directory

Redologların pathlerini düzeltmek için ;

SQL> alter database rename file '/data2/prdtest/redo03.log' to '/data/oracle/oradata/prdtest/redo03.log';

Database altered.

SQL> alter database rename file '/data2/prdtest/redo02.log' to '/data/oracle/oradata/prdtest/redo02.log';

Database altered.

SQL> alter database rename file '/data2/prdtest/redo01.log' to '/data/oracle/oradata/prdtest/redo01.log';

Database altered.

Kontol etmek için ;

SQL> select member from v$logfile ;

MEMBER
-----------------------------------------------------
/data/oracle/oradata/prdtest/redo03.log
/data/oracle/oradata/prdtest/redo02.log
/data/oracle/oradata/prdtest/redo01.log

·        Sıra en son ve zevkli kısmına geldi , database’ i açıyoruz

SQL> alter database open resetlogs ;

Database altered.

Kartuşa alınan bir database’ in backupını, farklı bir sunucu üzerine farklı pathler de olacak şekilde restore etmiş olduk. Backup – restore testleri bir dba için oldukça önemli konular diye düşünüyorum. Zira esas önemli olan herhangi bir disaster durumunda paniklemeden soğukkanlılıkla ve benzer senaryoları daha önceden  test etmiş olmanın rahatlığı içerisinde soruna çözüm üretmekde yatıyor.  Umarım faydalı olur.


Kamil TÜRKYILMAZ

Hiç yorum yok: