Pages

23 Ağustos 2011 Salı

Standby üzerinde backup retention ilkesinin değiştirilmesi

Standby veritabanı oluşturulduğu anda yedek alıkoyma(retention) ilkesini değiştirmek mümkün olmamaktadır. Standby sunucu üzerindeki disk alanı yetersiz duruma geldiğinde veya diğer başka kısıtlamalar sebebiyle, primart veritabanından yedek alıkoyma ilkesinin değiştirilme ihtiyacı duyulabilmektedir. Bu değişiklik işlemi  esnasında ise aşağıdaki hata mesajı ile karşılaşılmaktadır.

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 days;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of configure command at 08/18/2011 14:42:35
RMAN-05021: this configuration cannot be changed for a BACKUP or STANDBY control file

Yedekleme alıkoyma ilkesinin –eğer mümkünse- değiştirmenin en kolay yolu; bir switchover işlemi(standby veritabanını primary yapmak), ardından alıkoyma ilkesini değiştirmek ve sonrada orjinal primary veritabanına bir switchover işlemi yapmaktır. Ancak, bu her sefer mümkün olmamaktadır, özellikle dataguard yapılandırması asimetrik ise ve standby sistem daha çok bir felaketten geri kurtarma senaryosu için “veri koruma” modunda kullanılmaktaysa...

Bu noktada arzu edilen standby sunucu üzerine primary veritabanından alıkoyma ilkesinin değiştirilmesi için yapılması istenen; standby kontrol dosyasının oluşturulması, primary üzerine alıkoyma ilkesinin yeniden döndürülmesi ve bu değiştirilmiş alıkoyma ilkesini içeren yeni oluşturulan standby kontrol dosyasının geri yüklenmesidir.

Bu amaç için yardımcı olacak 2 metalink notu bulunmaktadır. Bunlar;

·         Steps to recreate a Physical Standby Controlfile [ID 459411.1]
·         Step By Step Guide On How To Recreate Standby Control File When Datafiles Are On ASM And Using Oracle Managed Files [ID 734862.1]

Bu yazıda, yukardaki her iki nottaki tavsiyeler ışığında veri dosyalarının OMF depolamasında kullanıldığı tekil(single) bir dataguard instance için alıkoyma ilkesinin değiştirilmesi işlenecektir. Diğer bir yazımda ise RAC ortamında ASM disk yapısında çalışan dataguard ortamı için bu değişikliğin nasıl olduğunu adım adım işleyeceğim.

Bu işleme başlarken önce standby veritabanında aşağıdaki adımları izleyeceğim.

1.    Bu senaryoda alıkoyma ilkesini CONFIGURE komutu ve standby sunucuya switchover işleminin uygun olmadığı durumda, “recovery window of 2 days” şeklinde yedek alıkoyma ilkesi değişikliği yapma zorunluluğu olduğu varsayımıyla;

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 days;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of configure command at 07/01/2011 11:25:47
RMAN-05021: this configuration cannot be changed for a BACKUP or STANDBY control file

2.    Standby üzerinde log uygulamasını iptal edilecek, veri dosyalarının isimleri alınacak ve standby veritabanı kapatılacaktır.

SQL>alter database recover managed standby database cancel;
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_system_35tsa3kd_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_sysaux_35tsa3kd_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_undotbs1_35tsa3k4_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_users_35tsa3kq_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_example_35tsa3ks_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_test2_35tsa3mx_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_tbxindex_35tsa3k7_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_tbxlobs_35tsa3kb_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_tbx2ktbs_35kwa3m8_.dbf
/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_test_35kraud8_.dbf

SQL>shutdown immediate;

Primary veritabanında aşağıdaki adımları izleyeceğim.

3.    Standby için gerekli olan alıkoyma ilkesi değişikliği yapılacaktır.

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 days; 
old RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS;
new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
new RMAN configuration parameters are successfully stored

Yeni RMAN yapılandırma parametreleri başarılı şekilde saklanmıştır.

4.    Yeni standby kontrol dosyası primary veritabanı üzerinde oluşturulacak ve standby sunucuya kopyalacaktır.

SQL> alter database create standby controlfile as '/home/oracle/standby.ctl';
Database altered.

5.    Veritabanı başarılı şekilde kapanmışsa mevcut kontrol dosyasının yedeği alınmaktadır.

mv o1_mf_7w4xgs1o_.ctl o1_mf_7w4xgs1o_.ctl.bak
mv o1_mf_7w4xgs1t_.ctl o1_mf_7w4xgs1t_.ctl.bak

Standby sunucu üzerinde mevcut kontrol dosyaları yeni kontrol dosyaları ile değiştirilmektedir.

