17 Ağustos 2010 Salı

Data Guard Datafile Taşıma İşlemi

Selamlar,

OTN forumlarını incelerden değişik bir soru ile karşılaştım. Soru şu;

"
Data Guard konfigüre edilmiş bir ortamda ana veritabanında bir datafile'ın yerini değiştirmek ya da yeni isim vermek istersem ne yapmam gerekiyor?
"

Aşağıdaki komutları ve yolu takip ederek hem ana hem de fiziksel yedek veritabanındaki datafile'ı taşıyabilirsiniz;


Bir ya da birden çok datafile'ı ana veritabanında isimlerini
değiştirdiğimiz zaman bu değişiklik, yedek veritabanında işleme
konulmaz.
Bu sebepten dolayı eğer bir datafile'ı yeniden adlandırmak
istiyorsanız aynı modifikasyonları yedek veritabanında da
yapmanız gerekmektedir, STANDBY_FILE_MANAGEMENT parametresi
"AUTO" olarak ayarlanmış olsa bile.
1.

Ana veritabanında ilgili tablespace'i offline
konumuna alıyoruz;

SQL> ALTER TABLESPACE tbs_4 OFFLINE;

2.

SQL prompt'undan çıkarak aşağıdaki unix komutunu
gönderiyoruz;

% mv /disk1/oracle/oradata/payroll/tbs_4.dbf
/disk1/oracle/oradata/payroll/tbs_x.dbf

3.

Datafile'ın adını değiştiriyoruz ve tablespace'i
online konumuna geri alıyoruz.
SQL> ALTER TABLESPACE tbs_4 RENAME DATAFILE

'/disk1/oracle/oradata/payroll/tbs_4.dbf'

TO
'/disk1/oracle/oradata/payroll/tbs_x.dbf';

SQL> ALTER TABLESPACE tbs_4 ONLINE;

4.

Yedek veritabanına bağlanın ve v$archived_log görüntüsünü
sorgulayarak, bütün archivelog'ların işlendiğini görüntüleyin
ve redo işlemesini durdurun.

SQL> SELECT SEQUENCE#,APPLIED
FROM V$ARCHIVED_LOG
ORDER BY SEQUENCE#;
SEQUENCE# APP
--------- ---
8 YES
9 YES
10 YES
11 YES
4 rows selected.

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

5.

Yedek veritabanını kapatın;

SQL> SHUTDOWN;

6.

Datafile'ın adını değiştiriyoruz ve unix komutu ileyapabiliriz

% mv /disk1/oracle/oradata/payroll/tbs_4.dbf
/disk1/oracle/oradata/payroll/tbs_x.dbf

7.

Fiziksel yedek veritabanını mount konumuna geri alıyoruz:

SQL> STARTUP MOUNT;

8.

Yedek kontrol dosyası içerisindeki datafile isim
değişikliğini tanıtmamız gerekiyor.
STANDBY_FILE_MANAGEMENT parametresinin MANUAL
olarak ayarlanmış olması gerekmekte;

SQL> ALTER DATABASE RENAME FILE

'/disk1/oracle/oradata/payroll/tbs_4.dbf'

TO
'/disk1/oracle/oradata/payroll/tbs_x.dbf';

9.

Fiziksel yedek veritabanındaki redo işlemesini yeniden
devreye alıyoruz;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
DISCONNECT FROM SESSION;

Yedek sisteminde taşıdığımız datafile'ın yeni ismini sisteme
tanıtmazsak eğer aşağıdaki gibi bir hata alma ihtimaliniz olacaktır;

ORA-00283: recovery session canceled due to errors
ORA-01157: cannot identify/lock datafile 4 - see DBWR trace file
ORA-01110: datafile 4: '/Disk1/oracle/oradata/payroll/tbs_x.dbf


İyi çalışmalar.

Ogan

1 yorum:

Kamil TÜRKYILMAZ dedi ki...

Güzel bir yazı olmuş, eline sağlık ...

Takip et: @oganozdogan