Daha önce yazdığınız iki rman yedekleme ve kurtarma komut dosyasını paylaşın. Kendiniz test edebilir, bazı özel parametreleri değiştirebilir, oluşturma dizinini mevcut duruma göre değiştirebilir ve tam yedekleme ve artımlı yedekleme tarihini gerektiği gibi ayarlayabilirsiniz.
Komut dosyasının içeriğini aşağıda paylaşın.
vi /rmanbackup/scripts/rmanbackup.sh
# / bin / bash ORACLE_BASE = / u01 / app / oracle dışa aktar ORACLE_HOME = ORACLE_BASE / ürün / 11.2.0 / db_1 $ dışa aktar ORACLE_OWNER = oracle dışa aktar ORACLE_SID = nwppdb_1 dışa aktar ORACLE_UNQNAME = nwppdb'yi dışa aktar dışa aktarma PATH = / u01 / app / oracle / product / 11.2.0 / db_1 / bin: /u01/app/oracle/product/11.2.0/db_1/OPatch: /usr/lib64/qt-3.3/bin: / usr / local / bin: / bin: / usr / bin: / usr / local / sbin: / usr / sbin: / sbin: / home / oracle / bin dışa aktar LD_LIBRARY_PATH = $ ORACLE_HOME / lib: $ ORACLE_HOME / rdbms / lib: / lib: / usr / lib dışa aktar CLASSPATH = $ ORACLE_HOME / JRE: $ ORACLE_HOME / jlib: $ ORACLE_HOME / rdbms / jlib: $ ORACLE_HOME / ağ / jlib dışa aktar NLS_LANG = AMERICAN_AMERICA.ZHS16GBK dışa aktar NLS_DATE_FORMAT = "yyyy-aa-gg HH24: MI: SS" ORACLE_PATH = / home / oracle dışa aktar bugün = `tarih +% Y-% m-% d` #Delete 7 günün süresi doldu find / rmanbackup / dbbak / -name "* tam *" -mtime +7 -exec rm {} \; find / rmanbackup / dbbak / -name "* arşiv günlüğü *" -mtime +7 -exec rm {} \; find / rmanbackup / dbbak / -name "kontrol dosyası *" -mtime +7 -exec rm {} \; find / rmanbackup / dbbak / -name "spfile *" -mtime +7 -exec rm {} \; # rman hedef / nocatalog günlüğü /rmanbackup/rmanlog/rmanbk_$today.log ek < < EOF Çalıştırmak { çapraz kontrol yedekleme; noprompt süresi dolmuş yedeklemeyi silin; kanal c1 cihaz tipi diski ayırın; --maxpiecesize = 3500M RMAN yedek parçasının boyutunu sınırlayın kanal c2 cihaz tipi diski ayırın; kanal c3 cihaz tipi diski ayırın; kanal c4 cihaz tipi diski ayırın; sıkıştırılmış yedekleme kümesi biçimi olarak yedekleme '/ rmanbackup / dbbak / nwppdb_full_% T_% d_% s_% p_% u.dbf' veritabanı artı arşiv günlüğü; sql "ALTER SYSTEM anahtar günlük dosyası"; sql "ALTER SYSTEM anahtar günlük dosyası"; sql "ALTER SYSTEM anahtar günlük dosyası"; noprompt arşiv günlüğünü time'sysdate-7'ye kadar sil; geçerli denetim dosyası biçimini yedekle '/ rmanbackup / dbbak / controlfile_% T_% U_% t.crl'; yedekleme spfile biçimi '/ rmanbackup / dbbak / spfile_% T_% U_% t.ora'; yayın kanalı c1; yayın kanalı c2; yayın kanalı c3; yayın kanalı c4; } çıkış EOFGünlük çıktısı:
Aşağıdaki gibi oluşturulur:
Biçim: dakika, saat, gün, ay, haftanın günü komutu
3022 * * * /rmanbackup/scripts/rmanbackup.sh
1. Yedek komut dosyası
1.1 Hafta sonu seviye 0 tam ekipman
vi /rmanbackup/scripts/rman_0_level_full.sh
# / bin / bash ORACLE_BASE = / u01 / app / oracle dışa aktar ORACLE_HOME = ORACLE_BASE / ürün / 11.2.0 / db_1 $ dışa aktar ORACLE_OWNER = oracle dışa aktar ORACLE_SID = nwppdb_1 dışa aktar ORACLE_UNQNAME = nwppdb'yi dışa aktar dışa aktarma PATH = / u01 / app / oracle / product / 11.2.0 / db_1 / bin: /u01/app/oracle/product/11.2.0/db_1/OPatch: /usr/lib64/qt-3.3/bin: / usr / local / bin: / bin: / usr / bin: / usr / local / sbin: / usr / sbin: / sbin: / home / oracle / bin dışa aktar LD_LIBRARY_PATH = $ ORACLE_HOME / lib: $ ORACLE_HOME / rdbms / lib: / lib: / usr / lib dışa aktar CLASSPATH = $ ORACLE_HOME / JRE: $ ORACLE_HOME / jlib: $ ORACLE_HOME / rdbms / jlib: $ ORACLE_HOME / ağ / jlib dışa aktar NLS_LANG = AMERICAN_AMERICA.ZHS16GBK dışa aktar NLS_DATE_FORMAT = "yyyy-aa-gg HH24: MI: SS" ORACLE_PATH = / home / oracle dışa aktar bugün = `tarih +% Y-% m-% d` #Delete 7 günün süresi doldu bul / rmanbackup / hafta / -name "* tam *" -mtime +7 -exec rm {} \; bul / rmanbackup / hafta / -isim "* ark *" -mtime +7 -exec rm {} \; bul / rmanbackup / hafta / -name "ctl *" -mtime +7 -exec rm {} \; bul / rmanbackup / hafta / -name "spfile *" -mtime +7 -exec rm {} \; # 0 seviyesinde tam ekipman rman hedef / nocatalog msglog /rmanbackup/rmanlog/fullback0_$today.log < < EOF Çalıştırmak{ çapraz kontrol yedekleme; noprompt süresi dolmuş yedeklemeyi silin; kanal d1 tipi diski ayırın; kanal d2 tipi diski ayırın; kanal d3 tipi diski ayırın; kanal d4 tipi diski ayırın; sıkıştırılmış yedekleme kümesi veritabanı biçimi olarak yedek artımlı düzey 0 '/ rmanbackup / hafta / nwppdbfull0_% d_% T_% t_% s_% p'; sql'alter sistem arşiv günlüğü akımı '; sıkıştırılmış yedekleme kümesi dosyaları olarak yedekleme 10 format '/ rmanbackup / hafta / arch_% d_% T_% t_% s_% p' arşiv günlüğü tümü; geçerli denetim dosyası biçimini yedekle '/ rmanbackup / hafta / ctl_% d_% T_% t_% s_% p'; yedekleme spfile biçimi '/ rmanbackup / hafta / spfile_% T_% U_% t.ora'; yayın kanalı d1; yayın kanalı d2; yayın kanalı d3; yayın kanalı d4;} EOF1.2 Pazartesiden Cumartesiye, hafta sonları seviye 0 tam yedekleme için her gün seviye 1 farklı artımlı yedekleme gerçekleştirin
vi /rmanbackup/scripts/rman_1_level_incremental.sh
# / bin / bash ORACLE_BASE = / u01 / app / oracle dışa aktar ORACLE_HOME = ORACLE_BASE / ürün / 11.2.0 / db_1 $ dışa aktar ORACLE_OWNER = oracle dışa aktar ORACLE_SID = nwppdb_1 dışa aktar ORACLE_UNQNAME = nwppdb'yi dışa aktar dışa aktarma PATH = / u01 / app / oracle / product / 11.2.0 / db_1 / bin: /u01/app/oracle/product/11.2.0/db_1/OPatch: /usr/lib64/qt-3.3/bin: / usr / local / bin: / bin: / usr / bin: / usr / local / sbin: / usr / sbin: / sbin: / home / oracle / bin dışa aktar LD_LIBRARY_PATH = $ ORACLE_HOME / lib: $ ORACLE_HOME / rdbms / lib: / lib: / usr / lib dışa aktar CLASSPATH = $ ORACLE_HOME / JRE: $ ORACLE_HOME / jlib: $ ORACLE_HOME / rdbms / jlib: $ ORACLE_HOME / ağ / jlib dışa aktar NLS_LANG = AMERICAN_AMERICA.ZHS16GBK dışa aktar NLS_DATE_FORMAT = "yyyy-aa-gg HH24: MI: SS" ORACLE_PATH = / home / oracle dışa aktar bugün = `tarih +% Y-% m-% d` #Delete 7 günün süresi doldu bul / rmanbackup / gün / -name "* tam *" -mtime +7 -exec rm {} \; find / rmanbackup / day / -name "* arch *" -mtime +7 -exec rm {} \; find / rmanbackup / day / -name "ctl *" -mtime +7 -exec rm {} \; find / rmanbackup / day / -name "spfile *" -mtime +7 -exec rm {} \; rman hedef / nocatalog msglog /rmanbackup/rmanlog/incrementback1_$today.log < < EOF Çalıştırmak{ çapraz kontrol yedekleme; noprompt süresi dolmuş yedeklemeyi silin; kanal d1 tipi diski ayırın; kanal d2 tipi diski ayırın; kanal d3 tipi diski ayırın; kanal d4 tipi diski ayırın; sıkıştırılmış yedekleme kümesi veritabanı biçimi olarak yedek artımlı seviye 1 '/ rmanbackup / gün / artış1_% d_% T_% t_% s_% p'; sql'alter sistem arşiv günlüğü akımı '; sıkıştırılmış yedekleme kümesi dosyaları olarak yedekleme 10 format '/ rmanbackup / day / arch_% d_% T_% t_% s_% p' arşiv günlüğü tümü; geçerli denetim dosyası biçimini yedekle '/ rmanbackup / gün / ctl_% d_% T_% t_% s_% p'; yedek spfile biçimi '/ rmanbackup / day / spfile_% T_% U_% t.ora'; yayın kanalı d1; yayın kanalı d2; yayın kanalı d3; yayın kanalı d4; } EOF2. Yoğun iş saatlerinden kaçınmak için Crontab zamanlanmış görevler
04 * * 0 /rmanbackup/scripts/rman_0_level_full.sh 04 * * 1-6 /rmanbackup/scripts/rman_1_level_incremental.shDüzenli yedekleme yapmak aslında yeterli değildir.Ayrıca, yedekleme verilerinin geçerliliğini düzenli olarak kontrol etmeniz gerekir veya yedeklemenin ne zaman başarısız olacağını belirleyebilirsiniz ~
RMAN yedekleme ve kurtarma hakkında daha fazla bilgi daha sonra paylaşılacak ve ilgilenen arkadaşlar buna dikkat edebilir!