Oracle 定时清理归档日志脚本

129 篇文章 7 订阅

1 报错信息

数据库报如下错误:

ora-27101: shared memory realm does not exist

ora-01034: oracle not available 11g

ORA-24324: service handle not initialized

原因:由于数据库归档日志满了,不能继续往数据库里写数据。

2 查看归档日志大小

# su - oracle

$ sqlplus / as sysdba

SQL> show parameter recover

可查看到归档日志目录为:/u01/app/oracle/fast_recovery_area/******/archivelog

可以查看该目录的大小,对比数据库设置的日志空间,该目录大小不能大于数据库设置的空间。

3 扩大归档日志大小

SQL> alter system set db_recovery_file_dest_size=100G;

4 清理归档日志

扩大后还需设置定时计划清理归档日志,需要切换到oracle账号执行命令

rman target /

RMAN> crosscheck archivelog all;					# 把无效的expired的archivelog标出来

RMAN> delete expired archivelog all;				# 直接全部删除过期的归档日志

RMAN> delete archivelog until time 'sysdate-3'		# 直接删除三天前所有的归档日志

5 设置自动脚本

5.1 编写脚本

# su - oracle        # 切换到oracle用户下执行操作

# cd /u01/app	   # 脚本存放目录


$ vi del_arch.sh 

#!/bin/bash
echo "----------------------------------------`date`---------------------------------------"
source ~/.bash_profile 
rman target / >> delarchive.log <<EOF 					# 记录日志delarchive.log 可以后期检查是否执行成功
crosscheck archivelog all;						# 把无效的expired的archivelog标出来
delete noprompt expired archivelog all;					# 直接全部删除过期的归档日志
delete noprompt archivelog all completed before 'sysdate-7';		# 直接删除三天前所有的归档日志
exit
EOF
echo -e "\n"
echo "------------------------------------ FINISHED ------------------------------------"


chmod +x del_arch.sh    # 授权这个脚本执行权限

2.添加定时任务

$ crontab -e

* 1 * * *  sh /u01/app/del_arc.sh 	# 每日1点执行
              # 绝对路径


service crond restart       # 重启服务

注意,这个脚本要用oracle用户创建;然后chmod +x 脚本名,给脚本添加上可执行权限;crontab也要用oracle添加,不然rman连不上

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值