Salı , 16 Eylül 2014
Anasayfa / MAKALELER / Veri Tabanı / Veri ve Redo Log Dosyalarının Dosya Sisteminden ASM ‘e RMAN ile Taşınması

Veri ve Redo Log Dosyalarının Dosya Sisteminden ASM ‘e RMAN ile Taşınması

Veri ve Redo Log Dosyalarının Dosya Sisteminden ASM ‘e RMAN ile Taşınması

Önceki yazımda bir veri dosyasının, dosya sisteminden ASM disk grubuna RMAN ile taşınmasını yazmıştım. Bu yazımda da tüm veritabanının (veri dosyaları, control file, online redo log dosyaları) dosya sisteminden ASM ‘e RMAN ile nasıl taşıyacağımızı adım adım öğreneceğiz.

1- Block Change Tracking aktif ise disable yapılır.

# sqlplus / as sysdba

SQL> alter database disable block change tracking;

2- Veri dosyalarımızın ve control dosyalarımızın varsayılan yerini aşağıdaki gibi +DATA olarak değiştirelim.

SQL> alter system set db_create_file_dest=’+DATA’ scope=spfile;

Benzer şekilde online redo log dosyalarımızın varsayılan yerini aşağıdaki gibi +RECO olarak değiştirelim.

SQL> alter system set db_create_online_log_dest_1=’+RECO’ scope=spfile;

3- Spfile parametre dosyamızda control_files parametresini sıfırlayalım.

SQL> alter system reset control_files scope=spfile sid=’*’;

4- Artık veri dosyalarımızı RMAN ile ASM ‘e taşıyabiliriz. Önce veritabanımızı NOMOUNT modda açıp control dosyamızı aşağıdaki gibi restore ederek +DATA disk grubuna yazılmasını sağlayalım.

$ rman target /

RMAN> startup nomount

RMAN> restore controlfile from ‘/data_TALIPDB/control01.ctl’;

5- Veritbanımızı MOUNT moduna alalım ve RMAN ile +DATA disk grubuna image copy yedek alalım.

RMAN> alter database mount;

RMAN> backup as copy database format ‘+DATA’;

6- Veritabanımızı aşağıdaki gibi +DATA disk grubunda bulunan kopyasına switch edelim.

RMAN> switch database to copy;

7- Veritabanımızı açabiliriz.

RMAN> alter database open;

8- İlk adımda disable ettiğimiz block change tracking ‘i tekrar enable edebiliriz.

SQL> alter database enable block change tracking using file ‘/oracle/ora11g/bct_file.log’;

9- Temp alanın yedeği alınmayacağı için yeni bir temp dosyası ekleyerek işi çözebiliriz. Yeni bir temp dosyası oluşturalım. Varsayılan +DATA disk grubunda oluşturulacaktır. Ve Sonra eskisini silebiliriz.

# sqlplus / as sysdba

SQL> alter tablespace temp add tempfile size 500M;

SQL> alter tablespace temp drop tempfile ‘/data_TALIPDB/temp01.dbf’

10- Şimdide online redo log dosyalarımızı ASM disk grubuna taşıyalım.

# sqlplus / as sysdba

SQL>select b.group# , b.status , a.member from v$logfile a , v$log b where a.group# = b.group# order by 1;

GROUP#           STATUS                 MEMBER

————          ————              —————————

1                            INACTIVE             /data1/redo01.log

2                            INACTIVE            /data1/redo02.log

3                            CURRENT             /data1/redo03.log

Durumu INACTIVE veya UNUSED olan redo log dosyaları drop edilebilmektedir. Ama durumu CURRENT veya ACTIVE ise drop işlemi hemen yapılamamaktadır. Online redo log gruplarımızı tek tek silip, tekrar +RECO disk grubunda oluşturalım.

SQL> alter database drop logfile group 1;

Daha önce db_create_online_log_dest_1 parametresini ‘+RECO’ olarak set ettiğimiz için redo log dosyalarımız varsayılan olarak +RECO disk grubunda oluşturulacaktır.

