删除归档脚本

center.bat  --总的调度中心,设置环境变量,调用其他脚本
@echo off   
echo ================================================   
echo  Windows环境下Oracle数据库的自动清理归档脚本  
echo  删除已成功应用的备库的归档日志
echo ================================================  
::以“YYYYMMDD”格式取出当前时间。  
SET BACKUPDATE=%date:~0,4%-%date:~5,2%-%date:~8,2%
SET ORACLE_HOME=E:\app\Administrator\product\11.2.0\dbhome_1
SET ORACLE_SID=mes
SET NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
SET LOG_DIR=E:\rman\del_arch_log
SET LOG_NAME=%LOG_DIR%\del_adg_arc_%ORACLE_SID%_%BACKUPDATE%.log
SET SQL_NAME=%LOG_DIR%\del_adg_arc.sql
sqlplus -s sys/oracle@mes as sysdba @E:\\rman\pro_sql.bat
rman target sys/oracle@mes cmdfile='E:\rman\del_arc.bat' LOG=%LOG_NAME%

pro_sql.bat  --生成删除归档的语句到指定目录并保存成SQL脚本,此处是删除所有应用过的归档日志,如需保留几天,修改数字0
set feedback off heading off pagesize 0 linesize 100
col exec_sql format a50
spool %SQL_NAME%
SELECT 'delete archivelog sequence ' || A.SEQUENCE# || ' thread ' || A.THREAD# || ';' EXEC_SQL
FROM   V$ARCHIVED_LOG A
WHERE  (A.THREAD#, A.SEQUENCE#, a.RESETLOGS_CHANGE#) IN
       (SELECT b.THREAD#,
               b.SEQUENCE#,
               b.RESETLOGS_CHANGE#
        FROM   V$ARCHIVED_LOG B
        WHERE  B.APPLIED = 'YES'
        AND    b.COMPLETION_TIME <= SYSDATE - 0)      
AND    a.NAME NOT IN (SELECT b.DESTINATION
                      FROM   v$archive_dest b
                      WHERE  b.DESTINATION IS NOT NULL)
AND    A.COMPLETION_TIME <= SYSDATE - 0
ORDER  BY A.THREAD#,
          A.SEQUENCE#;
  
spool off
exit;

del_arc.bat  --清理归档日志并调用上段中生成的SQL脚本
crosscheck archivelog all;
delete noprompt expired archivelog all;
@E:\rman\del_arch_log\del_adg_arc.sql
exit;
exit;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值