Oracle Data Guard 主庫歸檔檔案刪除策略
對於Oracle Data Guard 的Maximum Availability和 Maximum Performance 兩種模式下的主庫歸檔檔案的刪除,必須是在歸檔檔案在備庫應用以後才可以刪除。
對於Maximum Protection 模式,這種模式的日誌是同時寫到主庫和備庫的,所以這種模式下的主庫刪除歸檔,沒有限制。 可以直接刪除。
那麼在Maximum Availability和 Maximum Performance下,RMAN 備份歸檔檔案的時候,如果我們加上delete input,那麼如何確定歸檔問及愛你該不該刪除。
在10g之前的版本,只能通過作業系統指令碼的方式,在刪除歸檔檔案之前,首先對Standby端資料庫的歸檔檔案應用狀態作判斷,應用之後才能在Primary端執行正常刪除。
如下為在9i中執行刪除歸檔的指令碼:
#!/bin/sh
#########################################################################
# This shell is for primary and standby
database #
# to rm applied archivelog that before some
day ago. #
# #
# You can define "some day" in variables
${day_before} #
# This shell can be put in crontab for
auto run #
# #
#########################################################################
## load profile file
. /oracle/.bash_profile
## Path Define
main_path=/oracle/del_appl_arc <----------------部署的主路徑
bin_path=${main_path}/bin
log_path=${main_path}/log
arc_path=/oracle/arch
cd ${bin_path}
## Initial script
touch app_arc_name.sh
chmod +x app_arc_name.sh
## rm applied archivelog that before ${day_before} day ago
day_before=1 1天前已經規定的日誌,這個變數設定為1,你可以設定成其他。
## Db info
dbuser=test
dbpwd=test
dbsid=primary
########## Main shell start here ##########
## load exisit archlog list to db sqlldr將arch檔案列表load到資料庫中。
sqlplus ${dbuser}/${dbpwd}@${dbsid}<
drop table ${dbuser}.arc_log_list;
CREATE TABLE ${dbuser}.arc_log_list (arc_name VARCHAR2(2000));
exit;
EOF
ls -l ${arc_path}|awk '{print $9}' |grep arc >arc_log_list.tmp
echo "load data">>arc_log.ctl
echo "infile 'arc_log_list.tmp'">>arc_log.ctl
echo "replace into table arc_log_list">>arc_log.ctl
echo "fields terminated by X'09'">>arc_log.ctl
echo "(arc_name)">>arc_log.ctl
sqlldr ${dbuser}/${dbpwd}@${dbsid} control=arc_log.ctl log=sqlldr_run.log
bad=sqlldr_badfile.bad
### Create shell for rm applied archive that before some day ago
sqlplus -s ${dbuser}/${dbpwd}@${dbsid}<
set feedback off v$archived_log,找出符合條件可以刪除的arch,同時生成刪除指令碼。
set pages 0
set head off
set timing off
set echo off
spool app_arc_name.tmp
select 'rm -f '||'${arc_path}/'||arc_name from test.arc_log_list
intersect
select 'rm -f '||name from v\$archived_log
where DEST_ID=1 and name like '%.arc'
and SEQUENCE#
and COMPLETION_TIME<=sysdate-${day_before};
spool
exit
EOF
## Exec the shell in background mode
cat app_arc_name.tmp |grep -v spooling>app_arc_name.sh
./app_arc_name.sh
mv app_arc_name.sh rm_appl_arc_`date +"%Y%m%d%H%M"`.log
mv rm_appl_arc*.log ${log_path}
rm app_arc_name.tmp arc_log.ctl sqlldr_run.log arc_log_list.tmp
在Oracle 10g 後,RMAN提供了配置歸檔檔案刪除策略: configure archivelog deletion policy
該策略對應兩個值:
APPLIED ON STANDBY :設定為該值時,當通過附加的 DELETE INPUT 子句刪除Standby資料庫仍需要的日誌時,會提示RMAN-08137錯誤。不過仍然可以手動地通過 DELETE ARCHIVELOG 方式刪除。
NONE :設定為該值時,則不啟用歸檔檔案的刪除策略。預設情況下就是NONE。
我們配置一下:
RMAN> configure archivelog deletion policy to applied on standby;
old RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters are successfully stored
RMAN-08591: WARNING: invalid archivelog deletion policy
這裡有個警告, 解決方法,執行如下命令:
SQL>alter system set "_log_deletion_policy"=ALL scope=spfile sid='*';
設定該引數以後,DB 需要重啟。
修改之後,我們在設定:
RMAN> configure archivelog deletion policy to applied on standby;
using target database control file instead of recovery catalog
old RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters are successfully stored
RMAN> configure archivelog deletion policy to none;
old RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
new RMAN configuration parameters are successfully stored
修改之後成功修改RMAN 的歸檔檔案刪除策略。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29339097/viewspace-1073327/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Data Guard 主庫 歸檔檔案 刪除策略Oracle
- Oracle Data Guard 主庫 歸檔檔案 刪除策略--續Oracle
- 【轉載】Oracle Data Guard 主庫 歸檔檔案 刪除策略Oracle
- 【轉載】Oracle Data Guard 備庫 歸檔檔案 刪除指令碼Oracle指令碼
- 刪除data guard歸檔日誌
- ORACLE刪除歸檔Oracle
- oracle10g data guard(dg)__歸檔日誌備份刪除相關策略_rman_configureOracle
- oracle adg主庫通過rman無法刪除歸檔Oracle
- 強制刪除歸檔檔案
- 刪除歸檔日誌檔案
- 如何正確刪除ORACLE歸檔日誌檔案Oracle
- 備庫歸檔刪除策略失效的問題分析
- 使用RMAN安全刪除歸檔檔案
- Oracle 11g Data Guard 備庫歸檔日誌清理指令碼(保留一週歸檔)Oracle指令碼
- oracle刪除歸檔日誌Oracle
- Oracle歸檔日誌刪除Oracle
- oracle10 data guard(dg)__主庫添刪表空間及資料檔案相關測試Oracle
- 刪除歸檔
- dataguard 由於主庫引數未配置歸檔刪除策略導致庫歸檔丟失ORA-16016
- data guard 歸檔日誌管理 (standby)
- data guard 歸檔日誌管理 (primary)
- DATA GUARD主庫丟失資料檔案的恢復(2)
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- 定期刪除歸檔檔案的指令碼指令碼
- 在Oracle中,如何定時刪除歸檔日誌檔案?Oracle
- 邏輯dg刪除主庫過期歸檔日誌
- RMAN正確地刪除Archivelog以及設定有備庫的歸檔刪除策略Hive
- Oracle 11g 自動刪除ASM歸檔檔案指令碼OracleASM指令碼
- Data Guard跳歸檔恢復的案例
- data guard中增加與刪除主備資料庫中的聯機重做日誌與備重做日誌檔案資料庫
- oracle rman 刪除過期的歸檔Oracle
- Data Guard 環境下 主備庫Redo log 的新增與刪除
- 11gR2 RMAN歸檔日誌刪除策略
- oracle10g data guard(dg)__主庫重新命名資料檔案_在備庫上同步重新命名資料檔案Oracle
- Oracle 刪除資料檔案Oracle
- oracle刪除資料檔案Oracle
- oracle 刪除過期的歸檔日誌Oracle