Home / MAKALELER / Veri Tabanı / ASM Yapısına Databese Taşıma

ASM Yapısına Databese Taşıma

ASM Yapısına DatabaseTaşıma

Oracle 11gR2’de disk’te bulunan dosyalarımızın ASM yapısına taşımayı anlatacağım. Öncelikle yapılması gereken  ASM instance’ın kurulumunu yapıp çalışır halde olması gereklidir. Kurulum tamamiyle farklı bir konu olduğundan sistemde var olduğunu kabul edip anlatacağım.
– Database ve versiyonu kontrol ederek işe başlayalım.
                SQL>select  open_mode,instance_name,version,database_status from v$instance;
INSTANCE_NAME    VERSION           DATABASE_STATUS
———————— —————– ————————–
testdb                                 11.2.0.3.0        ACTIVE

– ASM Disklerimizi ve durularını kontrol edelim.

               SQL>select NAME,STATE,TOTAL_MB,PATH from v$asm_disk;
NAME                           STATE      TOTAL_MB PATH
—————————— ——– ———- ———-
DISK1                          NORMAL         16025 ORCL:DISK1

SPFILE’ı ASM’e taşıyalım ;

– Eğer SPFILE kullanıyorsak RMAN ile backup’ını alıp SPFILE’ı ASM’e taşıyabiliriz.
                bash3.2> rman target  /

                RMAN>BACKUP AS BACKUPSET SPFILE;
– DB’yi restart edelim.

                SQL>Shutdown immediate
SQL>Startup mount;

– Şimdi backup aldığımız SPFILE’ı  ASM’e restore ederek taşıyabiliriz.
RMAN>RESTORE SPFILE TO ‘+DATA/spfiletestdb.ora’;

– SFILE’ı backup’tan restore ederek ASM’e taşıdık ancak halen database’de SPFILE  eskisini kullanmakta.
                 SQL> show parameter spfile
                NAME                                 TYPE        VALUE
———————————— ———– ——————————
spfile                               string      /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfiletestdb.ora

– SPFILE’ı DB’ye göstermek için DB kapatıp  ORACLE_HOME/dbs altında bulunan init<SID>.ora dosyamızı düzenlemeliyip eski SPFILE’ı silmeliyiz.  Sırasıyla;

SQL> shutdown immediate;

 

                bash3.2> cd $ORACLE_HOME/dbs

                bash3.2> rm spfiletestdb.ora

 

Son olarak init<SID>.ora dosyamızın içine ASM’e diske koyduğumuz SPFILE’ın adresini veririz.

bash3.2> vi inittestdb.ora  (Dosya içine SPFILE=’+DATA/spfiletestdb.ora’)

 

Veritabanımızı açıp, SPFILE’ın yeni adresini kontrol edebiliriz.

SQL> startup

SQL> show parameter spfile
NAME                                 TYPE        VALUE
———————————— ———– ——————————
spfile                               string      +DATA/spfiletestdb.ora

Control File dosyasını ASM’e taşıma ;

Temel olarak SPFILE’da yaptığımız işlemlerin benzerini burada yapacağız. İlk olarak CONTROL_FILES parametresini kontrol edelim ve mevcut dosyamızın nerede olduğunu görelim.

SQL>show parameter contol_files
control_files                        string      /u01/app/oracle/11.2.0/dbs /control01.ctl

– Veritabanımızı kapatıp NOMOUNT modda açalım.
SQL> shutdown immediate

SQL> startup nomount

– RMAN’de iki yol ile control_file’ı taşıyabiliriz. İlk olarak ilk adımda yaptığımız restore işlemini yaparak taşıyalım.
                bash3.2>rman target /
RMAN>restore controlfile to ‘+DATA’ from ‘/u01/app/oracle/11.2.0/dbs /control01.ctl ‘;

– Diğer yöntemimiz ise RMAN’de copy komutunu kullanmak.

bash3.2>rman target /
RMAN> copy current controlfile to  ‘+DATA/control01.ctl’;

 

NOT: Oracle 11g ile gelen, ASM’de  bulunan “cp” komutu ile de bu iş yapabiliriz.

 

–               DB’de ise control_files parametremizi set etmeliyiz.
SQL> alter system set control_files=’+DATA/TESTDB/CONTROLFILE/control01.ctl’  scope=spfile;

– Son olarak DB’yi yeniden başlatıp , parametremizi kontrol etmeliyiz.
SQL> shutdown immediate

SQL> startup mount
SQL> show parameter control_files

NAME                    TYPE        VALUE
—————————– ———– ——————————
control_files        string      +DATA/testdb/controlfile/ control01.ctl

Datafile’ları ASM’e Taşıma ;

 

İşlem bakımından daha kritik olan datafile taşınmasında yapacağımız işler sırasıyla;
– İlk dikkat edeceğimiz nokta DB’nin MOUNT modda olması. Eğer değilse DB’yi MOUNT modda açarız.

