Rastgele Yazılar : SharePoint 2010 Döküman Yönetimi
Rastgele Yazılar : Tablespace Yönetimi - 5
Rastgele Yazılar : RMAN ile Backup/Restore/Recover
Rastgele Yazılar : Veriden Geleceğe 2012 Ardından
Rastgele Yazılar : Oracle ASM Disklerinin Konfigürasyonu
Rastgele Yazılar : Oracle veritabanı shutdown modları
Rastgele Yazılar : SQL Server da Stored Procedure Kullanımı
Rastgele Yazılar : Sql String İşlemleri
Rastgele Yazılar : USER TANIMLAMA(USER PRIVILEGES)
Rastgele Yazılar : VERI KALITESI ve 7 MAJOR HATALI ALGI
Ö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;
# 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’;
$ 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’;
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’
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
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;
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
SQL> select b.group# , b.status , a.member from v$logfile a , v$log b where a.group# = b.group# order by 1;
1 INACTIVE +RECO/talipdb/online log/group_1.257.7782 52603
2 INACTIVE +RECO/talipdb/online log/group_2.258.7782 52715
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
SQL> alter system switch logfile;
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
SQL> alter system checkpoint;
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;
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
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
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;
+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