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

Belli dönemlerde prod database’ lerinden alınan backupları farklı sunucular üzerine dönme testleri yapma zorunluluğumuz var. Bu testlerden birinde yaptığım işleme ait  detayları aşağıda anlatmaya çalıştım.

Rman ile bir database’ i farklı bir sunucu üzerine taşımak başlıklı yazımda rman backup diske alındığında nasıl restore edileceğinden bahsetmiştik. Orada catalog database’ ini aslında kullanmamıştık çünkü alınan rman backupı, restore yapılacak sunucu üzerinde rman’ in istemiş olduğu path’lere kopyalamıştık dolayısıyla orada işimiz daha kolaydı.

Burada ise catalog database’ ini kullanarak (rutin işleyişe birebir örnek oluşturması açısından) kartuşa alınan bir backupı hiçbir kopyalama işlemi yapmadan nasıl başka bir ortama taşıyacağımızdan bahsetmek istiyorum. Yine burda da bir takım öngörülerimiz var. Öncelikle, pathlerimiz burda da farklı olarak kabul ediyoruz.  (eğer pathler restore yapılacak sunucu ile birebir aynı ise, aşağıdaki scriplerdeki )Sonrasında yapacağımız işlemlerle ilgili olarak adım adım anlatamaya çalışayım ;

  • Backupı dönülecek olan sunucu üzerinden rman catalog database’ i ile database’ in backupı kartuşa alınır.

 

run {

allocate channel ‘dev_0’ type ‘sbt_tape’

 parms ‘ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=prdtest,OB2BARLIST=Betasetcms2_PRDTEST)’;

allocate channel ‘dev_1’ type ‘sbt_tape’

 parms ‘ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=prdtest,OB2BARLIST=Betasetcms2_PRDTEST)’;

allocate channel ‘dev_2’ type ‘sbt_tape’

 parms ‘ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=prdtest,OB2BARLIST=Betasetcms2_PRDTEST)’;

allocate channel ‘dev_3’ type ‘sbt_tape’

 parms ‘ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=prdtest,OB2BARLIST=Betasetcms2_PRDTEST)’;

backup incremental level

 format ‘Betasetcms2_PRDTEST<%t:%p>.dbf’

restore database;

sql ‘alter system archive log current’;

backup

 filesperset 1

 format ‘Betasetcms2_PRDTEST<%t:%p>.dbf’

 archivelog like ‘/data2/arch/%’;

}

Datafile’ leri farklı pathlere restore edeceğimiz için aşağıdaki bilgileri mutlaka biliyor olmamız gerekiyor. Sonrasında file# numarasına göre yeni path’ lere set edeceğiz.

Database’ deki datafile’ lerin listesinide alıyoruz.

SQL> select name from v$datafile;

FILE#   NAME

1            /data2/prdtest/system01.dbf

2            /data2/prdtest/undotbs01.dbf

3            /data2/prdtest/sysaux01.dbf

4            /data2/prdtest/users01.dbf

5            /data2/prdtest/example01.dbf

6            /data2/prdtest/kamil_deneme1_01.dbf

7            /data2/prdtest/kamil_deneme1_02.dbf

8            /data2/prdtest/kamil_deneme2_01.dbf

9            /data2/prdtest/kamil_deneme2_02.dbf

Redologlar hakkında aşağıdaki bilgileri alıyoruz.

Select * from v$logfile;

GROUP#           STATUS    TYPE                                  MEMBER                                                                                                                                                                                                                                                            

3                     ONLINE    /data2/prdtest/redo03.log        NO

2                     ONLINE    /data2/prdtest/redo02.log        NO

1                     ONLINE    /data2/prdtest/redo01.log        NO

Ayrıca bu database’ e ait dbid bilgisinide öncesinde bilmemiz gerekiyor. Kullanmakta olduğunuz tüm database’ lerin dbid’ lerini saklamanızda fayda var. Bu değer sonradan değişmeyen ve her database için unique olan bir değerdir.

SQL> select dbid from v$database ;

DBID

———-

165917862

Bundan sonraki adımda aslında şunu düşünüyoruz, bu database herhangi bir problemden dolayı down oldu ve temin edilen farklı bir sunucuya data kaybı olmadan restore etmeniz gerekiyor. Şimdi almış olduğumuz backupı başka bir sunucu üzerine restore etmeye çalışalım.

  • Restore yapılacak server üzerine sadece oracle software kurulumu yapıyoruz.

 

  • Pfile, initfile, pwd, tns, sqlnet ora gibi (parametre) dosyaları yeni sunucumuz üzerine üzerine kopyalıyoruz. (veya elimizde backupları yoksa yenilerini create ediyoruz. Zaman zaman prod ortamlarından bu tarz kritik file’ lerin backupının alınması ciddi zaman kazançları sağlıyor)

 

Parametre dosyaları restore yapılacak olan servera kopyalandıkdan sonra içerisinde gerekli değişiklikleri yapmamız gerekiyor. Örneğin memory parametreleri yeni sunucuya göre set edilir veya backup alınan sunucu ile restore yapılacak olan sunucunun path’ leri farklı olabileceğinden buradaki controlfile parametresinin restore yapılacak olan sunucuda nerde olması gerekiyor ise ilgili path bilgisi buraya girilir.

