oracle 11g生产环境清理归档日志脚本
发布时间:2020-12-12 13:21:02 所属栏目:百科 来源:网络整理
导读:最近几个客户生产环境都遇到一些故障,原因就是开归档,没有部署删除归档定时任务,以下大家可以参考,经过本人测试,在生产环境上正常运行。 **roidba删除归档日志脚本**一、基于RHEL6服务器端的归档日志删除脚本生产库部署环境:数据库:Oracle 11.2.0.4操
最近几个客户生产环境都遇到一些故障,原因就是开归档,没有部署删除归档定时任务,以下大家可以参考,经过本人测试,在生产环境上正常运行。
**roidba删除归档日志脚本** 一、基于RHEL6服务器端的归档日志删除脚本 生产库部署环境: 数据库:Oracle 11.2.0.4 操作系统:RHEL 6.6 第一步:设置control_file_record_keep_time 此参数很重要,备份记录、归档记录等都会存放在控制文件中,而此参数提供保留记录的时间段,默认值为7天。通常我们要设置此参数大于备份文件保留的时间段。这里我们设置31天。 操作如下: SQL> show parameter keep_time NAME TYPE VALUE ---------------------------------------- ---------------------- ------------------------------ control_file_record_keep_time integer 7 SQL> SQL> alter system set control_file_record_keep_time=31 scope=both; --动态参数 SQL> show parameter keep_time NAME TYPE VALUE ---------------------------------------- ---------------------- ------------------------------ control_file_record_keep_time integer 31 第二步:创建detele_archivelog.sh脚本 选择存放脚本的路径 $ mkdir -p /home/oracle/scripts?? --创建脚本存放目录 $ cd /home/oracle/scripts?? --打开/home/oracle $ touch delete_archivelog.sh? --创建脚本 $ chmod 755 delete_archivelog.sh?? --赋予读写权限 $ vi delete_archivelog.sh? --编辑脚本 注意修改ORACLE_SID?,log路径要写绝对路径,不写绝对路径会导致单独执行成功,定时任务执行时找不到对应的log 脚本:? ? cat > /home/oracle/scripts/delete_archivelog.sh <<eof #!/bin/bash #Author Roidba #FileName: delete_archivelog.sh #Date: 2019-01-25 #DESC: Delete all complete before 5 days archivelog. export ORACLE_SID=orcl export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 $ORACLE_HOME/bin/rman log=/home/oracle/scripts/rman_archive.log <<EOF connect target sys/[email?protected] run{ crosscheck archivelog all; delete noprompt expired archivelog all; delete noprompt archivelog all completed before ‘sysdate - 5‘; } exit; EOF eof 第三步:执行detele_archivelog.sh脚本 $sh delete_archivelog.sh?? --执行脚本 查看对应日志执行成功 第四步:添加crontab计划任务 使用oracle用户添加例行任务: crontab -l --查看计划任务 crontab -e --编辑计划任务 新打开的窗口中添加一下内容: 0 1 * * * /home/oracle/scripts/delete_archivelog.sh ----每天1点执行 编辑完成后按Esc键,输入“:wq”存盘退出 关于crontab每一列的含义可以参考一下内容: # more /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 第五步:执行验证 1、查看执行计划是否自动启动 ps -ef | grep crond #判断定时服务是否启动 service crond start|stop|restart #启动、停止或重启服务 crontab -l #查看是否有正确添加定时任务 2、crontab成功执行验证: 在root下执行tail -f /var/log/cron,监控cron日志来确保crontab的成功执行: 在oracle下执行tail -f /var/spool/mail/oracle 或者在 oracle 下执行mail 查看最近的日志看执行情况 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |