最近几个客户生产环境都遇到一些故障,原因就是开归档,没有部署删除归档定时任务,以下大家可以参考,经过本人测试,在生产环境上正常运行。

**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 <

#!/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 <

connect target sys/oracle@orcl

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 查看最近的日志看执行情况

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