cp /home/oracle/standby.ctl o1_mf_7w4xgs1o_.ctl
cp /home/oracle/standby.ctl o1_mf_7w4xgs1t_.ctl

6.    Standby sunucu mount modda başlatılacaktır.

7.    Metalink note [ID 459411.1] notunda; eğer primary ve standby üzerinde dosya yapıları birbirinden farklıysa ve eğer db_file_name_convert/log_file_name_convert parametreleri ayarlanmamışsa, yeni standby kontrol dosyasında bu yeni dosya lokasyon(ları) yeniden adlandırılmalıdır:

Yukardaki tavsiye noktasında primary ve standby sunucular OMF kullanmalarına rağmen, OMF veri dosyalarının isimleri primary ve standby veritabanlarında birbirinden farklıdır, bu sebeple ilk adımda veri dosyalarının isimlerini almıştık. Bu alınan veri dosyaları, şimdi standby üzerindeki veri dosyalarının isimleri ile kıyaslanabilir.

SQL> select name from v$datafile;

NAME
----------------------------------------------------------------------
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_system_6w4y535y_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_sysaux_6w4y536p_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_undotbs1_6w4y536t_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_users_6w4y537g_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_example_6w4y5f3nk_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_test2_6rv1lltr_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_tbxindex_6rv1lzvc_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_tbxlobs_6rv1mf60_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_tbx2ktbs_6rv1t0jn_.dbf
/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_test_70p7blqh_.dbf

Yukardakiler primary üzerindeki veri dosyalarıdır ve standby veri dosyası isimleri ile aynı olmamalıdır.

8.    Primary üzerinde veri dosyası isimlerini orjinal isimleri ile değiştiriyorum sırasıyla.

SQL> alter database rename file '/u01/app/oracle/oradata/PMRORCL/datafile/o1_mf_system_6w4y535y_.dbf' to '/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_system_35tsa3kd_.dbf';

alter database rename file '/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_system_6w4y535y_.dbf' to '/u01/app/oracle/oradata/PRMORCL/datafile/o1_mf_system_35tsa3kd_.dbf'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01275: Operation RENAME is not allowed if standby file management is
automatic.

Oops. Yukardaki hata mesajını alıyorum. Şimdi bu sorunu aşmak için isim değiştirme operasyonu süresince “standby file management” parametre değerini MANUAL olarak değiştiriyorum.

SQL> alter system set standby_file_management='MANUAL' scope=memory;
System altered.

SQL> alter database rename file '/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_system_6w4y535y_.dbf' to '/u01/app/oracle/oradata/STDORCL/datafile/o1_mf_system_35tsa3kd_.dbf';

Database altered.

Yukardaki şekilde tüm veri dosyalarının adlarını değiştiriyorum ve bu işlemler bitince “standby file management” parametresini eski durumuna getiriyorum.

SQL> alter system set standby_file_management='AUTO' SCOPE=MEMORY;
System altered.

9.    Eğer flashback özelliği devrede ise, durdurup başlatıyorum.

SQL>ALTER DATABASE FLASHBACK OFF;
SQL>ALTER DATABASE FLASHBACK ON;

10.  Eğer standby log dosyaları primary üzerinde oluşturulmamışsa bu adımda bu dosyalar standby üzerinde oluşturulmalıdır. Bu işlem öncesinde standby üzerinde bulunan tüm standby log dosyaları online log dosyaları ile birlikte temizlenmelidir

SQL> select group# from v$log;

    GROUP#
----------
         1
         2
         4
         5
         3

5 rows selected.

SQL> alter database clear logfile group 1;
Database altered.

Diğer log dosyalarıda aynı şekilde temizlenmelidir.

SQL> select group# from v$standby_log;

    GROUP#
----------
         7
         8
         9
        10
        11
        12

SQL>  alter database clear logfile group 7;
Database altered.

Diğer standby log dosyalarıda aynı şekilde temizlenmelidir.

11.  Standby üzerinde log uygulaması başlatılır, ve log uygulamasının çalıştığından emin olunmalıdır. Log uygulaması sonucunda standby sunucu üzerinde standby log dosyaları ve redo log dosyaları otomatik olarak oluşturulmaktadır.

SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.

SQL> select sequence#,applied from v$archived_log;

 SEQUENCE# APPLIED
---------- ---------
      1820 IN-MEMORY

Primary üzerinde log arşivlemesi yapılır;

SQL> alter system archive log current;

Ardından standby üzerinde kontrol edilir.

SQL> select sequence#,applied from v$archived_log;

SEQUENCE# APPLIED
---------- ---------
      1424 YES
      1425 IN-MEMORY

12.  En son adımda standby üzerindeki yedek alıkoyma ilkesinin istenen alıkoyma ilkesi ile değiştirğinden emin olunur.

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;


0 yorum:

Yorum Gönder