oracle归档日志的清理,Oracle归档日志自动清理

一、场景介绍

公原文链接:https://www.dqzboy.com司最近Oracle数据库出现归档日志超过归档空间阈值,导致数据库夯住无法正常使用;之前也出现过类似的情况,当时为了紧急恢复业务通过人工手动的方式去进行了清理过期归档,最近正好通过脚本的方式实现定时自动清理归档日志,或者可以结合监控系统,如Zabbix,当Zabbix原文链接:https://www.dqzboy.com监控归档日志阈值超过了告警触发器定义值时则先去进行触发归档日志清理脚本;这里我是通过定时任务的方式去定时清理归档日志的。

二、工具介绍

这里我们使用的是RMAN,RMAN(Recovery Manager)是一种用于备份(backup)、还原(restore)和恢复文章来源(Source):https://www.dqzboy.com(recover)数据库的 Oracle 工具。RMAN只能用于ORACLE8或更高的版本中。它能够备份整文章来源(Source):https://www.dqzboy.com个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文原文链接:https://www.dqzboy.com件。

三、实践过程

1、自动清理脚本

脚本中我是清理了7天前的所有归档日志

[root@ localhost ~]# su - oracle

[oracle@localhost ~]$ mkdir /home/oracle/logs

[oracle@localhost ~]$ mkdir /home/oracle/script/

[oracle@localhost ~]$ cd script/

[oracle@localhost script]$ vim del_archivelog.sh

#!/bin/bash

oracle_env() {

if [ -f ~/.bash_profile ]; then

. ~/.bash_profile

fi

}

arch_log_dir() {

if [ -d /home/oracle/logs ];then

echo "true"

else

mkdir -p /home/oracle/logs

fi

}

oracle_clean() {

oracle_env

exec >> /home/oracle/logs/delarch`date +%Y-%T`.log

$ORACLE_HOME/bin/rman target /<

crosscheck archivelog all;

delete noprompt expired archivelog all;

delete noprompt archivelog all completed before 'sysdate - 7';

exit;

EOF

}

main() {

arch_log_dir

oracle_clean

}

main

2、添加定时任务

注:我这里定时任务设置为,每周三凌晨整进行一次清理任务,大家可以根据自己项目中数据库实际的情况进行修改

[oracle@localhost ~]$ crontab -e

00 00 * * 3 . ~/.bash_profile; /home/oracle/script/del_archivelog.sh

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值