前言
归档日志是好东西,recover数据库得靠它。但如果归档文件大小达到了上限(由db_recovery_file_dest_size参数指定)或者所在磁盘目录满掉,就会影响数据库的正常运作,本菜鸟就遇到过好几次。所以设置一个自动化清理归档文件的任务很有必要。
下面提供Windows/Linux设置归档文件自动清理的步骤。供大家参考
步骤
windos操作系统下
一、d:\rman目录下新建一个txt文件,比如auto_rman.txt,输入以下内容,然后修改为bat格式
@echo off
set date=%date:~,10%
set fileName=log_%date:/=%.txt
(
echo 正在清除过期归档文件,请稍等......
rman cmdfile=d:\rman\arch_delete.txt
)>d:\rman\%fileName% 2>&1<nul
二、同样在该目录下,新建一个arch_delete.txt的文件,输入以下内容
connect target /
run{
crosscheck archivelog all;
delete expired archivelog all;
DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-15';
}
注:sysdate-15代表删除15天以前的归档日志文件,建议各位根据实际情况,去修改归档文件的保留时间
三、测试auto_rman.bat文件能否成功执行。双击它,会弹出cmd对话框,测试成功。
四、使用window自带的任务管理器,设定自动化任务
程序启动顺序如下
开始》》》windows管理工具》》任务计划程序》》任务计划程序库》》创建基本任务》》设置执行频率及指定执行文件auto_rman.bat
五、观察一天,没有问题即可
Linux操作系统下
一、设定定时任务
crontab -e
0 1 * * * /home/oracle/del_ora_log.sh >>del_ora_log.log 2>&1
注:代表每天执行一次
二、在home/oracle目录下
编辑文件del_ora_log.sh,内容如下
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/11.2/db_1
export ORACLE_SID=orcl1
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
rman target/ cmdfile=/home/oracle/del_ora_log.rman msglog=/home/oracle/del_ora_log.rman.log >>/home/oracle/rman.log 2>&1
编辑del_ora_log.rman ,内容如下
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-10';
exit;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




