Rastgele Yazılar : LOG_MINER Kurulumu, Konfigurasyonu ve Kullanımı ...
Rastgele Yazılar : Listener Service' ine Şifre Atama
Rastgele Yazılar : Tablespace Yönetimi - 3
Rastgele Yazılar : VERI KALITESI ve 7 MAJOR HATALI ALGI
Rastgele Yazılar : Rman Restore - Recover Operasyonuna Canlı Bir Ornek (re...
Rastgele Yazılar : ORA-03114: end-of-file on communication channel
Rastgele Yazılar : Lokasyon Tabanlı İş Zekası (Location Intelligence)
Rastgele Yazılar : Veritabanı Host Adı / IP Adresi Değiştiğinde OEM Konfig...
Rastgele Yazılar : Big Data Nedir?
Rastgele Yazılar : Restore-Recover için Gerekli Olan Backupları Nasıl Tesp...
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.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.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