Oracle 删除过期归档日志

本文介绍了Oracle数据库中定时删除归档日志的脚本及操作,包括通过RMAN删除过期和未应用的归档日志。同时,提供了不同场景下删除归档日志的命令示例,如按时间、序列或全部删除。此外,还涉及了检查归档日志应用错误和ADG备用数据库的归档清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、定时删除归档日志

30 2 * * 0 /home/oracle/zzh/del_arch.sh
30 2 * * 0 nohup /home/oracle/zzh/log/delete_arch.sh >/dev/null 2>&1 &

#!/bin/bash
echo "----------------------------------------`date`---------------------------------------"
source ~/.bash_profile

delarchtime=`date +"20%y%m%d%H%M%S"`
RMAN_LOG_FILE=/home/oracle/del_arch_${delarchtime}.log

rman target / <<EOF >> $RMAN_LOG_FILE
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate-7';
EOF
echo -e "\n"
echo "------------------------------------ FINISHED ------------------------------------"
 

2、删除活动ADG备用数据库归档

#!/bin/sh
#clean archived log

PATH=$PATH:$HOME/bin
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1;
export ORACLE_SID=ORCL;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8;
export PATH

NOW=`date +%Y%m%d`
GAP_ARCH=`sqlplus -silent "/ as sysdba" <<EOF
set pagesize 0 feedback off verify off heading off echo off
select count(*) from v\\\$archive_gap_arch;
exit;`
ARCH_APPLIED=`sqlplus -silent "/ as sysdba" <<EOF
set pagesize 0 feedback off verify off heading off echo off
select count(*) from v\\\$archived_log where applied='NO';
exit;`
#check the archive log applicance and the GAP_ARCH information
if [ $GAP_ARCH -eq 0 ] && [ $ARCH_APPLIED -eq 0  ]
then
rman target / log=/home/oracle/log/del_arch_$NOW.log <<EOF
delete noprompt archivelog until time 'sysdate-7';
exit
EOF
else
echo "Please check the archivelog apply error!" >> /home/oracle/log/arch_error_$NOW.log

3、常用删除归档日志命令

--> 删除截止指定时间前的归档日志
delete noprompt archivelog until time "to_date('2022-05-20','YYYY-MM-DD')";
delete noprompt archivelog until time "to_date('2022-05-20 18:00:00','YYYY-MM-DD hh24:mi:ss')";
--> 删除指定序列为 111 的归档日志
delete archivelog until sequence 111;
--> 注意这个命令,删除系统时间1天以内到现在的归档日志
delete archivelog from time 'sysdate-1'; 
--> 该命令清除当前所有的归档日志
delete noprompt archivelog all completed before 'sysdate';  
--> 该命令清除当前所有的归档日志    
delete noprompt archivelog all completed before 'sysdate-0'; 
--> 该命令清除当前所有的归档日志     
delete noprompt archivelog all;                 
--> 清理一个小时前的归档日志                
delete force archivelog all completed before 'sysdate-1/24'; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ahern_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值