SQL> alter database add logfile group 1 size 50M;

Aynı şekilde 2. log grubumuzuda drop/create edelim.

SQL> alter database drop logfile group 2;

SQL> alter database add logfile group 2 size 50M;

11- Yukarıdaki sorguyu tekrar çalıştıralım ve redo log dosyalarımızın durumunu kontrol edelim.

SQL> select b.group# , b.status , a.member from v$logfile a , v$log b where a.group# = b.group# order by 1;

GROUP#           STATUS                 MEMBER

————          ————              —————————

1                            INACTIVE            +RECO/talipdb/online log/group_1.257.7782 52603

2                            INACTIVE            +RECO/talipdb/online log/group_2.258.7782 52715

3                            CURRENT             /data1/redo03.log

Sıra geldi 3. redo log grubu drop/create etmeye. Durumu CURRENT olduğu için önce diğer redo log dosyasına switch yapalım.

SQL> alter system switch logfile;

SQL> select b.group# , b.status , a.member from v$logfile a , v$log b where a.group# = b.group# order by 1;

GROUP#           STATUS                 MEMBER

————          ————              —————————

1                            CURRENT             +RECO/talipdb/online log/group_1.257.7782 52603

2                            UNUSED               +RECO/talipdb/online log/group_2.258.7782 52715

3                            ACTIVE                 /data1/redo03.log

Sorgumuzu tekrar çalıştırdığımızda, durumunu ACTIVE olarak görürüz. Durumunun INACTIVE olması için bir süre bekleyebiliriz. Veya aşağıdaki gibi checkpoint atarak redo log dosyamız ile ilgili veritabanı tampon ön belleğinde (database buffer cache) bulunan dirty blokların yazılmasını sağlayabiliriz.

SQL> alter system checkpoint;

SQL> select b.group# , b.status , a.member from v$logfile a , v$log b where a.group# = b.group# order by 1;

GROUP#           STATUS                 MEMBER

————          ————              —————————

1                            CURRENT             +RECO/talipdb/online log/group_1.257.7782 52603

2                            UNUSED               +RECO/talipdb/online log/group_2.258.7782 52715

3                            INACTIVE             /data1/redo03.log

Checkpoint sonrası tekrar kontrol ettiğimizde durumunu INACTIVE olarak görürüz. Şimdi 1. redo log grubumuzu drop/create edebiliriz.

SQL> alter database drop logfile group 3;

SQL> alter database add logfile group 3 size 50M;

Son olarak online redo log dosyalarımızı kontrol edelim.

SQL> set lines 50

SQL> select member from v$logfile;

MEMBER

————————————————–

+RECO/talipdb/onlinelog/group_3.259.778253083

+RECO/talipdb/onlinelog/group_2.258.778252715

+RECO/talipdb/onlinelog/group_1.257.778252603

Veridosyalarımızı da kontrol edelim.

SQL> select name from v$datafile;

NAME

——————————————————————————–

+DATA/talipdb/datafile/system.256.778251403

+DATA/talipdb/datafile/sysaux.257.778251487

+DATA/talipdb/datafile/undotbs1.258.778251553

+DATA/talipdb/datafile/users.260.778251563

SQL> select name from v$tempfile;

NAME

——————————————————————————–

+DATA/talipdb/tempfile/temp.262.778252097

Veri dosyalarımızı, control dosyalarımızı ve online redo log dosyalarımızı ASM disk grubuna taşıdık. ASM ile çalışan mutlu veritabanlarınız olması dileğiyle :) …

Talip Hakan Öztürk

Talip Hakan Ozturk

Oracle ACE, 10g/11g OCP, Oracle Blogger, Author, Senior Oracle DBA at Bank Asya, Internal Oracle Trainer for Bank Asya Akademi
Powered by Starbox

Hakkında Talip Hakan Ozturk

Oracle ACE, 10g/11g OCP, Oracle Blogger, Author, Senior Oracle DBA at Bank Asya, Internal Oracle Trainer for Bank Asya Akademi

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*


Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>