日期:2014-05-16  浏览次数:20806 次

ORACLE 11G 单实例 磁盘文件系统 DG 归档日志删除脚本 基于RED HAT LINUX 5.3 X86 64BIT

最近做个DG的归档日志删除,

[oracle@.local logs]crontab -l
* 8 * * * sh /home/oracle/dbscripts/del_arc.sh
该脚本分别调用 生成 删除 校验 三个脚本
cat del_arc.sh
#! /bin/bash
source /home/oracle/.bash_profile
sh /home/oracle/dbscripts/build_del_archivelog.sh >> /home/oracle/dbscripts/del_arch`date +%F_%H`.sh
sleep 5
sh /home/oracle/dbscripts/del_arch`date +%F_%H`.sh >> /home/oracle/dbscripts/logs/del_arch`date +%F_%H`.log
sleep 5
sh /home/oracle/dbscripts/crosscheck_archivelog.sh >> /home/oracle/dbscripts/logs/cross_check`date +%F_%H`.log

先看生成的

cat build_del_archivelog.sh 
sqlplus -s shark/235619<<EOF
set heading  off
set linesize 1000
set echo off
set feedback off
set timing  off
set termout on
set trimout off
set trimspool on
set newpage none


select 'rm -f '||name  from  v\$archived_log where applied='YES' and deleted='NO' and completion_time < trunc(sysdate);

EOF


主要是生成物理删除 已经应用的归档日志 从V$archived_log中获取 , 注意ASM磁盘管理中的NAME 不包含路径.

另外 生成的每行间距太大了,望各位指教下.


生成的删除脚本

]head del_arch2014-05-07_08.sh 
rm -f /arch_backup/1_24144_831167377.log                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
rm -f /arch_backup/2_22765_831167377.log       


就是Y的太大行间距了.

]cat crosscheck_archivelog.sh 
#! /bin/bash
source /home/oracle/.bash_profile
exec >> /home/oracle/dbscripts/logs/del_arch`date +%F_%H`.log
$ORACLE_HOME/bin/rman target / <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
#delete noprompt archivelog until time 'sysdate-1';
exit;
EOF

这是最后个脚本 为 检验! 原本通过它来删除归档日志的 从注解中可知.

这个校验脚本主要是为了清理下归档信息. 如果该信息存放在控制文件中DG是删除不了的