oracle ASM空间回收工具,分享一个Oracle分时间段归档脚本(清理ASM空间)

概述

端午节又给叫醒了...好吧,又是ASM归档空间问题导致,说一下背景,因ASM空间不够,硬盘槽也插满了,每天归档量大概100G,所以在对UNDO表空间增加20G空间后隔天归档又爆了。

正常情况是3点执行增备脚本备份归档到本地并把ASM的归档清理掉,ASM保留的归档都是从3点往后算的,增加20G后终于达到了临界值,导致到3点前归档空间已经满了,无法执行相关的脚本并自动清理。

这里大概有几个解决方案:

1、对数据库瘦身,腾出空间

2、数据库整体迁移

3、买个主机,大概30万(领导否决了)

前面2个不是一时半会解决的,所以这里取个巧,把增备脚本改成每天多次执行,这样ASM的归档就不会保留一天了。

清理归档脚本#!/bin/bash

#this is rman auto incr backup script

backtime=$(date +%Y%m%d%H%M)

if [ -f ~/.bash_profile ];

then

. ~/.bash_profile

fi

rman target / log=/backup/log/incr_$backtime.log <

run {

sql 'alter system archive log current';

allocate channel c1 type disk;

allocate channel c2 type disk;

backup as compressed backupset

tag incr_backup_level1

incremental level 1

format '/backup/oradata/level1_%T_%t_s%s_p%p.bak' database;

sql 'alter system archive log current';

backup as compressed backupset format '/backup/arch/archlog_%T_t%t_s%s_p%p.bak' archivelog all delete input;

release channel c1;

release channel c2;

allocate channel d1 type disk;

backup

format '/backup/control/controlfile_%T_s%s_p%p.bak'

current controlfile;

crosscheck backup;

crosscheck copy;

delete noprompt expired backup;

delete noprompt obsolete;

delete noprompt backup of database completed before'sysdate-7';

release channel d1;

}

EOF

这里是利用backup ...all delete input的特性来清理掉ASM上的归档。

c8ea65ba445ed660b56a341b9b507264.png

测试脚本

执行脚本后查看日志

d67cf5bd18c3f5dddaec838dc6d65f41.png

观察ASM空间容量

b9588884d190ebc17ff6f6869231a1a4.png

可以看到空间已经减下来了。

设置定时任务

00 03,12,23 * * 2-6,0 /home/oracle/scripts/level1_backup.sh

70c50efbb47dc74d4238e16ce37b9bdb.png

后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!

486e2e0193814ec8870a5b1334cbd311.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值