共计 1926 个字符,预计需要花费 5 分钟才能阅读完成。
一、背景
由于业务增长,频繁的备份还原对于磁盘空间有了更大的空间需求,基本每周 500G 的磁盘,空间使用率都会达到 85% 以上,故编写 Oracle 清理脚本结合 crond 自动清理 Oracle 归档日志。
二、工具介绍
RMAN(Recovery Manager)是一种用于备份 (backup)、还原(restore) 和恢复 (recover) 数据库的 Oracle 工具。RMAN 只能用于 ORACLE8 或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及 Spfile 参数文件。RMAN 也允许您进行增量数据块级别的备份,增量 RMAN 备份是时间和空间有效的,因为他们只备份自上次备份以来有变化的那些数据块。而且,通过 RMAN 提供的接口,第三方的备份与恢复软件如 veritas 将提供更强大的备份与恢复的管理功能。通过 RMAN,也提供了其它更多功能,如数据库的克隆、采用 RMAN 建立备用数据库、利用 RMAN 备份与移动裸设备(RAW)上的文件等工作将变得更方便简单。9i 的 RMAN 通过增强的自动配置与管理功能,以及特有的块级别的恢复,将使备份与恢复工作变得更加快捷与完美。
使用 RMAN 连接到数据库时,默认使用 SYSDBA 角色登陆。
rman target / #连接进 rman
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE ‘SYSDATE-7’; #删除系统时间 7 天以前的归档日志,不会删除闪回区有效的归档日志
由于物理磁盘 dbf 文件很多,如果进行物理删除 dbf 文件较麻烦,列出以下命令供物理删除参考
rm -rf `ls -l /home/oracle/app/arch/ |grep Apr|awk ‘{print $9}’` #PATH 可以根据实际环境,删除 Apr 月的所有归档日志
rm -rf `ls -l /home/oracle/app/arch/ |awk ‘{if ($7<20) print$0}’` #删除 20 号以前的日志
如果手动在磁盘清理过日志文件,需要在 rman 内检查,然后删除过期的日志
crosscheck archivelog all; #检查所有归档日志
list expired archivelog all; #列出过期的归档日志
delete noprompt expired archivelog all; #删除过期的归档日志
delete noprompt archivelog all; #清除所有的归档日志
三、自清理脚本
#!/bin/bash
oracle_env() {
source /home/oracle/.bash_profile
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/12.1.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
oraclecmd=”/home/oracle/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus”
oraclerman=”/home/oracle/app/oracle/product/12.1.0/dbhome_1/bin/rman”
}
disk_useper=`/bin/df -Th|grep -v ‘Filesystem’|awk ‘/\/dev\/mapper\/vg00-lv_root/{if (“$(NF)”==”/”);print $(NF-1)}’|cut -d% -f1`
oracle_clean() {
oracle_env
${oraclerman} target /<<EOF
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE ‘SYSDATE-7’;
crosscheck archivelog all;
list expired archivelog all;
delete noprompt expired archivelog all;
exit;
EOF
}
main() {
if [${disk_useper} -gt 80 ];then
oracle_clean
fi
}
main
配合定时任务清理磁盘,此在脚本内写的判断磁盘使用率大于 80% 进行清理,也可根据自己需求进行判断,或每次都执行清理。
更多 Oracle 相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12
: