Oracle归档日志清理

Oracle归档日志清理

一、Linux平台

备注:RAC环境同样适用
操作步骤:
1、在/home/oracle内创建一个目录,用来放shell脚本日志。

[[email protected] arch_clean_log]$ su - oracle 
--->从root用户切换到oracle用户,注意横线“-”左右都有空格
[[email protected] arch_clean_log]$ mkdir /home/oracle/arch_clean_log

2、查看Oracle环境变量

[oracle@orcldb ~]$ env|grep ORA --->敲完命令之后,将如下名称记录下来,用于第三步设置脚本的环境变量
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

3、在/home/oracle/目录下新建脚本文件
以下的环境变量需要在第2步中获取

[oracle@orcldb4 ORACLE]vi clean_arch.sh
#!/bin/bash
export ORACLE_SID=orcl   --->生产环境中Oracle实例名
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 --->数据库软件目录
export ORACLE_BASE=/u01/app/oracle --->Oracle基目录
time=`date +"20%y%m%d%H%M%S"` --->日期格式
logdir="/home/oracle/arch_clean_log" --->脚本执行日志
find $logdir -type f -name "*.log" -mtime +7 -exec rm -rf {} \;--->此处保留7天脚本执行日志
$ORACLE_HOME/bin/rman target /  log=$logdir/archClean_$time.log  <<EOF
run{
crosscheck archivelog all;
delete noprompt expired archivelog all;
DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';--->此处示例为保留7天的归档日志
}
exit
EOF

4、对脚本文件赋予可执行权限

[[email protected] ORACLE]$ chmod +x clean_arch.sh

5、设置定时计划
在oracle用户下,添加crontab
下面示例为每天凌晨3点开始执行定时清理脚本

[[email protected] arch_clean_log]$ crontab -e
0 3 * * * /bin/bash /home/oracle/clean_arch.sh >/dev/null 2>&1

最后检查下crontab是否已添加

[[email protected] arch_clean_log]$ crontab -l
0 3 * * * /bin/bash /home/oracle/clean_arch.sh >/dev/null 2>&1

二、Windows平台

操作步骤:
1、新建一个文件夹用于存放脚本执行的日志
在这里插入图片描述

2、查看Oracle sid
在Windows环境可以:
开始—>运行(输入regedit),在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb开头g_home1中有ORACLE_SID的键值(系统默认值),如下图所示:

在这里插入图片描述
在这里插入图片描述

3、新建txt,将如下内容复制到文本内

set ORACLE_SID=orcl --->注册表中Oracle实例名
set arch_log=D:\arch_log --->脚本执行日志目录
rman target / cmdfile='%arch_log%\script.txt' log='%arch_log%\del_arch_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log'
--->调用RMAN脚本
forfiles /P %arch_log% /M *.log /S /D -7 /C "cmd /c del /F /s /q @file"
--->此处示例为保留7天的脚本日志记录

在这里插入图片描述

4、添加RMAN脚本

run{
   crosscheck archivelog all;
   delete noprompt expired archivelog all;
   DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
   --->此处示例为保留7天的归档日志
}

在这里插入图片描述

5、修改脚本后缀名为bat
确保bat文件与script文件在一个目录
在这里插入图片描述

6、添加任务计划 在windows添加任务计划,设定时间即可