SQL> shutdown immediate

SQL> startup mount
– Taşıma konusunda yine RMAN’i kullanacağız.
                bash.3.2> rman target /

                RMAN> BACKUP AS COPY DATABASE FORMAT ‘+DATA’;

– Backup bittikten sonra yaratılan kopyalarla datafileları switch etmeliyiz.
RMAN> SWITCH DATABASE TO COPY;
                 datafile 1 switched to datafile copy “+DATA/testdb/datafile/system.128. 234154113”
datafile 2 switched to datafile copy “+DATA/testdb/datafile/sysaux.127. 234154190”
datafile 3 switched to datafile copy “+DATA/testdb/datafile/undotbs1.129. 27841541”
datafile 4 switched to datafile copy “+DATA/testdb/datafile/users.130.234154115”

– Sıra geldi “tempfile” dosyalarının ASM’e taşınmasına.
              RMAN> run
                 2> {
                 3> set newname for tempfile ‘/u01/data/testdb/temp01.dbf’ to ‘+DATA’;
                4> switch tempfile all;
                5> }

– DB’yi artık OPEN modda açılabilir moda getirdik.

SQL> ALTER DATABASE OPEN;

– Şimdi datafile’ları DB’den sorgulayalım.

SQL> select FILE_NAME from dba_data_files;
                FILE_NAME
—————————————————————–
+DATA/testdb/datafile/ users.130.234154115
+DATA/testdb/datafile/ undotbs1.129. 27841541
+DATA/testdb/datafile/ sysaux.127. 234154190
+DATA/testdb/datafile/ system.128. 234154113

REDO LOG’ların ASM’e taşınması ;

–   Öncelikle mevcuttaki REDO LOG dosyalarımızı görürüz.
SQL> SELECT a.group#, b.member, a.status FROM v$log a, v$logfile b WHERE a.group#=b.group#;
                  GROUP#           MEMBER                                 STATUS
——————————————————————–

3    /u01/testdb/online/redo03.log  INACTIVE
2    /u01/testdb/ online/redo02.log INACTIVE
1    /u01/testdb/ online/redo01.log CURRENT

– Yeni log dosyalerımızı alttaki komutu kullanarak ASM’e ekleriz

ALTER DATABASE ADD LOGFILE MEMBER ‘+DATA’ TO GROUP 1; 
                ALTER DATABASE ADD LOGFILE MEMBER ‘+DATA’ TO GROUP 2;
                ALTER DATABASE ADD LOGFILE MEMBER ‘+DATA’ TO GROUP 3;

– ASM’de Redo Log’ları yarattıktan sonra eskilerini silelim ve yarattığımız yenileri ile switch edelim.

SQL> ALTER DATABASE DROP LOGFILE MEMBER ‘/u01/testdb/online/redo01.log’;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER DATABASE DROP LOGFILE MEMBER ‘/u01/testdb/online/redo02.log’;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER DATABASE DROP LOGFILE MEMBER ‘/u01/testdb/online/redo03.log’;
SQL> ALTER SYSTEM SWITCH LOGFILE;

–  Yeni oluşturduğumuz redo log dosyalarını kontrol edelim.

SQL> SELECT a.group#, b.member, a.status FROM v$log a, v$logfile b WHERE a.group#=b.group#;

GROUP#           MEMBER                STATUS
———- ————————————————————-

1     +DATA/testdb/onlinelog/group_1.264.787205393   CURRENT
2    +DATA/testdb/onlinelog/group_2.265.787205405   INACTIVE
3    +DATA/testdb/onlinelog/group_3.266.787205417   INACTIVE

 

Diskte bulunan database’i ASM Disk yapısına taşıdık. Bakılınca sıkıntılı olarak görünen işlemler olsa da kısaca yapılacak adımları izlerek sorunsuzca taşınabilir.

 

Özgür Umut VURGUN

www.ozgurumutvurgun.com

About Ozgur Umut Vurgun

Yakındoğu Üniversitesi Bilgisayar Mühendisliği 2006 mezunu olup Fatih Üniversitesi MBA Yüksek Lisans'ına devam etmekteyim. İş hayatıma bir GSM operatöründe DBA olarak sürdürüyorum. Oracle Teknolojilerinin yanı sıra Unix ve ASP.Net hakkında da bilgi sahibiyim. Oracle 10,11g veritabanı yöneticiliğinin yanı sıra Data Guard,RMAN ve ASM üzerine aktif olarak çalışmaktayım. Oracle 12c'yi öğrenme sürecinde olup Oracle WebLogic konularına da ilgi duymaktayım. İş hayatında ve kendi yaptığım testlerde karşılaştığım sorunları blogumda paylaşarak başkalarına da faydalı olma çabasındayım

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın