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
}
mainoracle数据库自动备份方法
配合定时任务清理磁盘,此在脚本内写的判断磁盘使⽤率⼤于80%进⾏清理,也可根据⾃⼰需求进⾏判断,或每次都执⾏清理。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。