Örneğin bizim örneğimizde backup alınan sunucudaki control file parametresi  ;

*.control_files=’/data2/prdtest/control01.ctl’,’/data2/prdtest/control02.ctl’,’/data2/prdtest/control03.ctl’

Restore yapılacak sunucudaki olması gereken path ise (burada böyle bir path olmadığından dolayı) ;

*.control_files=’/data/oracle/oradata/prdtest/control01.ctl’,’/data/oracle/oradata/prdtest/control02.ctl’,’/data/oracle/oradata/prdtest/control03.ctl’

  • Sonra yeni sunucumuzdaki database sys olarak bağlanıp nomount modda database’ i start ediyoruz.

 

oracle@betasetapp2:/data/oracle/product/10.1.0/db:>sqlplus “/as sysdba”

SQL*Plus: Release 10.1.0.5.0 – Production on Mon Nov 29 09:22:50 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.1.0.5.0 – 64bit Production

With the Partitioning, OLAP and Data Mining options

SQL> startup nomount

ORACLE instance started.

Total System Global Area  419430400 bytes

Fixed Size                  1330696 bytes

Variable Size             122401272 bytes

Database Buffers          293601280 bytes

Redo Buffers                2097152 bytes

  • Database’ i nomount moda aldıkdan sonra yine bu sunucu üzerinden önce rman’e sonra catalog database’ ine bağlanıyoruz.

 

oracle@betasetapp2:/data/oracle:>rman target /

Recovery Manager: Release 10.1.0.5.0 – 64bit Production

Copyright (c) 1995, 2004, Oracle.  All rights reserved.

connected to target database: prdtest (not mounted)

RMAN> connect catalog RMAN_PRDTEST/r10011002@RMAN

connected to recovery catalog database

RMAN>

Catalog database’ ine bağlanmak için kullandığımız user bizim backup aldığımız veritabanını catalog database’ ine register ederken kullanmış olduğumuz user’ ı ifade ediyor. @RMAN ise rman catalog database’ inin tns kaydıdır.

  • Rman ile restore işlemine artık başlıyabiliriz, öncelikle işlem yapacağımız database’ in dbid bilgisini set ediyoruz.

 

RMAN> set dbid=165917862

executing command: SET DBID

database name is “PRDTEST” and DBID is 165917862

  • İlk olarak controlfile’ i dönmemiz gerekiyor.

 

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> restore controlfile;

7> }

released channel: ORA_DISK_1

allocated channel: dev_0

channel dev_0: sid=159 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=157 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=160 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=161 devtype=SBT_TAPE

channel dev_3: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

Starting restore at 30-NOV-10

channel dev_0: starting datafile backupset restore

channel dev_0: restoring controlfile

[Normal] From: OB2BAR_Oracle8@betasetapp2 “PRDTEST”  Time: 11/30/10 10:47:22

        Starting OB2BAR Restore: betasetcms2:c-165917862-20101125-02 “Oracle8”

[Normal] From: OB2BAR_Oracle8@betasetapp2 “PRDTEST”  Time: 11/30/10 10:47:24

        Completed OB2BAR Restore: betasetcms2:c-165917862-20101125-02 “Oracle8”

channel dev_0: restored backup piece 1

piece handle=c-165917862-20101125-02 tag=TAG20101125T141314

channel dev_0: restore complete

output filename=/data/oracle/oradata/prdtest/control01.ctl

output filename=/data/oracle/oradata/prdtest/control02.ctl

output filename=/data/oracle/oradata/prdtest/control03.ctl

Finished restore at 30-NOV-10

released channel: dev_0

released channel: dev_1

released channel: dev_2

released channel: dev_3

RMAN>

Ben testimde, channel allocate ederken,  rman’ in backup alırken allocate ettiği kadar channel’ lar allocate ettim, istenirse daha az veya daha fazla channel allocate edilebilir.

Örneğin;

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> allocate channel ‘dev_4’ type ‘sbt_tape’;

7> allocate channel ‘dev_5’ type ‘sbt_tape’;

8> allocate channel ‘dev_6’ type ‘sbt_tape’;

9> restore controlfile;

10> }

allocated channel: dev_0

channel dev_0: sid=159 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=157 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=160 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=161 devtype=SBT_TAPE

channel dev_3: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_4

channel dev_4: sid=156 devtype=SBT_TAPE

channel dev_4: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_5

channel dev_5: sid=155 devtype=SBT_TAPE

channel dev_5: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

allocated channel: dev_6

channel dev_6: sid=154 devtype=SBT_TAPE

channel dev_6: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

Starting restore at 30-NOV-10

…………………….

RMAN> run {

2> allocate channel ‘dev_0’ type ‘sbt_tape’;

3> restore controlfile;

4> }

allocated channel: dev_0

channel dev_0: sid=159 devtype=SBT_TAPE

channel dev_0: Data Protector A.06.00/PHSS_37147/PHSS_37148/DPSOL_00306/DPLNX_

Starting restore at 30-NOV-10

…………………….

  • Controlfile’ lerimizi döndükden sonra database’ imizi artık mound moda çekebiliriz.

 

SQL> alter database mount;

database mounted.

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

Be Sociable, Share!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


9 + = oniki