CentOS7下设置定期清理Oracle归档日志

Posted hawking8su

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7下设置定期清理Oracle归档日志相关的知识,希望对你有一定的参考价值。

Oracle归档日志若不定期清理将占用很大存储空间,在Linux环境下我们可以用shell脚本实现清理(Window下用bat同理)。

1. 查看归档日志存放位置

用oracle用户登录

[oracle@localhost data]$ sqlplus sys/password as sysdba

SQL> show parameter recover;

技术图片

如果更改过归档日志路径,请执行archive log list;查看:

SQL> archive log list;

技术图片

2. 创建归档日志存放路径

[oracle@localhost db_1]$ mkdir /home/oracle/del_log
[oracle@localhost db_1]$ mkdir /home/oracle/del_log/log
[oracle@localhost db_1]$ chown -R oracle:oinstall /home/oracle/del_log/log

3. 创建shell脚本

路径:/home/oracle/del_log

[oracle@localhost del_log]$ vi del_arc.sh
#添加以下内容
source ~/.bash_profile
#记录归档删除的日志
exec >> /home/oracle/del_log/log/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-7‘;  #删除7天前日志
exit;
EOF

[oracle@localhost del_log]$ chmod 777 del_arc.sh #赋予执行权限
[oracle@localhost del_log]$ ./del_arc.sh #手工执行测试是否成功
[oracle@localhost del_log]$ ll log #如果产生了log文件,则测试成功

4. 添加定时任务

[oracle@localhost del_log]$ crontab -l   # 查询已有调度任务
[oracle@localhost del_log]$ crontab -e  # 编辑调度任务
# 每天凌晨1点执行,并将执行结果保存在task.log中
00 1 * * * sh /home/oracle/del_log/del_arc.sh >> /data/oracle/del_log/task.log 2>&1 &

 

参考:

https://blog.csdn.net/mgxiaomage/article/details/73863375

https://www.jianshu.com/p/8c13a4c9539e

https://blog.csdn.net/weixin_45558989/article/details/101293884

 

以上是关于CentOS7下设置定期清理Oracle归档日志的主要内容,如果未能解决你的问题,请参考以下文章

Oracle如何删除归档日志文件?

如何防止Oracle归档日志满后数据库无法正常运行?

请教一个DATAGUARD备库归档日志清理的问题

oracle日志归档空间清理

oracle 11g生产环境清理归档日志脚本

归档日志清理