Oracle Data Guard (RAC+DG) 歸檔刪除策略及指令碼

來源:互聯網
上載者:User

1、Data Guard 主庫歸檔檔案刪除策略:

當我們設定:

RMAN>configure archivelog deletion policy to applied on standby;

在Maximum Availability和 Maximum Performance下,RMAN備份歸檔檔案的時候,加上delete input的時候,歸檔會被刪除。

RMAN> configure archivelog deletion policy to none;

此時歸檔刪除策略會被取消。

2、Data  Guard 備庫歸檔檔案刪除策略

此次備庫的歸檔刪除策略是在單機版的基礎上進行升級,增加了日誌功能,支援對2個節點RAC主庫的歸檔檔案在備庫上刪除的功能,可以作為計劃任務執行也可以以互動的形式單獨執行。

由於備庫一般不執行rman備份計劃,所以需要指令碼刪除這些歸檔記錄檔。

[Oracle@ www.bkjia.com backup_scripts]$ vim delstarch.sh

export ORACLE_THREAD=$1
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=bdspoc
export SHELL_DIR=/u01/app/oracle/backup_scripts
export DATE=$(date +%Y-%m-%d\ %H:%M:%S)
if [ ! $ORACLE_THREAD ];then
read -p "Enter deleted thread[1|2]: "
DB_THREAD=$REPLY
else
DB_THREAD=$ORACLE_THREAD
fi
if [ $DB_THREAD == 1 ];then
del_seq=`ls /arch|grep ^1|cut -f2 -d_|sort -n |head -1`
echo $del_seq "is the minimum archlog sequence"
$ORACLE_HOME/bin/sqlplus -s "sys/***** as sysdba" <<eof >$SHELL_DIR/max_sn.log
set head off;
set feedback;
select max(sequence#) from v\$log_history where THREAD#=1;
exit;
eof
max_sn=`cat /u01/app/oracle/backup_scripts/max_sn.log|awk '{print $1}'|grep ^[0-9]`
#保留最近的20個歸檔,其他都刪除
max_sn=`expr $max_sn - 20`
echo $max_sn "is the maximum archlog sequence"
while [ $del_seq -lt $max_sn ]
do
DATE=$(date +%Y%m%d_%H%M%S)
rm /arch/1_"$del_seq"_816281825.arc
DATE=$(date +%Y-%m-%d\ %H:%M:%S)
#由於log_archive_format 為%t_%s_%r.arc類型,%r為resetlog id
echo "$DATE"  /arch/1_"$del_seq"_816281825.arc >> $SHELL_DIR/delarch.log
del_seq=`expr $del_seq + 1`
echo "$DATE"  1_"$del_seq"_816281825.arc
done
elif [ $DB_THREAD == 2 ];then
del_seq=`ls /arch|grep ^2|cut -f2 -d_|sort -n |head -1`
echo $del_seq "is the minimum archlog sequence"
$ORACLE_HOME/bin/sqlplus -s "sys/***** as sysdba" <<eof >$SHELL_DIR/max_sn.log
set head off;
set feedback;
select max(sequence#) from v\$log_history where upper(THREAD#)=2;
exit;
eof
max_sn=`cat /u01/app/oracle/backup_scripts/max_sn.log|awk '{print $1}'|grep ^[0-9]`
max_sn=`expr $max_sn - 20`
echo $max_sn "is the maximum archlog sequence"
while [ $del_seq -lt $max_sn ]
do
rm /arch/2_"$del_seq"_816281825.arc
DATE=$(date +%Y-%m-%d\ %H:%M:%S)
echo "$DATE"  /arch/2_"$del_seq"_816281825.arc >> $SHELL_DIR/delarch.log
echo "$DATE"  2_"$del_seq"_816281825.arc  has been deleted
del_seq=`expr $del_seq + 1`
done
else
echo "$DATE"  There has a fault db_thread value! >> $SHELL_DIR/delarch.log
fi

可以互動式執行,例如:

[oracle@ www.bkjia.com backup_scripts]$ sh delstarch.sh
Enter deleted thread[1|2]: 1                                    --選擇刪除從哪個節點歸檔來的記錄檔
 

也可以做成計劃任務執行該指令碼

[root@ www.bkjia.com ~]# crontab -l

0 1 * * *  su - oracle -c    /u01/app/oracle/backup_scripts/delstarch.sh  1

0 2 * * *  su - oracle -c    /u01/app/oracle/backup_scripts/delstarch.sh  2

每天1點執行1節點歸檔來的記錄檔,2點執行2節點歸檔來的記錄檔。

推薦閱讀:

Oracle 11G RAC 修改歸檔模式

Oracle RMAN 清除歸檔日誌

Oracle 11g Flashback Data Archive(閃回資料歸檔)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.