Bu örneğimizde veritabanımız için 3 günde bir gece 03:00 da full backup alsın hergün incremental Level -1 backup, bu arada bloack change tracking file oluşturup bu dosyayıda enable yapalım, 6 saatte birde archive loğların yedeğini alsın, şeklinde bir kurguyu script olarak hazırlamaya çalışalım.
Burada işlemci sayımıza göre uygun bir channel sayısı ayarlanmalıdır. Ben 8 channel ile 8 parallelik derecesinde backup alıyorum siz kendi sisteminize ve ihtiyacınıza göre artırıp azaltabilirsiniz.
Level 0 full backup için scriptimizi oluşturalım, daha sonra oluşturduğumuz scriptleri crontab a ekleyeceğiz.
vi /u01/scripts/rman_L0.sh
export TIME=$(date +"%Y%m%d")
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/db
export ORACLE_SID=frkdb
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
rman target / < /u01/scripts/rman_L0.scr > /u01/scripts/log/rman_full'date +\%Y\%m\%d\_%H\%M'.log
rman_L0.scr dosyamızı hazırlayalım
vi /u01/scripts/rman_L0.scr
sql 'alter system archive log current';
sql "alter session set nls_date_format=''dd.mm.yyyy hh24:mi:ss''";
RUN
{
configure controlfile autobackup on;
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
ALLOCATE CHANNEL c4 DEVICE TYPE disk;
ALLOCATE CHANNEL c5 DEVICE TYPE disk;
ALLOCATE CHANNEL c6 DEVICE TYPE disk;
ALLOCATE CHANNEL c7 DEVICE TYPE disk;
ALLOCATE CHANNEL c8 DEVICE TYPE disk;
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 database tag=FRKDB_FULL format '/data/backup/%d_%T_%s_%p_FULL' ;
sql 'alter system archive log current';
BACKUP AS COMPRESSED BACKUPSET tag FRKDB_ARCHIVE format '/data/backup/%d_%T_%s_%p_ARCHIVE' archivelog all not backed up 1 times;
BACKUP tag FRKDB_CONTROL current controlfile format '/data/backup/%d_%T_%s_%p_CONTROL';
DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 4 DAYS;
CROSSCHECK ARCHIVELOG ALL;
CROSSCHECK BACKUP;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED BACKUP;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
}
Archive log backupları için;
vi /u01/scripts/rman_archive.sh
export TIME=$(date +"%Y%m%d")
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/db
export ORACLE_SID=frkdb
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
rman target / < /u01/scripts/rman_archive.scr > /u01/scripts/log/rman_archive'date +\%Y\%m\%d\_%H\%M'.log
rman_archive.scr dosyasını hazırlayalım
vi /u01/scripts/rman_archive.scr
sql 'alter system archive log current';
sql "alter session set nls_date_format=''dd.mm.yyyy hh24:mi:ss''";
RUN
{
configure controlfile autobackup on;
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
ALLOCATE CHANNEL c4 DEVICE TYPE disk;
ALLOCATE CHANNEL c5 DEVICE TYPE disk;
ALLOCATE CHANNEL c6 DEVICE TYPE disk;
ALLOCATE CHANNEL c7 DEVICE TYPE disk;
ALLOCATE CHANNEL c8 DEVICE TYPE disk;
BACKUP archivelog all tag=FRKDB_ARCHIVE format '/data/backup/%d_%T_%s_%p_ARCHIVE';
DELETE NOPROMPT ARCHIVELOG ALL completed before 'sysdate-1';
DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 4 DAYS;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
}
L1 Backup ları için ;
export TIME=$(date +"%Y%m%d")
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/db
export ORACLE_SID=frkdb
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
rman target / < /u01/scripts/rman_L1.scr > /u01/scripts/log/rman_full'date +\%Y\%m\%d\_%H\%M'.log
rman_L1.scr dosyasıı hazırlayalım;
vi /u01/scripts/rman_L1.sh
export TIME=$(date +"%Y%m%d")
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/db
export ORACLE_SID=frkdb
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
rman target / < /u01/scripts/rman_L1.scr > /u01/scripts/log/rman_incr'date +\%Y\%m\%d\_%H\%M'.log
rman_L1.scr dosyasını hazırlayalım ;
vi /u01/scripts/rman_L1.src
sql ‘alter system archive log current’;
sql "alter session set nls_date_format=''dd.mm.yyyy hh24:mi:ss''";
RUN
{
configure controlfile autobackup on;
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
ALLOCATE CHANNEL c4 DEVICE TYPE disk;
ALLOCATE CHANNEL c5 DEVICE TYPE disk;
ALLOCATE CHANNEL c6 DEVICE TYPE disk;
ALLOCATE CHANNEL c7 DEVICE TYPE disk;
ALLOCATE CHANNEL c8 DEVICE TYPE disk;
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 1 database tag FRKDB_INCR format '/data/backup/%d_%T_%s_%p_INCR' ;
sql 'alter system archive log current';
BACKUP AS COMPRESSED BACKUPSET tag FRKDB_ARCHIVE format '/data/backup/%d_%T_%s_%p_ARCHIVE' archivelog all not backed up 1 times;
BACKUP tag FRKDB_CONTROL current controlfile format '/data/backup/%d_%T_%s_%p_CONTROL';
DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 4 DAYS;
CROSSCHECK ARCHIVELOG ALL;
CROSSCHECK BACKUP;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED BACKUP;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
}
Şimdi bu oluşturdğumuz scriptleri Linux crotab a ekleyerek backuplarımızın otomatik olarak çalışmasını sağlayalım
Crotab –e
#3 günde bir full backup için;
30 3 1,4,7,10,13,16,19,22,25,28 * * /u01/scripts/rman_L0.sh > /u01/scripts/log/rman_L0_cron.log 2>&1
# 6 saatte bir ARCHIVELOG backup
00 0,6,12,18 * * * /u01/scripts/rman_archive.sh > /u01/scripts/log/rman_archive_cron.log 2>&1
#Her gün L1 backup için
00 00 * * * /u01/scripts/rman_L1.sh > /u01/scripts/log/rman_L1_cron.log 2>&1
Block change tracking file ayarlaması için öncelikli olarak block change tracking durumunu kontrol edelim
SQL> select filename, status, bytes from v$block_change_tracking;
FILENAME STATUS BYTES
---------- ----------
DISABLED
SQL> alter database enable block change tracking using file '/data/block_change_tracking.dbf';
SQL> select filename, status, bytes from $block_change_tracking;
FILENAME STATUS BYTES
/data/block_change_tracking.dbf ENABLED 11599872
Comments (2)
Mertsays:
Temmuz 20, 2022 at 10:34 amMerhaba:
Rac yapılar için backup alıyorum ancak arşiv logları eksik alıyor hatta rman katalog altında bu arşivi bulamıyorum ama db açılmak istendiğinde bu arşivi istiyor sistem bunun nedeni ne olabilir hocam.
Faruk Çeviksays:
Temmuz 21, 2022 at 2:10 pmMerhaba, yapının RAC olmasıyla bu archivelogların eksik olmasının bir ilgisi olduğunu düşünmüyorum açıkçası, Sanırım backuptan dönüş senaryosunda sorun yaşıyorsunuz, eksik archivelog ile ilgili backup işlemine başlamadan önce bir checkpoint adımı ekleyip deneyebilirsiniz, yüksek olasılıkla eksik gördüğü archivelog son archivelogtur diye düşünüyorum, burada controlfile ile alınan archive backuplarının arasında bir senkron kayması olabilir, controlfileda yazan archivelog sizin backuplarınızda yok anlaşılan, backup adımlarında önce kontrol file backup ını alın sonra kataloglayarak restore ve recover adımlarını gerçekleştirerek deneyin derim.