Linux下定时清除Oracle归档日志脚本及手动清除归档日志

1、定时清除归档日志

[root@hfcwroot ~]# su - oracle

[oracle@hfcwroot ~]$ mkdir -p /home/oracle/delarchlog

[oracle@hfcwroot ~]$ cd /home/oracle/delarchlog

[oracle@hfcwroot delarchlog]$ vi del_arch.sh

把下面内容粘贴到脚本中,保存退出

#!/bin/bash

# 删除归档脚本
# 修改区域
# ==========================
# 1. 指定生成删除归档日志的存放路径
log_dir=/home/oracle/delarchlog

# 如果无目录创建目录 
if ! test -d ${log_dir}
    then
    mkdir -p ${log_dir}                                                                   
fi

# 自动执行区域
# ================================
# 脚本执行日期
TODAY=`date +%y%m%d`
msg_log=${log_dir}/delete_archive${TODAY}.log
log_summary=${log_dir}/summary.log

# 补充调用环境变量
if [ -f ~/.bash_profile ];   
then  
. ~/.bash_profile  
fi

# 清除失效归档,删除1天前归档,并记录
$ORACLE_HOME/bin/rman target / msglog=${msg_log} append <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-30';
exit;
EOF

# 记录操作结果
RC=$?

# 记录磁盘使用情况
echo -e "\n------------------------" >> ${msg_log}  
echo "------ Disk Space ------" >> ${msg_log}  
df -h >> ${msg_log} 

# 判断,汇报清除归档结果
if [ "$RC" == 0 ]; then  
    echo "------ no error occured ------" >> ${msg_log}  
else  
    echo "------ error ------" >> ${msg_log}     
fi  

echo -e "$(date +%y%m%d) : $(grep error ${msg_log})" >> ${log_summary}
 

给脚本赋权:

 [oracle@hfcwroot delarchlog]$ chmod 777 del_arch.sh

注:脚本中的归档日志为清除30天之前的,根据实际需求修改

添加到计划任务

crontab -e

30 1 * * * sh /home/oracle/delarchlog/del_arch.sh

service crond restart

2、手动清除归档日志:

查看归档日志大小

[root@hfcwroot ~]#su - oracle

[oracle@hfcwroot ~]$sqlplus / as sysdba

SQL>show parameter recover

 

 可查看到归档日志目录为:/u01/app/oracle/fast_recovery_area/******/archivelog

可以查看该目录的大小,对比数据库设置的日志空间,该目录大小不能大于数据库设置的空间。

扩大归档日志大小

SQL>alter system set db_recovery_file_dest_size=100G;

清理归档日志

扩大后还需设置定时计划清理归档日志,需要切换到oracle账号执行命令

[root@hfcwroot ~]#su - oracle

[oracle@hfcwroot ~]$rman target /

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

RMAN> delete archivelog until time 'sysdate-7';

 上面三条命令的解释:

1、第一条命令可以把无效的expired的archivelog标出来。

2、第二条命令直接全部删除过期的归档日志。

3、第三条命令直接删除七天前所有的归档日志。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wsh786894949

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

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

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

打赏作者

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

抵扣说明:

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

余额充值