Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi
Transkript
Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi
TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Ergem PEKER TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Giriş Veritabanı yöneticisinin temel görevleri ve sorumlulukları olan tablespace ve disk doluluk oranlarının takibi, kullanıcı hesaplarının yönetimi, performansı düşük sorguların iyileştirilmesi, yama yönetimi, veri güvenliği gibi birçok günlük operasyonel iş arasında kendisini kaybetmesi aslında cok daha kritik olan bir görevini kendisine unutturur, unutturmasa bile oldukça geri planlara itmesine neden olabilir. Bahsedilen en kritik görev ve sorumluluk aslında "Veri Yedekleme ve Kurtarma" 'dir. Bir veritabanı yöneticisinin duzenli ve çalışır bir yedekleme planı olmaması kabul edilemez. Diğer yandan sadece yedekleme planı olması da yeterli değildir. Yedeği alınan veritabanın, herhangi bir sebeple kaybolan verilerin geri kurtarılmasını sağlaması gerekmektedir. Aslında gün içerisinde pek te aklımıza gelmeyen bu işlem, bir veritabanı yöneticisinin en kritik görevidir. Bir Oracle Veritabanının yedeklenmesi ve kurtarılmasi birçok farklı senaryo ve araç ile sağlanabilir. En cok kullanılan araçlar arasında export/import ve Oracle Veritabanı 10g versiyonu ile birlikte kullanıma sunulan datapump ürünleri sayilabilir. Bu araçların yanında işletim sistemi dosya kopyalama yöntemini esas alan "User Managed" yedekleme ve kurtarma yöntemleri de vardır. Diğer yandan depolama ürünlerinin sağladığı bazı çözümler de veritabanı yedekleme yöntemleri arasında gösterilebilir. Bu kısa yazıda az önce bahsedilen yöntemlerin hiç birisine değinmeden Oracle 'in önerdiği ve desteklediği veri yedekleme ve kurtarma ürünü olan RMAN (Recovery MANager) başlığını kısaca inceleyeceğiz. Öncelikle RMAN 'in diğer çözümlere kıyasla sağladığı avantajlara bir göz atmak gerekir. Diğer araçlara kıyasla RMAN block seviyesinde çalıştığı için bazı kazanımlari vardır. Örneğin Incremental Yedek işlemlerini diğer araçlar ile sağlayamiyor iken RMAN ‘de bu özellik var. Dolayısıyla her seferinde tüm veritabanı dosyalarının tamamını kopyalamak yerine, bir önceki full yedek üzerine sadece yedeği alınmamış fark blocklari yazabilirsiniz. Block seviyesinde çalışmanın getirdiği bir diğer önemli özellik ise block kurtarma. Bir veri dosyasının tamamının değil fakat bir kısmının hatta daha küçük seviyede sadece bazı block larının herhangi bir sebepten dolayı bozulması RMAN öncesinde tum tablespace ‘in yedekten geri dönülmesi ile mümkün olabilirken, RMAN ile sadece birkac komut ile sadece bozulan block ‘lar kurtarılabiliyor. Yedekleme performansida RMAN ile daha kolay yönetilebilir halde. Özellikle Parallel yedek almak için diğer araçlarda veritabanı yöneticisinin kişisel katkısı gerekirken, RMAN ile kanallar (channel) üzerinden parallel yedekleme işlemleri cok daha kolay yönetilebilir hale gelmiş durumda. 1 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Eğer Oracle ASM ürününü kullanıyorsanız, RMAN ‘in getirdiği bir çok kullanışlı özellik bir çok veritabanı yöneticisi için vazgeçilmez hale gelebilir. Zira ASM üzerinde bulunan tüm Oracle veritabanı dosyaları RMAN ile yedeklenebilir, kopyalanabilir, ASM’den dosya sistemine veya tam ters yönlu olarak aktarılabilir ve çok daha önemli bir özellik olan veritabanı klonlama işlemleri yine RMAN ile yapılabilir. Tüm bu özelliklerin yanı sıra RMAN ‘in bir diğer kullanışlı özelliği, daha önce alınmış olan tüm veritabanı ve archivelog yedeklerinin controlfile içerisinde bulunan kütüphaneden sorgulanabilmesi. Birden fazla veritabanının olması durumda bu kütüphane bir veritabanı (catalog database) üzerinde de tutulabilir. RMAN ‘i başlatma ve temel ayarlar Başlamadan önce iki varsayımda bulunmak gerekir. Aşağıdaki komut ve yöntemlerin çalışması için versiyonu 11gR2 olan bir Oracle Veritabanı kurulumunun halihazırda var olduğunu ve veritabanının “archivelog mode” da olduğunu varsayıyoruz. RMAN, bir veritabanı kurulumu yapıldığında, veritabanı yazılımının kurulu oldugu dizin içerisinde varsayılan bir araç olarak gelir ve Oracle kurulum dizini (bundan sonra $ORACLE_HOME olarak bahsedilecektir) içerisinde tum binary dosyalarının bulunduğu “bin” klasöru içerisinde yer alir. [oracle@localhost ~]$ ls $ORACLE_HOME/bin/rman /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/rman [oracle@localhost ~]$ which rman ~/app/oracle/product/11.2.0/dbhome_2/bin/rman RMAN ‘i çalıştırmak için sadece “rman” komutunu yazıp enter ‘a basmak yeterli olacaktir. Fakat RMAN işlemlerinin yapılacağı bir veritabanına bağlanmanız gerekir. Bu veritabanından bundan sonra “target” veritabanı olarak bahsedilecektir. Target veritabanını RMAN’i çalıştırdıktan sonra veya çalıştırırken bildirebilirsiniz. [oracle@localhost ~]$ rman Recovery Manager: Release 11.2.0.2.0 - Production on Tue Nov 29 13:56:00 2011 2 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. RMAN> connect target / connected to target database: ORCL (DBID=1229390655) RMAN> exit Recovery Manager complete. [oracle@localhost ~]$ rman target / Recovery Manager: Release 11.2.0.2.0 - Production on Tue Nov 29 13:56:32 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (DBID=1229390655) RMAN> RMAN ‘i çalıştırdıktan ve target veritabanına bağlandıktan sonra, bir veritabanı yedeği almak oldukça kolay. Tek yapmanız gereken “backup database” komutunu girmek ve komut çıktılarini takip etmek. Burada dikkat edilmesi gereken husus yeterli disk alanına sahip olup olmadığınızdır. Zira RMAN varsayılan yedekleme klasöru olarak $ORACLE_HOME/dbs altını seçecektir. Eğer “db_recovery_file_dest” sistem parametresi ayarlanmış ise bu durumda bu alana yedek alacaktır. Alınan veritabanı yedekleri hakkında RMAN’e soru sormak isterseniz “list backup of database [summary]” komutunu aşağıdaki örnekteki gibi kullanabilirsiniz. RMAN> backup database; Starting backup at 29-NOV-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=143 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00002 name=/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00001 name=/home/oracle/app/oracle/oradata/orcl/system01.dbf input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf input datafile file number=00003 name=/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00005 name=/home/oracle/app/oracle/oradata/orcl/example01.dbf input datafile file number=00007 name=/home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf input datafile file number=00006 name=/home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: starting piece 1 at 29-NOV-11 channel ORA_DISK_1: finished piece 1 at 29-NOV-11 piece handle=/home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o1_mf_nnnd f_TAG20111129T143635_7fbqmmkb_.bkp tag=TAG20111129T143635 comment=NONE 3 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set including current SPFILE in backup set channel ORA_DISK_1: starting piece 1 at 29-NOV-11 channel ORA_DISK_1: finished piece 1 at 29-NOV-11 piece handle=/home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o1_mf_ncsn f_TAG20111129T143635_7fbqo1vb_.bkp tag=TAG20111129T143635 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 29-NOV-11 RMAN> list backup of database; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------2 Full 1.97G DISK 00:00:44 29-NOV-11 BP Key: 2 Status: AVAILABLE Compressed: NO Tag: TAG20111129T143635 Piece Name: /home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o1_mf_nnndf_TAG20 111129T143635_7fbqmmkb_.bkp List of Datafiles in backup set 2 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---1 Full 9118670 29-NOV-11 /home/oracle/app/oracle/oradata/orcl/system01.dbf 2 Full 9118670 29-NOV-11 /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf 3 Full 9118670 29-NOV-11 /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf 4 Full 9118670 29-NOV-11 /home/oracle/app/oracle/oradata/orcl/users01.dbf 5 Full 9118670 29-NOV-11 /home/oracle/app/oracle/oradata/orcl/example01.dbf 6 Full 9118670 29-NOV-11 /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf 7 Full 9118670 29-NOV-11 /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf RMAN yedekleme işlemi boyunca target veritabanı dosyalarını okurken, çıkış arabirimi olarak ta channel’lari kullanir. Channel ayarlarını yaparak backup süresinde iyileştirmeler yapabilir, yedekleme dosyalarının formatlarını dilediğiniz gibi ayarlayabilirsiniz. Herhangi bir ayar yapmadığımız durumda RMAN’in hangi durumda hangi klasöre yedek aldığını bir önceki örnekte görmüştük . Ayarlarda herhangi bir özelleştirme yapılmadığı taktirde RMAN varsayılan olarak ORA_DISK_1 isimli bir channel olusturur ve bu channel’i $ORACLE_HOME/dbs altına veya “flash recovery area” özelliği ayarlı ise db_recovery_file_dest’te belirtilen klasöre yönlendirir. Simdi channel ayarları ile biraz daha yakından ilgilenebiliriz. Şöyle ki; 4 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) RMAN> show default device type; RMAN configuration parameters for database with db_unique_name ORCL are: CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default RMAN> configure channel device type disk format '/home/oracle/app/oracle/admin/orcl/%U'; new RMAN configuration parameters: CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/home/oracle/app/oracle/admin/orcl/%U'; new RMAN configuration parameters are successfully stored released channel: ORA_DISK_1 RMAN> show channel; RMAN configuration parameters for database with db_unique_name ORCL are: CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/home/oracle/app/oracle/admin/orcl/%U'; Bu yeni ayarlarlar ile birlikte RMAN yedeklerinin belirtilen klasöre alınmasını bekliyoruz. Bakalım gerçekten öyle mi? RMAN> backup database; Starting backup at 30-NOV-11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=144 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00002 name=/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00001 name=/home/oracle/app/oracle/oradata/orcl/system01.dbf input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf input datafile file number=00003 name=/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00005 name=/home/oracle/app/oracle/oradata/orcl/example01.dbf input datafile file number=00007 name=/home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf 5 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) input datafile file number=00006 name=/home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: starting piece 1 at 30-NOV-11 channel ORA_DISK_1: finished piece 1 at 30-NOV-11 piece handle=/home/oracle/app/oracle/admin/orcl/07msua9a_1_1 tag=TAG20111130T062649 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set including current SPFILE in backup set channel ORA_DISK_1: starting piece 1 at 30-NOV-11 channel ORA_DISK_1: finished piece 1 at 30-NOV-11 piece handle=/home/oracle/app/oracle/admin/orcl/08msuaan_1_1 tag=TAG20111130T062649 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03 Finished backup at 30-NOV-11 RMAN> list backup of database summary; List of Backups =============== Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag ------- -- -- - ----------- --------------- ------- ------- ---------- --6 B F A DISK 30-NOV-11 1 1 NO TAG20111130T062649 RMAN> list backup of database; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------6 Full 1.97G DISK 00:00:43 30-NOV-11 BP Key: 6 Status: AVAILABLE Compressed: NO Tag: TAG20111130T062649 Piece Name: /home/oracle/app/oracle/admin/orcl/07msua9a_1_1 List of Datafiles in backup set 6 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---1 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/system01.dbf 2 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf 3 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf 6 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) 4 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/users01.dbf 5 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/example01.dbf 6 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf 7 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf Evet gerçekten öyle. Bu esnada dikkat etmemiz gereken bir diğer önemli konu ise RMAN’in aldığı yedekleri dosya sisteminde nasıl tuttuğu. RMAN aldığı her yedeği bir backupset (yedek kumesi) mantıksal yapısı içerisinde tutar ve bu backupset’i belirleyici bir TAG ile işaretler. Bu backupset içerisinde de backuppiece (yedek parcasi) adı verilen fiziksel dosyaları görebilirsiniz. Her backupset’te bir veya birden fazla backuppiece bulabilirsiniz. “list backupset” komutu ile almış olduğunuz yedeklerin backupset’lerini bu backupset’lerin içerisindeki backuppiece’leri ve bu backuppiece’lerin içerisindeki veritabanı dosyalarını görebilirsiniz. RMAN> list backupset; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------6 Full 1.97G DISK 00:00:43 30-NOV-11 BP Key: 6 Status: AVAILABLE Compressed: NO Tag: TAG20111130T062649 Piece Name: /home/oracle/app/oracle/admin/orcl/07msua9a_1_1 List of Datafiles in backup set 6 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---1 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/system01.dbf 2 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf 3 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf 4 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/users01.dbf 5 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/example01.dbf 6 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf 7 Full 9182550 30-NOV-11 /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf 7 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------7 Full 9.36M DISK 00:00:03 30-NOV-11 BP Key: 7 Status: AVAILABLE Compressed: NO Tag: TAG20111130T062649 Piece Name: /home/oracle/app/oracle/admin/orcl/08msuaan_1_1 SPFILE Included: Modification time: 30-NOV-11 SPFILE db_unique_name: ORCL Control File Included: Ckp SCN: 9182567 Ckp time: 30-NOV-11 İlk bölümden değinmemiz gereken bir diğer ayar ise “retention policy”. Bu ayar kaç adet sağlıklı veritabanı yedeğini disk üzerinde tutmak istedigimizle ilgili. Bu ayar iki temel birim üzerinden yapılabilir. Birincisi zaman temelli bir policy belirleyebilirsiniz. Ikincisi backup adedi üzerinden bir policy belirleyebilirsiniz. Örneğin, Aşağıdaki ayarı yapmak ile son 7 günlük yedekleri RMAN repository’sinde tutmak istediğimizi RMAN’e bildiriyoruz, böylece RMAN gereksiz yedekleri silerken son 7 gunden önceki yedekleri silmeye özen gösterecektir. RMAN> configure retention policy to recovery window of 7 days; new RMAN configuration parameters: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; new RMAN configuration parameters are successfully stored Diğer yandan, aşağıdaki ayarı yapmakla RMAN’e son 7 adet yedeği repository’de tutması gerektiğini bildiriyoruz. Böylece RMAN’in eski yedeklerden kastı son 7 adet yedek’ten daha önceki dosyalar olacaktir. RMAN> configure retention policy to redundancy 7; old RMAN configuration parameters: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; new RMAN configuration parameters: CONFIGURE RETENTION POLICY TO REDUNDANCY 7; new RMAN configuration parameters are successfully stored Eğer hergün sadece tek bir yedek alıyorsak bu yukarıdaki iki farklı ayar aynı sonucu verecektir. Fakat haftada bir full veritabanı yedeği alıyorsak, ilk ayar sadece bir adet 8 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) veritabanı yedeğini repository’de barındırırken, ikinci ayar son 7 haftalık yedeği repository’de barındıracaktır. Bu ikisinin farkı, özellikle disk’e alınan yedeklerde önem arz edecektir, zira disk doluluk oranını etkileyen bir etkendir. Simdi bir örnekle beraber süresi dolan yedekler ve arşivlog’lar nasıl listelenir ve silinir bir bakalım. Diskteki yer kısıtı dolayısıyla ben retention policy ‘i son bir yedeği tutacak sekilde ayarladım. Süresi dolan yedekleri sildikten sonra veritabanı yedeklerini listeledigimde sadece son veritabanı yedeğinin repository’de kaldığına dikkat edebilirsiniz. Ayrıca son veritabanı yedeğinden daha önce üremiş olan arşivlog’larinda silindiğine dikkat ediniz, zira bu log’lar son yedeğe geri dönebilmek için gerekli olan dosyalar arasında değiller. RMAN> configure retention policy to redundancy 1; old RMAN configuration parameters: CONFIGURE RETENTION POLICY TO REDUNDANCY 7; new RMAN configuration parameters: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; new RMAN configuration parameters are successfully stored RMAN> report obsolete; RMAN retention policy will be applied to the command RMAN retention policy is set to redundancy 1 Report of obsolete backups and copies Type Key Completion Time Filename/Handle -------------------- ------ ------------------ -------------------Archive Log 1 29-NOV-11 /home/oracle/app/oracle/admin/orcl/1_388_701609923.dbf Backup Set 1 29-NOV-11 Backup Piece 1 29-NOV-11 /home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o1_mf_nc snf_TAG20111129T143039_7fbq8k1k_.bkp Archive Log 2 29-NOV-11 /home/oracle/app/oracle/admin/orcl/archive/1_389_701609923.dbf Archive Log 3 29-NOV-11 /home/oracle/app/oracle/admin/orcl/archive/1_390_701609923.dbf Backup Set 3 29-NOV-11 Backup Piece 3 29-NOV-11 /home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o1_mf_nc snf_TAG20111129T143635_7fbqo1vb_.bkp Archive Log 4 30-NOV-11 /home/oracle/app/oracle/admin/orcl/archive/1_391_701609923.dbf Archive Log 5 30-NOV-11 /home/oracle/app/oracle/admin/orcl/archive/1_392_701609923.dbf Backup Set 5 30-NOV-11 9 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Backup Piece 5 30-NOV-11 /home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/06msu8pu_1_1 RMAN> delete obsolete; RMAN retention policy will be applied to the command RMAN retention policy is set to redundancy 1 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=142 device type=DISK Deleting the following obsolete backups and copies: Type Key Completion Time Filename/Handle -------------------- ------ ------------------ -------------------Backup Set 1 29-NOV-11 Backup Piece 1 29-NOV-11 /home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o1_mf_nc snf_TAG20111129T143039_7fbq8k1k_.bkp Archive Log 2 29-NOV-11 /home/oracle/app/oracle/admin/orcl/archive/1_389_701609923.dbf Archive Log 3 29-NOV-11 /home/oracle/app/oracle/admin/orcl/archive/1_390_701609923.dbf Backup Set 3 29-NOV-11 Backup Piece 3 29-NOV-11 /home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o1_mf_nc snf_TAG20111129T143635_7fbqo1vb_.bkp Archive Log 4 30-NOV-11 /home/oracle/app/oracle/admin/orcl/archive/1_391_701609923.dbf Archive Log 5 30-NOV-11 /home/oracle/app/oracle/admin/orcl/archive/1_392_701609923.dbf Backup Set 5 30-NOV-11 Backup Piece 5 30-NOV-11 /home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/06msu8pu_1_1 Do you really want to delete the above objects (enter YES or NO)? yes deleted backup piece backup piece handle=/home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o 1_mf_ncsnf_TAG20111129T143039_7fbq8k1k_.bkp RECID=1 STAMP=768493841 deleted archived log archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_389_701609923.dbf RECID=2 STAMP=768494151 deleted archived log archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_390_701609923.dbf RECID=3 STAMP=768495061 deleted backup piece backup piece handle=/home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_11_29/o 1_mf_ncsnf_TAG20111129T143635_7fbqo1vb_.bkp RECID=3 STAMP=768494241 10 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) deleted archived log archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_391_701609923.dbf RECID=4 STAMP=768549201 deleted archived log archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_392_701609923.dbf RECID=5 STAMP=768549618 deleted backup piece backup piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/06msu8pu_1_1 RECID=5 STAMP=768549696 Deleted 7 objects RMAN> list backup of database summary; List of Backups =============== Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag ------- -- -- - ----------- --------------- ------- ------- ---------- --6 B F A DISK 30-NOV-11 1 1 NO TAG20111130T062649 Temel Yedekleme İşlemleri Veritabanı yedeğini almak için girmemiz gereken komutu bir önceki bölümde zaten incelemistik. Bu bölümde de veri dosyaları dışında kalan fakat yine de olası bir geri dönüş senaryosunda ihtiyacımız olabilecek diğer veritabanı dosyaları olan controlfile, spfile ve arşivlog’ların yedeklemesine göz atacağız. Yukarıdaki “backup database” çıktılarına bakacak olursanız, her veritabanı yedeği sonunda backupset içerisine bir backuppiece, içerisinde de controlfile ve spfile yedeklerinin otomatik olarak alındığını görebilirsiniz. Eğer controlfile yedeğinin Ayrıca alınmasını istiyorsanız o halde “backup current controlfile” komutunu kullanabilirsiniz. Aynı şekilde spfile yedeği içinde “backup spfile” komutu yeterli olacaktir. Ayrıca yine “list backup of controlfile [summary]” veya “list backup of spfile [summary]” komutları ile alınan yedekleri kontrol edebilirsiniz. 11 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) RMAN> backup current controlfile; Starting backup at 05-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set channel ORA_DISK_1: starting piece 1 at 05-DEC-11 channel ORA_DISK_1: finished piece 1 at 05-DEC-11 piece handle=/home/oracle/app/oracle/admin/orcl/09mtduk8_1_1 tag=TAG20111205T044600 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 05-DEC-11 Starting Control File and SPFILE Autobackup at 05-DEC-11 piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c-122939065520111205-00 comment=NONE Finished Control File and SPFILE Autobackup at 05-DEC-11 RMAN> backup spfile; Starting backup at 05-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current SPFILE in backup set channel ORA_DISK_1: starting piece 1 at 05-DEC-11 channel ORA_DISK_1: finished piece 1 at 05-DEC-11 piece handle=/home/oracle/app/oracle/admin/orcl/0bmtdukp_1_1 tag=TAG20111205T044617 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 05-DEC-11 Starting Control File and SPFILE Autobackup at 05-DEC-11 piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c-122939065520111205-01 comment=NONE Finished Control File and SPFILE Autobackup at 05-DEC-11 RMAN> list backup of controlfile summary; List of Backups =============== Key TY LV S Device Type ------- -- -- - ----------7 B F A DISK TAG20111130T062649 8 B F A DISK TAG20111205T044600 Completion Time #Pieces #Copies Compressed Tag --------------- ------- ------- ---------- --30-NOV-11 1 1 NO 05-DEC-11 1 1 NO 12 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) 9 B F A DISK TAG20111205T044602 11 B F A DISK TAG20111205T044618 05-DEC-11 1 1 NO 05-DEC-11 1 1 NO RMAN> list backup of spfile summary; List of Backups =============== Key TY LV S Device Type ------- -- -- - ----------7 B F A DISK TAG20111130T062649 9 B F A DISK TAG20111205T044602 10 B F A DISK TAG20111205T044617 11 B F A DISK TAG20111205T044618 Completion Time #Pieces #Copies Compressed Tag --------------- ------- ------- ---------- --30-NOV-11 1 1 NO 05-DEC-11 1 1 NO 05-DEC-11 1 1 NO 05-DEC-11 1 1 NO RMAN> list backup of controlfile; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------7 Full 9.36M DISK 00:00:03 30-NOV-11 BP Key: 7 Status: AVAILABLE Compressed: NO Tag: TAG20111130T062649 Piece Name: /home/oracle/app/oracle/admin/orcl/08msuaan_1_1 Control File Included: Ckp SCN: 9182567 Ckp time: 30-NOV-11 BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------8 Full 9.33M DISK 00:00:02 05-DEC-11 BP Key: 8 Status: AVAILABLE Compressed: NO Tag: TAG20111205T044600 Piece Name: /home/oracle/app/oracle/admin/orcl/09mtduk8_1_1 Control File Included: Ckp SCN: 9211363 Ckp time: 05-DEC-11 BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------9 Full 9.36M DISK 00:00:00 05-DEC-11 BP Key: 9 Status: AVAILABLE Compressed: NO Tag: TAG20111205T044602 Piece Name: /home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c1229390655-20111205-00 Control File Included: Ckp SCN: 9211369 Ckp time: 05-DEC-11 13 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------11 Full 9.36M DISK 00:00:00 05-DEC-11 BP Key: 11 Status: AVAILABLE Compressed: NO Tag: TAG20111205T044618 Piece Name: /home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c1229390655-20111205-01 Control File Included: Ckp SCN: 9211389 Ckp time: 05-DEC-11 Controlfile yedekleri için ayrıca dikkat edilmesi gereken bir durum vardır. İleride controlfile kurtarma bölümünde daha detaylı değineceğiz ama yine de burada bir giriş yapmak yerinde gözüküyor. RMAN aldığı tüm yedeklerin metadatasini controlfile içerisinde tutar (catalog veritabanı kullanılmadığı durumda). Dolayısıyla controlfile kaybı RMAN için oldukça kritik bir durum, zira controlfile yedeklerinin kendisi de RMAN backupset ‘leri içerisinde. Bu ikilemden kurtulmak için controlfile auto backup özelliğini ayarlayabiliriz. Bunun için “controlfile auto backup” parametresini “on” olarak ayarlamanız gerekir. Bu parametreyi “on” olarak ayarladıktan sonra RMAN her veritabanı yedeğinden sonra controlfile yedeklerini otomatik olarak $ORACLE_HOME/dbs dizini altına da alır. Veri kurtarma kısmında bu yedeğin ne kadar önemli olacağını göreceğiz. RMAN> configure controlfile autobackup on; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored RMAN> show controlfile autobackup; RMAN configuration parameters for database with db_unique_name ORCL are: CONFIGURE CONTROLFILE AUTOBACKUP ON; Arşivlog’ların da yedeğini alıp daha sonra orjinal arşivlog’ları disk kullanımını azaltmak için dosya sisteminden silebilirsiniz veya RMAN’e arşivlog yedeklerini aldıktan sonra yedeğini aldığı arsivleri dosya sisteminden (veya ASM üzerinden) kaldırmasini bildirebilirsiniz. Arşivlog’ları silerken dikkat edilmesi gereken bir diğer nokta ise, arşivlog dosyalarının dosya sistemi komutları ile değil de RMAN komutları ile silmekte fayda vardır. Aksi 14 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) taktirde RMAN silinen arşivlog’ların kaydını tutamayacak ve bir sonraki arşivlog yedeğinde, bulamadigi arşivlog’lar için hata verecektir. Bunu önlemek için RMAN içerisinde “crosschek archivelog all” komutu ile RMAN’in dosya sistemindeki arşivlog dosyalarından haberdar olması sağlanabilir. Son örnek olarak ta, bir arsiv sequence numarasi ile arsiv yedekleyip listeleyebilirsiniz. Şöyle ki; RMAN> backup archivelog all; Starting backup at 05-DEC-11 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=393 RECID=6 STAMP=769058085 input archived log thread=1 sequence=394 RECID=7 STAMP=769067203 channel ORA_DISK_1: starting piece 1 at 05-DEC-11 channel ORA_DISK_1: finished piece 1 at 05-DEC-11 piece handle=/home/oracle/app/oracle/admin/orcl/0dmte263_1_1 tag=TAG20111205T054643 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 05-DEC-11 Starting Control File and SPFILE Autobackup at 05-DEC-11 piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c-122939065520111205-02 comment=NONE Finished Control File and SPFILE Autobackup at 05-DEC-11 RMAN> backup archivelog from time 'sysdate-1'; Starting backup at 05-DEC-11 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=393 RECID=6 STAMP=769058085 input archived log thread=1 sequence=394 RECID=7 STAMP=769067203 input archived log thread=1 sequence=395 RECID=8 STAMP=769068788 channel ORA_DISK_1: starting piece 1 at 05-DEC-11 channel ORA_DISK_1: finished piece 1 at 05-DEC-11 piece handle=/home/oracle/app/oracle/admin/orcl/0fmte3nk_1_1 tag=TAG20111205T061308 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 05-DEC-11 Starting Control File and SPFILE Autobackup at 05-DEC-11 15 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c-122939065520111205-03 comment=NONE Finished Control File and SPFILE Autobackup at 05-DEC-11 RMAN> backup archivelog all delete all input; Starting backup at 05-DEC-11 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=393 RECID=6 STAMP=769058085 input archived log thread=1 sequence=394 RECID=7 STAMP=769067203 input archived log thread=1 sequence=395 RECID=8 STAMP=769068788 input archived log thread=1 sequence=396 RECID=9 STAMP=769068808 channel ORA_DISK_1: starting piece 1 at 05-DEC-11 channel ORA_DISK_1: finished piece 1 at 05-DEC-11 piece handle=/home/oracle/app/oracle/admin/orcl/0hmte3o8_1_1 tag=TAG20111205T061328 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 channel ORA_DISK_1: deleting archived log(s) archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_393_701609923.dbf STAMP=769058085 archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_394_701609923.dbf STAMP=769067203 archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_395_701609923.dbf STAMP=769068788 archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_396_701609923.dbf STAMP=769068808 Finished backup at 05-DEC-11 RECID=6 RECID=7 RECID=8 RECID=9 Starting Control File and SPFILE Autobackup at 05-DEC-11 piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c-122939065520111205-04 comment=NONE Finished Control File and SPFILE Autobackup at 05-DEC-11 RMAN> list backup of archivelog all; List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------- 16 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) 12 14.53M DISK 00:00:01 05-DEC-11 BP Key: 12 Status: AVAILABLE Compressed: NO Tag: TAG20111205T054643 Piece Name: /home/oracle/app/oracle/admin/orcl/0dmte263_1_1 List Thrd ---1 1 of Archived Logs in backup set 12 Seq Low SCN Low Time Next SCN ------- ---------- --------- ---------393 9180048 30-NOV-11 9203907 394 9203907 05-DEC-11 9214261 Next Time --------05-DEC-11 05-DEC-11 BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------14 16.28M DISK 00:00:00 05-DEC-11 BP Key: 14 Status: AVAILABLE Compressed: NO Tag: TAG20111205T061308 Piece Name: /home/oracle/app/oracle/admin/orcl/0fmte3nk_1_1 List Thrd ---1 1 1 of Archived Logs in backup set 14 Seq Low SCN Low Time Next SCN ------- ---------- --------- ---------393 9180048 30-NOV-11 9203907 394 9203907 05-DEC-11 9214261 395 9214261 05-DEC-11 9215764 Next Time --------05-DEC-11 05-DEC-11 05-DEC-11 BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------16 16.28M DISK 00:00:01 05-DEC-11 BP Key: 16 Status: AVAILABLE Compressed: NO Tag: TAG20111205T061328 Piece Name: /home/oracle/app/oracle/admin/orcl/0hmte3o8_1_1 List Thrd ---1 1 1 1 RMAN> of Archived Logs in backup set 16 Seq Low SCN Low Time Next SCN ------- ---------- --------- ---------393 9180048 30-NOV-11 9203907 394 9203907 05-DEC-11 9214261 395 9214261 05-DEC-11 9215764 396 9215764 05-DEC-11 9215790 Next Time --------05-DEC-11 05-DEC-11 05-DEC-11 05-DEC-11 list backup of archivelog from sequence 394 until sequence 394; List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------- 17 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) 12 14.53M DISK 00:00:01 05-DEC-11 BP Key: 12 Status: AVAILABLE Compressed: NO Tag: TAG20111205T054643 Piece Name: /home/oracle/app/oracle/admin/orcl/0dmte263_1_1 List Thrd ---1 of Archived Logs in backup set 12 Seq Low SCN Low Time Next SCN Next Time ------- ---------- --------- ---------- --------394 9203907 05-DEC-11 9214261 05-DEC-11 BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------14 16.28M DISK 00:00:00 05-DEC-11 BP Key: 14 Status: AVAILABLE Compressed: NO Tag: TAG20111205T061308 Piece Name: /home/oracle/app/oracle/admin/orcl/0fmte3nk_1_1 List Thrd ---1 of Archived Logs in backup set 14 Seq Low SCN Low Time Next SCN Next Time ------- ---------- --------- ---------- --------394 9203907 05-DEC-11 9214261 05-DEC-11 BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------16 16.28M DISK 00:00:01 05-DEC-11 BP Key: 16 Status: AVAILABLE Compressed: NO Tag: TAG20111205T061328 Piece Name: /home/oracle/app/oracle/admin/orcl/0hmte3o8_1_1 List Thrd ---1 of Archived Logs in backup set 16 Seq Low SCN Low Time Next SCN Next Time ------- ---------- --------- ---------- --------394 9203907 05-DEC-11 9214261 05-DEC-11 Incremental (Arttırımlı) Yedekleme RMAN’in bir diğer önemli özelliği “incremental” (arttırımlı) yedek alabilmesidir. Özellikle çok büyük veritabanlarının günlük alınan yedeklerini barındırmak oldukça maliyetli bir duruma gelebiliyor. Dolayısıyla hergün tüm veritabanının tamamının yedeğini almak yerine sadece değişen block’larin yedeğini almak hem toplam yedek alma süresini kısaltıyor hem de alınan yedeğin, disk üzerinde daha az yer kaplamasını sağlıyor. Temel Olarak iki seviye arttırımlı yedek alma seçeneğimiz var. Bunlardan ilki level-0 (seviye-0) arttırımlı yedek, ikincisi ise level-1 (seviye-1) arttırımlı yedek. Seviye-0 yedeği 18 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) aslında bir tam veritabanı yedeğine eşdeğer olarak algılanabilir, aradaki tek fark seviye-0 yedek kendinden sonra gelecek olan seviye-1 yedeklere bir baz teskil eder. Örnek vermek gerekirse, her pazar bir seviye-0 tam yedek alıp hafta içi günlük seviye-1 yedekler alınabilir. Seviye-1 yedek ise iki sınıfa ayrılır. “differential backup” (fark yedeği) ve “cumulative backup” (toplu yedek). Fark yedeği kendinden hemen önce alınan seviye-0 veya seviye-1 arttırımlı yedekten sonra değişmiş olan block’ları yedeklerken, toplu yedek ise kendinden önce gelen sadece seviye-0 arttırımlı yedekten sonra değişen block’lari yedekler. Gayet açıktır ki, seviye-1 fark yedekleri sadece günlük farklari içerirken, seviye-1 toplu yedek boyutu bir sonraki seviye-0 yedeğe kadar hergün artarak ilerleyecektir. Aradaki bu farkı veri kurtarma senaryoları arasında detaylı bir sekilde inceleyeceğiz. Aşağıdaki iki şemada seviye-1 fark ve toplu arttırımlı yedeklerin farklarini görebilirsiniz. Seviye-1 fark yedeğine örnek. (Level-1 differential backup) 19 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Seviye-1 toplu yedeğe bir örnek. (Level-1 cumulative backup) Aşağıdaki örnekte, seviye-0 ve seviye-1 yedeklerin nasıl alındığıni, komutları ve komut çıktılarini inceleyebilirsiniz. RMAN> backup incremental level 0 database; Starting backup at 06-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting incremental level 0 datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00002 name=/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00001 name=/home/oracle/app/oracle/oradata/orcl/system01.dbf input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf input datafile file number=00003 name=/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00005 name=/home/oracle/app/oracle/oradata/orcl/example01.dbf 20 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) input datafile file number=00007 name=/home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf input datafile file number=00006 name=/home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: starting piece 1 at 06-DEC-11 channel ORA_DISK_1: finished piece 1 at 06-DEC-11 piece handle=/home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 tag=TAG20111206T033455 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45 Finished backup at 06-DEC-11 Starting Control File and SPFILE Autobackup at 06-DEC-11 piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c-122939065520111206-02 comment=NONE Finished Control File and SPFILE Autobackup at 06-DEC-11 RMAN> backup incremental level 1 database; Starting backup at 06-DEC-11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=146 device type=DISK channel ORA_DISK_1: starting incremental level 1 datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00002 name=/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00001 name=/home/oracle/app/oracle/oradata/orcl/system01.dbf input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf input datafile file number=00003 name=/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00005 name=/home/oracle/app/oracle/oradata/orcl/example01.dbf input datafile file number=00007 name=/home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf input datafile file number=00006 name=/home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: starting piece 1 at 06-DEC-11 channel ORA_DISK_1: finished piece 1 at 06-DEC-11 piece handle=/home/oracle/app/oracle/admin/orcl/0lmtgddj_1_1 tag=TAG20111206T031043 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25 Finished backup at 06-DEC-11 Starting Control File and SPFILE Autobackup at 06-DEC-11 piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c-122939065520111206-00 comment=NONE Finished Control File and SPFILE Autobackup at 06-DEC-11 21 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) RMAN> list backup of database summary; List of Backups =============== Key TY LV S Device Type ------- -- -- - ----------6 B F A DISK TAG20111130T062649 18 B 0 A DISK TAG20111205T072847 20 B 1 A DISK TAG20111206T031043 Completion Time #Pieces #Copies Compressed Tag --------------- ------- ------- ---------- --30-NOV-11 1 1 NO 05-DEC-11 1 1 NO 06-DEC-11 1 1 NO RMAN> backup incremental level 1 cumulative database; Starting backup at 06-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting incremental level 1 datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00002 name=/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00001 name=/home/oracle/app/oracle/oradata/orcl/system01.dbf input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf input datafile file number=00003 name=/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00005 name=/home/oracle/app/oracle/oradata/orcl/example01.dbf input datafile file number=00007 name=/home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf input datafile file number=00006 name=/home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: starting piece 1 at 06-DEC-11 channel ORA_DISK_1: finished piece 1 at 06-DEC-11 piece handle=/home/oracle/app/oracle/admin/orcl/0nmtgdhh_1_1 tag=TAG20111206T031249 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07 Finished backup at 06-DEC-11 Starting Control File and SPFILE Autobackup at 06-DEC-11 piece handle=/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/c-122939065520111206-01 comment=NONE Finished Control File and SPFILE Autobackup at 06-DEC-11 RMAN> list backup of database summary; 22 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) List of Backups =============== Key TY LV S Device Type ------- -- -- - ----------6 B F A DISK TAG20111130T062649 18 B 0 A DISK TAG20111205T072847 20 B 1 A DISK TAG20111206T031043 22 B 1 A DISK TAG20111206T031249 Completion Time #Pieces #Copies Compressed Tag --------------- ------- ------- ---------- --30-NOV-11 1 1 NO 05-DEC-11 1 1 NO 06-DEC-11 1 1 NO 06-DEC-11 1 1 NO Veri Kurtarma Senaryoları Yaptığımız tum yedek planlarının ve aldığımız tüm yedeklerin tek bir amacı vardır. İstenmeyen muhtemel bir durum sonrasında meydana gelebilecek veri kaybını engellemek veya kısaca veri kurtarmak (recovery). Aldığımız yedeklerin tutarlılığını ve kullanılırlığını test etmek için düzenli olarak veri geri dönüş test senaryoları yaratmak, ileride meydana gelebilecek veri kayıplarını en kısa yoldan çözerek, veri tabanı downtime süresini en azda tutmak için cok yararlıdır. Zira aldığımız yedeklerin bozuk olup olmadığının, yedekleme planımizin duzenli ve tutarli olup olmadığının en doğrudan ispatı, elimizdeki bu yedeklerden sağlıklı bir şekilde geri dönüp dönemediğimizi kendi gözümüzle görmektir. Aynı yedek almak gibi geri dönüş de RMAN ile oldukça kolaydır. Veri kurtarmanın iki aşaması vardır. Birincisi “restore” aşaması ikincisi “recover” aşamasıdir. Restore aşaması veri dosyalarının RMAN yedek dosyalarından geri dönülmesini saglar. Recover işlemi ise, yedeğin alındığı zamandan itibaren veritabanı kapanmadan son ana kadar olan değişiklikleri restore edilen veri dosyalarına uygular. Kısaca “restore database” komutunu çalıştırarak veritabanının en son yedeğindeki veri dosyalarını ASM veya dosya sistemine yeniden kopyalar, ardından çalıştıracağınız “recover database” komutu ile veritabanının son anına tekrar geri dönebilirsiniz. Bunun için tum arşivlog ‘ların ve rman backupset’lerinin ulaşılabilir olması yeterlidir. Genellikle bu komut, olası bir fiziksel problem (disk kaybi, veri bozulması) dolayısıyla kaybolabilecek veri dosya veya dosyalarını geri dönmek için kullanılabilir. SQL> select name from v$datafile; NAME 23 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) -----------------------------------------------------------------------------/home/oracle/app/oracle/oradata/orcl/system01.dbf /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf /home/oracle/app/oracle/oradata/orcl/users01.dbf /home/oracle/app/oracle/oradata/orcl/example01.dbf /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf 7 rows selected. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@localhost ~]$ cd /home/oracle/app/oracle/oradata/orcl/ [oracle@localhost orcl]$ ls APEX_1246426611663638.dbf control01.ctl redo01.log redo03.log system01.dbf undotbs01.dbf APEX_1265209995679366.dbf example01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf [oracle@localhost orcl]$ rm *.dbf [oracle@localhost orcl]$ ls control01.ctl redo01.log redo02.log redo03.log [oracle@localhost orcl]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Tue Dec 6 04:55:45 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 456146944 bytes Fixed Size 1344840 bytes Variable Size 394267320 bytes Database Buffers 54525952 bytes Redo Buffers 6008832 bytes Database mounted. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 Production 24 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@localhost orcl]$ rman target / Recovery Manager: Release 11.2.0.2.0 - Production on Tue Dec 6 04:56:03 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (DBID=1229390655, not open) RMAN> restore database; Starting restore at 06-DEC-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=10 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00001 to /home/oracle/app/oracle/oradata/orcl/system01.dbf channel ORA_DISK_1: restoring datafile 00002 to /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf channel ORA_DISK_1: restoring datafile 00003 to /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf channel ORA_DISK_1: restoring datafile 00004 to /home/oracle/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: restoring datafile 00005 to /home/oracle/app/oracle/oradata/orcl/example01.dbf channel ORA_DISK_1: restoring datafile 00006 to /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: restoring datafile 00007 to /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf channel ORA_DISK_1: reading from backup piece /home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 channel ORA_DISK_1: piece handle=/home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 tag=TAG20111206T033455 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:35 Finished restore at 06-DEC-11 RMAN> recover database; Starting recover at 06-DEC-11 using channel ORA_DISK_1 starting media recovery media recovery complete, elapsed time: 00:00:01 Finished recover at 06-DEC-11 25 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) RMAN> sql 'alter database open'; sql statement: alter database open RMAN> exit Recovery Manager complete. [oracle@localhost orcl]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Tue Dec 6 05:03:16 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select open_mode, name from v$database; OPEN_MODE NAME -------------------- --------READ WRITE ORCL Eğer sadece bir veri dosyası kaybetmiş olsaydık, tüm veritabanını geri dönmek yerine sadece kaybolan veri dosyasını da dönebilirdik. Böyle bir durumda “restore datafile ‘<datafile_name>’ | ‘<datafile_number>’ ” komutunu kullanabilirdik. Hatta bunun için veritabanını kapatmak zorunda bile olmazdık. Şöyle ki; SQL> select name from v$tablespace; NAME -----------------------------SYSTEM SYSAUX UNDOTBS1 USERS TEMP EXAMPLE APEX_1246426611663638 APEX_1265209995679366 8 rows selected. SQL> select name from v$datafile; 26 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) NAME ------------------------------------------------------------------------------/home/oracle/app/oracle/oradata/orcl/system01.dbf /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf /home/oracle/app/oracle/oradata/orcl/users01.dbf /home/oracle/app/oracle/oradata/orcl/example01.dbf /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf 7 rows selected. SQL> alter tablespace example offline; Tablespace altered. RMAN> restore datafile '/home/oracle/app/oracle/oradata/orcl/example01.dbf'; Starting restore at 06-DEC-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=9 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00005 to /home/oracle/app/oracle/oradata/orcl/example01.dbf channel ORA_DISK_1: reading from backup piece /home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 channel ORA_DISK_1: piece handle=/home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 tag=TAG20111206T033455 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:03 Finished restore at 06-DEC-11 RMAN> recover datafile '/home/oracle/app/oracle/oradata/orcl/example01.dbf'; Starting recover at 06-DEC-11 using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 398 is already on disk as file /home/oracle/app/oracle/admin/orcl/archive/1_398_701609923.dbf archived log for thread 1 with sequence 1 is already on disk as file /home/oracle/app/oracle/admin/orcl/archive/1_1_769154109.dbf 27 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_398_701609923.dbf thread=1 sequence=398 archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_1_769154109.dbf thread=1 sequence=1 media recovery complete, elapsed time: 00:00:00 Finished recover at 06-DEC-11 SQL> alter tablespace example online; Tablespace altered. Diğer yandan her zaman veritabanının kapanmadan önceki son anına dönmek istemeyiz. Örneğin kullanıcı veya otomasyon kaynaklı hatalarda muhtemel yanlış veri girişi veya silinmesi söz konusu olabilir. Böyle durumlarda hatanın oluşmadan önceki haline geri dönmek isteyebiliriz. Bunun için de “restore database until time ‘<date>’ ” ve “recover database until time ‘<date>’ ” komutunu vererek zaman içerisindeki daha önceki bir duruma geri dönebiliriz (restore point in time). Burada dikkat edilmesi gereken bir durum, veritabanını açarken resetlogs opsiyonu ile açmanız gerektiğidir. Sebebi ise oldukça basit, geri dönüşünü gercekleştirdiğimiz veritabanı aslında bir önceki veritabanından farklı bir veritabanı, eğer aynı veritabanı olsaydı veritabanı kapanmadan hemen önceki halinde olması gerekirdi. Dolayısıyla aynı veritabanının farklı bir haliyle çalışmaya başlıyoruz (incarnation). RMAN> restore database until time "to_date('2011-12-06:13:00:00','YYYY-MMDD:HH24:MI:SS')"; Starting restore at 06-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00001 to /home/oracle/app/oracle/oradata/orcl/system01.dbf channel ORA_DISK_1: restoring datafile 00002 to /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf channel ORA_DISK_1: restoring datafile 00003 to /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf channel ORA_DISK_1: restoring datafile 00004 to /home/oracle/app/oracle/oradata/orcl/users01.dbf 28 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) channel ORA_DISK_1: restoring datafile 00005 to /home/oracle/app/oracle/oradata/orcl/example01.dbf channel ORA_DISK_1: restoring datafile 00006 to /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: restoring datafile 00007 to /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf channel ORA_DISK_1: reading from backup piece /home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 channel ORA_DISK_1: piece handle=/home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 tag=TAG20111206T033455 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:35 Finished restore at 06-DEC-11 RMAN> recover database until time "to_date('2011-12-06:13:00:00','YYYY-MMDD:HH24:MI:SS')"; Starting recover at 06-DEC-11 using channel ORA_DISK_1 starting media recovery media recovery complete, elapsed time: 00:00:01 Finished recover at 06-DEC-11 RMAN> sql 'alter database open resetlogs'; sql statement: alter database open resetlogs Şimdiye kadar sadece veri dosyası kayıplarını nasıl kurtarılabileceğinden bahsettik. Bundan sonra da, controlfile, spfile gibi diğer veritabanı dosyalarının kaybını nasıl kurtaracağımıza bakabiliriz. Dikkat ederseniz, RMAN repository controlfile üzerinde duruyor. Dolayısıyla controlfile’i kaybetmek aldığımız tum yedeklerin bilgilerini (metadata) kaybetmek anlamına geliyor. Her ne kadar RMAN yedeklerimiz disk üzerinde duruyor olsa da hangi backupset’te hangi backuppiece ve bu backuppiece’lerde hangi veritabanı dosyalarının tutulduğu bilgisi controlfile içerisindeki repository’de durur (catalog veritabanı olmadığı durumlarda). Dolayısıyla controlfile’in güvenilirliği RMAN için oldukça önemlidir. Öyleyse aşağıdaki örnekte olası bir controlfile kaybında yedekten nasıl kurtarabileceğimize bakalım. Hatırlarsanız önceki bölümlerde bir komuttan bahsetmiştik “configure controlfile auto backup on”, ve controlfile auto backup ‘in öneminden bu bölümde bahsedeceğimizi de belirtmiştik. Şimdi controlfile kaybında veritabanımızı nasıl kurtaracağımıza bakalım. 29 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Öncelikle controlfile dosyası olmadığı için veritabanı mount mode’a gelemeyecektir. Şu durumda veritabanını sadece nomount mode’da açabiliriz. Mount olmayan bir veritabanının DBID (veritabanı tanımlayıcı) değeri de olamayacağından RMAN hangi veritabanına baglı olduğunu bilemeyecektir. Dolayısıyla çalıştırmamız gereken ilk komut SET DBID komutu olmalıdır. Şu halde DBID değerini nereden alabilecegimiz sorusu gündeme gelir. Bu sorunun birkaç çözümu var. Birincisi daha önceki RMAN log’larında (tabi eğer dosya sisteminde hala duruyorlarsa), RMAN, target veritabanına ilk bağlandığında, hangi veritabanına bağlandığını belirtmek için DBID değerini ilk başta çıktısına yazar. Bir diğer yöntem ise controlfile auto backup’dır. “show configure controlfile autobackup format” komutuyla birlikte controlfile otomatik yedeklerinin alındığı dosya adını görebilirsiniz. Varsayılan olarak bu dosya adi %F formatındadır. Bunun anlamı dosya adında DBID’nin de bulunacagidir. Aşağıdaki kod bloğunda daha detaylı olarak görülebilir. [oracle@localhost dbs]$ pwd /home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs [oracle@localhost dbs]$ ls -l total 28796 -rw-rw---- 1 oracle oracle 9830400 Dec 6 03:35 c-1229390655-20111206-02 -rw-rw---- 1 oracle oracle 9830400 Dec 6 05:55 c-1229390655-20111206-03 -rw-rw---- 1 oracle oracle 1544 Oct 2 2010 hc_DBUA0.dat -rw-rw---- 1 oracle oracle 1544 Dec 6 05:55 hc_orcl.dat -rw-r--r-- 1 oracle oracle 2851 May 15 2009 init.ora -rw-r----- 1 oracle oracle 621 Oct 2 2010 initorcl.ora -rw-r----- 1 oracle oracle 24 Oct 2 2010 lkORCL -rw-r----- 1 oracle oracle 1536 Oct 2 2010 orapworcl -rw-rw---- 1 oracle oracle 9748480 Dec 6 05:55 snapcf_orcl.f -rw-r----- 1 oracle oracle 3584 Dec 6 05:47 spfileorcl.ora [oracle@localhost dbs]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Tue Dec 6 07:17:26 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit 30 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@localhost orcl]$ ls -l total 2578308 -rw-rw---- 1 oracle oracle 2105344 Dec 6 07:17 APEX_1246426611663638.dbf -rw-rw---- 1 oracle oracle 8396800 Dec 6 07:17 APEX_1265209995679366.dbf -rw-r----- 1 oracle oracle 9748480 Dec 6 07:17 control01.ctl -rw-rw---- 1 oracle oracle 85991424 Dec 6 07:17 example01.dbf -rw-r----- 1 oracle oracle 52429312 Dec 6 07:17 redo01.log -rw-r----- 1 oracle oracle 52429312 Dec 6 05:55 redo02.log -rw-r----- 1 oracle oracle 52429312 Dec 6 05:55 redo03.log -rw-rw---- 1 oracle oracle 1158684672 Dec 6 07:17 sysaux01.dbf -rw-rw---- 1 oracle oracle 845160448 Dec 6 07:17 system01.dbf -rw-rw---- 1 oracle oracle 20979712 Dec 6 07:00 temp01.dbf -rw-rw---- 1 oracle oracle 138420224 Dec 6 07:17 undotbs01.dbf -rw-rw---- 1 oracle oracle 230694912 Dec 6 07:17 users01.dbf [oracle@localhost orcl]$ mv control01.ctl control01.ctl.delete [oracle@localhost orcl]$ ls -lrt total 2578308 -rw-r----- 1 oracle oracle 52429312 Dec 6 05:55 redo03.log -rw-r----- 1 oracle oracle 52429312 Dec 6 05:55 redo02.log -rw-rw---- 1 oracle oracle 20979712 Dec 6 07:00 temp01.dbf -rw-rw---- 1 oracle oracle 230694912 Dec 6 07:17 users01.dbf -rw-rw---- 1 oracle oracle 138420224 Dec 6 07:17 undotbs01.dbf -rw-rw---- 1 oracle oracle 845160448 Dec 6 07:17 system01.dbf -rw-rw---- 1 oracle oracle 1158684672 Dec 6 07:17 sysaux01.dbf -rw-r----- 1 oracle oracle 52429312 Dec 6 07:17 redo01.log -rw-rw---- 1 oracle oracle 85991424 Dec 6 07:17 example01.dbf -rw-rw---- 1 oracle oracle 8396800 Dec 6 07:17 APEX_1265209995679366.dbf -rw-rw---- 1 oracle oracle 2105344 Dec 6 07:17 APEX_1246426611663638.dbf -rw-r----- 1 oracle oracle 9748480 Dec 6 07:17 control01.ctl.delete [oracle@localhost orcl]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Tue Dec 6 07:18:18 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to an idle instance. SQL> startup; ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers 456146944 1344840 394267320 54525952 6008832 bytes bytes bytes bytes bytes 31 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) ORA-00205: error in identifying control file, check alert log for more info SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@localhost orcl]$ rman target / Recovery Manager: Release 11.2.0.2.0 - Production on Tue Dec 6 07:18:44 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (not mounted) RMAN> show controlfile autobackup format ; RMAN configuration parameters for database with db_unique_name ORCL are: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default RMAN> set dbid 1229390655; executing command: SET DBID RMAN> restore controlfile from autobackup; Starting restore at 06-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: looking for AUTOBACKUP on day: 20111206 channel ORA_DISK_1: AUTOBACKUP found: c-1229390655-20111206-03 channel ORA_DISK_1: restoring control file from AUTOBACKUP c-122939065520111206-03 channel ORA_DISK_1: control file restore from AUTOBACKUP complete output file name=/home/oracle/app/oracle/oradata/orcl/control01.ctl output file name=/home/oracle/app/oracle/flash_recovery_area/orcl/control02.ctl Finished restore at 06-DEC-11 RMAN> sql 'alter database mount'; sql statement: alter database mount released channel: ORA_DISK_1 RMAN> recover database; Starting recover at 06-DEC-11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=10 device type=DISK 32 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) starting media recovery archived log for thread 1 with sequence 1 is already on disk as file /home/oracle/app/oracle/oradata/orcl/redo01.log archived log file name=/home/oracle/app/oracle/oradata/orcl/redo01.log thread=1 sequence=1 media recovery complete, elapsed time: 00:00:00 Finished recover at 06-DEC-11 RMAN> sql 'alter database open resetlogs'; sql statement: alter database open resetlogs Eğer controlfile autobackup yedeği elimizde yoksa bu durumda içerisinde controlfile yedeği olduğunu bildigimiz bir backupset’e ihtiyacımız vardır. Ihtiyacımız olan bir diğer parametre ise DBID değeridir. Elimizdeki RMAN yedek loglarından bu bilgileri elde edebilirsek bu durumda Aşağıdaki şekilde controlfile autobackup’ı olmaksızın veritabanı controlfile’ını kurtarabiliriz. [oracle@localhost ~]$ rman target / Recovery Manager: Release 11.2.0.2.0 - Production on Fri Dec 16 14:00:48 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (DBID=1229390655) RMAN> list backup of controlfile; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------16 Full 9.36M DISK 00:00:00 06-DEC-11 BP Key: 16 Status: AVAILABLE Compressed: NO Tag: TAG20111206T165549 Piece Name: /home/oracle/app/oracle/flash_recovery_area/ORCL/autobackup/2011_12_06/o1_mf_s _769193749_7fxgdojs_.bkp Control File Included: Ckp SCN: 9041033 Ckp time: 06-DEC-11 RMAN> exit Recovery Manager complete. 33 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Fri Dec 16 15:03:16 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit [oracle@localhost orcl]$ mv control01.ctl control01.ctl.old [oracle@localhost orcl]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Fri Dec 16 15:50:15 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to an idle instance. SQL> startup nomount; ORACLE instance started. Total System Global Area 456146944 bytes Fixed Size 1344840 bytes Variable Size 390073016 bytes Database Buffers 58720256 bytes Redo Buffers 6008832 bytes SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@localhost orcl]$ rman target / Recovery Manager: Release 11.2.0.2.0 - Production on Fri Dec 16 15:50:25 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (not mounted) RMAN> set DBID 1229390655; executing command: SET DBID RMAN> restore controlfile from '/home/oracle/app/oracle/flash_recovery_area/ORCL/autobackup/2011_12_06/o1_mf_ s_769193749_7fxgdojs_.bkp'; Starting restore at 16-DEC-11 34 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=10 device type=DISK channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 output file name=/home/oracle/app/oracle/oradata/orcl/control01.ctl output name=/home/oracle/app/oracle/flash_recovery_area/orcl/control02.ctl Finished restore at 16-DEC-11 file RMAN> sql 'alter database mount'; sql statement: alter database mount released channel: ORA_DISK_1 RMAN> recover database; Starting recover at 16-DEC-11 Starting implicit crosscheck backup at 16-DEC-11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=10 device type=DISK Crosschecked 6 objects Finished implicit crosscheck backup at 16-DEC-11 Starting implicit crosscheck copy at 16-DEC-11 using channel ORA_DISK_1 Finished implicit crosscheck copy at 16-DEC-11 searching for all files in the recovery area cataloging files... cataloging döne List of Cataloged Files ======================= File Name: /home/oracle/app/oracle/flash_recovery_area/ORCL/autobackup/2011_12_06/o1_mf_s _769193749_7fxgdojs_.bkp using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 390 is already on disk as file /home/oracle/app/oracle/oradata/orcl/redo03.log archived log for thread 1 with sequence 391 is already on disk as file /home/oracle/app/oracle/oradata/orcl/redo01.log archived log for thread 1 with sequence 392 is already on disk as file /home/oracle/app/oracle/oradata/orcl/redo02.log archived log file name=/home/oracle/app/oracle/oradata/orcl/redo03.log thread=1 sequence=390 archived log file name=/home/oracle/app/oracle/oradata/orcl/redo01.log thread=1 sequence=391 archived log file name=/home/oracle/app/oracle/oradata/orcl/redo02.log thread=1 sequence=392 media recovery complete, elapsed time: 00:00:00 35 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Finished recover at 16-DEC-11 RMAN> sql 'alter database open resetlogs'; sql statement: alter database open resetlogs RMAN> Redolog kayıplarında durum şimdiye kadar ele aldığımız kadar kolay değil. RMAN redolog yedeklerini almadığı için, redolog gruplarının mutlaka birden fazla redolog dosyası ile farklı disk gruplarına mirrorlanması önerilir. Eğer buna rağmen redolog kaybı yaşanırsa, son arşivlog dosyasına kadar recover işlemi (recover until cancel) yapılıp veritabanını resetlogs opsiyonu ile açmamiz gerekir. Aşağıdaki örnekte detaylı olarak incelenebilir. [oracle@localhost orcl]$ mv redo01.log redo01.log.delete [oracle@localhost orcl]$ mv redo02.log redo02.log.delete [oracle@localhost orcl]$ mv redo03.log redo03.log.delete [oracle@localhost orcl]$ ls -l total 2578316 -rw-rw---- 1 oracle oracle 2105344 Dec 6 09:34 APEX_1246426611663638.dbf -rw-rw---- 1 oracle oracle 8396800 Dec 6 09:34 APEX_1265209995679366.dbf -rw-rw---- 1 oracle oracle 9748480 Dec 6 09:34 control01.ctl -rw-rw---- 1 oracle oracle 85991424 Dec 6 09:34 example01.dbf -rw-r----- 1 oracle oracle 52429312 Dec 6 09:34 redo01.log.delete -rw-r----- 1 oracle oracle 52429312 Dec 6 07:21 redo02.log.delete -rw-r----- 1 oracle oracle 52429312 Dec 6 07:21 redo03.log.delete -rw-rw---- 1 oracle oracle 1158684672 Dec 6 09:34 sysaux01.dbf -rw-rw---- 1 oracle oracle 845160448 Dec 6 09:34 system01.dbf -rw-rw---- 1 oracle oracle 20979712 Dec 6 08:28 temp01.dbf -rw-rw---- 1 oracle oracle 138420224 Dec 6 09:34 undotbs01.dbf -rw-rw---- 1 oracle oracle 230694912 Dec 6 09:34 users01.dbf [oracle@localhost orcl]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Tue Dec 6 09:35:33 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to an idle instance. SQL> startup nomount; ORACLE instance started. Total System Global Area Fixed Size Variable Size 456146944 bytes 1344840 bytes 394267320 bytes 36 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Database Buffers 54525952 bytes Redo Buffers 6008832 bytes SQL> alter database mount; Database altered. [oracle@localhost archive]$ ls -l total 15204 -rw-rw---- 1 oracle oracle 5017600 Dec -rw-rw---- 1 oracle oracle 10520576 Dec 6 07:21 1_1_769154109.dbf 6 05:55 1_398_701609923.dbf RMAN> restore database; Starting restore at 06-DEC-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=134 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00001 to /home/oracle/app/oracle/oradata/orcl/system01.dbf channel ORA_DISK_1: restoring datafile 00002 to /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf channel ORA_DISK_1: restoring datafile 00003 to /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf channel ORA_DISK_1: restoring datafile 00004 to /home/oracle/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: restoring datafile 00005 to /home/oracle/app/oracle/oradata/orcl/example01.dbf channel ORA_DISK_1: restoring datafile 00006 to /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: restoring datafile 00007 to /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf channel ORA_DISK_1: reading from backup piece /home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 channel ORA_DISK_1: piece handle=/home/oracle/app/oracle/admin/orcl/0qmtger0_1_1 tag=TAG20111206T033455 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:35 Finished restore at 06-DEC-11 RMAN> recover database until sequence 1; Starting recover at 06-DEC-11 using channel ORA_DISK_1 starting media recovery 37 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) archived log for thread 1 with sequence 398 is already on disk as file /home/oracle/app/oracle/admin/orcl/archive/1_398_701609923.dbf archived log for thread 1 with sequence 1 is already on disk as file /home/oracle/app/oracle/admin/orcl/archive/1_1_769154109.dbf archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_398_701609923.dbf thread=1 sequence=398 archived log file name=/home/oracle/app/oracle/admin/orcl/archive/1_1_769154109.dbf thread=1 sequence=1 media recovery complete, elapsed time: 00:00:01 Finished recover at 06-DEC-11 RMAN> sql 'alter database open resetlogs'; sql statement: alter database open resetlogs Silinen arşivlog’ları geri dönmek oldukça kolaydır. Tek yapılması gereken “recover archivelog” komutunu gerekli opsiyonlar ile kullanmak. Burada dikkat edilmesi gereken gerekli opsiyonlar kısmı olmalı. Eğer oldukça haraketli bir veritabanınız varsa arşivlog üretimi de oldukça fazla olacağından disk alanı kullanımınızı önemli ölçüde arttırabilirsiniz. Dolayısıyla sadece recovery işlemi için gerekli olan arşivleri dönmekte fayda var. Bahsedilen opsiyonlardan bazılarını aşağıdaki örnekte görebilirsiniz; RMAN> list backup of archivelog all; List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------29 2.49M DISK 00:00:00 06-DEC-11 BP Key: 29 Status: AVAILABLE Compressed: NO Tag: TAG20111206T101015 Piece Name: /home/oracle/app/oracle/admin/orcl/11mth607_1_1 List Thrd ---1 1 1 of Archived Logs in backup set 29 Seq Low SCN Low Time Next SCN ------- ---------- --------- ---------1 9261705 06-DEC-11 9263976 2 9263976 06-DEC-11 9263999 3 9263999 06-DEC-11 9264023 Next Time --------06-DEC-11 06-DEC-11 06-DEC-11 38 TROUG 1 1 4 5 9264023 9264061 [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) 06-DEC-11 9264061 06-DEC-11 9264109 06-DEC-11 06-DEC-11 RMAN> list backup of archivelog from sequence 2 until sequence 4; List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------29 2.49M DISK 00:00:00 06-DEC-11 BP Key: 29 Status: AVAILABLE Compressed: NO Tag: TAG20111206T101015 Piece Name: /home/oracle/app/oracle/admin/orcl/11mth607_1_1 List Thrd ---1 1 1 of Archived Logs in backup set 29 Seq Low SCN Low Time Next SCN ------- ---------- --------- ---------2 9263976 06-DEC-11 9263999 3 9263999 06-DEC-11 9264023 4 9264023 06-DEC-11 9264061 Next Time --------06-DEC-11 06-DEC-11 06-DEC-11 RMAN> restore archivelog from sequence 2 until sequence 4; Starting restore at 06-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=2 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=3 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=4 channel ORA_DISK_1: reading from backup piece /home/oracle/app/oracle/admin/orcl/11mth607_1_1 channel ORA_DISK_1: piece handle=/home/oracle/app/oracle/admin/orcl/11mth607_1_1 tag=TAG20111206T101015 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 06-DEC-11 39 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) RMAN ile block corruption hatalarını gidermek Herhangi bir donanım arızasından veya erişim süresinin dolması sebebiyle bir veri dosyasının bir veya birkaç bloğu zarar görebilir. Bu gibi durumlarda tüm veritabanını veya sadece ilgili veri dosyasını geri dönmek her ne kadar işimizi gorse de, gerek operasyon, gerekse downtime süresinin uzunluğu açısından oldukça maliyetli bir işlemdir. RMAN yedekleri blok seviyesinde çalıştığı için bir veri dosyasının sadece bir bloğunu kurtarabiliriz. RMAN’in bize sağladığı en büyük avantajlardan birisi de budur. Bu işlem için öncelikle hangi veri dosyasının hangi block’larının bozulduğunu tanımlamamız gerekir. Bunun için bir kaç yöntem vardır. En bilinen yöntem daha eski veritabanı versiyonlarindan beri süregelen “dbverify” aracıdır. Bu aracı $ORACLE_HOME /bin/dbv olarak kullanabilirsiniz. Fakat bu bir RMAN dökümanı olduğu için bozulan blok’ları (corrupted blocks) RMAN komutları ile kurtaracağız. Tabi öncelikle bir veri dosyasının bir bloğunu bozmamız gerekiyor, hemen ardından “backup validate database” komutu ile bozulan blokların v$database_block_corruption tablosuna yazılmasını ve ardından “blockrecover datafile <datafile#> block <block#> | corruption list” komutu ile RMAN’in bozulan blok’ları kurtarmasını bekliyoruz. Burada “backup validate database” komutu, RMAN’in tüm veri dosyalarını sanki yedeğini alacakmış gibi okumasını fakat yedeğini almamasını sağlıyor. Aslında bir yedekleme simulasyonu yaparak veritabanı yedeğini sağlıklı bir şekilde alıp alamayacağını test ediyor. Aşağıda örneğini göreceğimiz özel durumda, veri dosyasının birisinde corrupt block olduğundan dolayı, RMAN’in bu yedeği gerçekleştiremeyeceğini logladığını görüyoruz. [oracle@localhost orcl]$ dd if=/dev/zero of=/home/oracle/app/oracle/oradata/orcl/users01.dbf bs=8k conv=notrunc seek=10 count=1 1+0 records in 1+0 records out 8192 bytes (8.2 kB) copied, 0.00071387 seconds, 11.5 MB/s [oracle@localhost orcl]$ RMAN> backup validate database; Starting backup at 06-DEC-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=22 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set 40 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) input datafile file number=00002 name=/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00001 name=/home/oracle/app/oracle/oradata/orcl/system01.dbf input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf input datafile file number=00003 name=/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00005 name=/home/oracle/app/oracle/oradata/orcl/example01.dbf input datafile file number=00007 name=/home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf input datafile file number=00006 name=/home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25 List of Datafiles ================= File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------1 OK 0 13118 103170 9265409 File Name: /home/oracle/app/oracle/oradata/orcl/system01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 70965 Index 0 15417 Other 0 3668 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------2 OK 0 15264 141509 9265440 File Name: /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 31161 Index 0 18204 Other 0 76811 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------3 OK 0 0 16904 9265440 File Name: /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 0 Index 0 0 Other 0 16896 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 41 TROUG 4 [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) FAILED 0 2825 28162 8571853 File Name: /home/oracle/app/oracle/oradata/orcl/users01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 3735 Index 0 1539 Other 1 20061 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------5 OK 0 1580 10501 5843748 File Name: /home/oracle/app/oracle/oradata/orcl/example01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 3947 Index 0 1110 Other 0 3859 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------6 OK 0 1 257 7045119 File Name: /home/oracle/app/oracle/oradata/orcl/APEX_1246426611663638.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 0 Index 0 0 Other 0 255 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------7 OK 0 235 1025 7570545 File Name: /home/oracle/app/oracle/oradata/orcl/APEX_1265209995679366.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 194 Index 0 102 Other 0 493 validate found one or more corrupt blocks See trace file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_8677.trc for details channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set including current SPFILE in backup set channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 List of Control File and SPFILE =============================== 42 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) File Type Status Blocks Failing ------------ ------ -------------SPFILE OK 0 Control File OK 0 Finished backup at 06-DEC-11 Blocks Examined --------------2 594 RMAN> backup validate tablespace users; Starting backup at 06-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03 List of Datafiles ================= File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------4 FAILED 0 2825 28162 8571853 File Name: /home/oracle/app/oracle/oradata/orcl/users01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 3735 Index 0 1539 Other 1 20061 validate found one or more corrupt blocks See trace file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_8677.trc for details Finished backup at 06-DEC-11 SQL> select * from v$database_block_corruption; FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO ---------- ---------- ---------- ------------------ --------4 10 1 0 ALL ZERO RMAN> blockrecover datafile 4 block 10; Starting recover at 06-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: restoring block(s) channel ORA_DISK_1: specifying block(s) to restore from backup set restoring blocks of datafile 00004 43 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) channel ORA_DISK_1: reading from backup piece /home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_12_06/o1_mf_nn ndf_TAG20111206T160407_7fxccrx8_.bkp channel ORA_DISK_1: piece handle=/home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2011_12_06/o 1_mf_nnndf_TAG20111206T160407_7fxccrx8_.bkp tag=TAG20111206T160407 channel ORA_DISK_1: restored block(s) from backup piece 1 channel ORA_DISK_1: block restore complete, elapsed time: 00:00:03 starting media recovery media recovery complete, elapsed time: 00:00:03 Finished recover at 06-DEC-11 RMAN> backup validate tablespace users; Starting backup at 06-DEC-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 List of Datafiles ================= File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------4 OK 0 4116 28160 8571853 File Name: /home/oracle/app/oracle/oradata/orcl/users01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------Data 0 3820 Index 0 1542 Other 0 18682 Finished backup at 06-DEC-11 SQL> select * from v$database_block_corruption; no rows selected RMAN’de Script Kullanımı RMAN içerisinde scriptler yazarak ardışıl komutları cağırabilirsiniz. Bunun için yazmak istediğiniz ardışıl komutları alt alta yazarak bir “run” bloğu içerisine koyabilirsiniz. Ayrıca 44 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) bu blok için bir dosya hazırlayıp RMAN’e bu dosyayı çalıştırmasını bildirebilirsiniz. Örneğin bir veritabanı yedeği almak için tek tek komutları çalıştırıp çıktılarını beklemek yerine aşağıdaki gibi bir script hazırlanabilir. Script’lerde dikkat edilmesi gereken noktalardan birisi de, run bloğu içerisinde tanımlanan tüm parametrelerin blok sonunda etkisini yitirmesidir. Dolayısıyla bu dökümanın en basında ayarladığımız channel ayarlarını run bloğu içerisinde ezebilir ve sadece ilgili blok içerisinde tanımlanmış channel ayarlarını kullanarak yedek alabilirsiniz. Hem de RMAN varsayılan değerlerini değiştirmiş olmazsınız. RMAN> run{ allocate channel disk1 device type disk format '/home/oracle/app/oracle/admin/orcl/backup/%U'; crosscheck archivelog all; backup archivelog all delete all input; backup database; backup current controlfile; backup spfile; } veya bu script’i bir dosya içerisine yazıp RMAN’e bu dosyayı çalıştırmasını söyleyebilirsiniz. [oracle@localhost backup]$ rman target / cmdfile backup.rman Recovery Manager: Release 11.2.0.2.0 - Production on Tue Dec 6 16:54:57 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (DBID=1229390655) RMAN> run{ 2> allocate channel disk1 device type disk format '/home/oracle/app/oracle/admin/orcl/backup/%U'; 3> crosscheck archivelog all; 4> backup archivelog all delete all input; 5> backup database; 6> backup current controlfile; 7> backup spfile; 8> } 9> using target database control file instead of recovery catalog allocated channel: disk1 channel disk1: SID=39 device type=DISK 45 TROUG [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] RMAN (Recovery Manager) Script olarak çalıştırılabilecek bir başka örnek ise block corruption validasyonlarının düzenli olarak yapılması ve herhangi bir veri dosyasında block corruption bulunduğunda blockrecover komutunun çalıştırılması. Aslında oldukça basit bir script ile bu iş halledilebilir. RMAN> run{ 2> backup validate database; 3> blockrecover corruption list; 4> } 46
Benzer belgeler
OEM Grid Control 11gR1 Kurulumu - Talip Hakan Öztürk`s ORACLE
http://www.oracle.com/technetwork/oem/grid-control/downloads/index.html
7- İndirdiğimiz kurulum dosyalarını WinSCP tarzı bir programla Linux işletim
sistemi üzerinde açtığımız bir klasöre kopyalıyo...
oracle database 11g r2 kurulumu
The execution of the script is complete.
İkinci script (ortam değişkenleri set edilir. Bize dizin sorduğunda ENTER
ile devam edebiliriz.)
$/u01/app/oracle/product/11.2.0/db_1/root.sh
Running Oracle...