Linux crontab定时清理oracle归档日志

oracle归档日志隔一段时间就会满了,需要手动清理。

使用linux定时任务 crontab  +rman 定时清理oracle 归档日志

编写脚本:

vim test.sh

#!/bin/bash

source ~/.bash_profile(如果命令无法识别则要加,否则可不加)
rman target "数据库用户"/"数据库密码" <

crosscheck archivelog all;

delete noprompt expired archivelog all;
delete force noprompt archivelog all completed before 'sysdate-3';
exit;
EOF

设置定时任务:

 crontab -e

00 1 * * * sh /u01/app/test.sh >> /u01/app/test.log

或者:0 2 1 * * su – oracle -c /home/oracle/app/oradataback/rmanscripts/rmanlevel0.sh //每月1日2:00运行 0级备份

:wq保存退出

 

说明:force noprompt为强制执行无交互方式;切换用户只执行一条命令的可以用: su - oracle -c command -c是command的缩写

遇到问题:

1、定时任务不执行,log没有内容

解决:手动执行./test.sh 查看效果

2、bash: ./test.sh: Permission denied

没有执行权限,chmod a+x test.sh

3、出现类似于bash: ./test.sh: /usr/bin: bad interpreter: Permission denied这种错误

解决: 检查sh文件头部文本,#!/bin/bash。并检查bash目录位置

 

 

附:查询归档日志空间情况:

su oracle 切换用户

sqlplus /nolog 登录oracle

SQL> conn / as sysdba 以dba身份连接

SQL> SELECT * FROM  V$FLASH_RECOVERY_AREA_USAGE; 查看归档目录使用情况。
 

你可能感兴趣的:(数据库)