aixjc
作者aixjc2010-08-01 09:13

AIX服务器RMAN备份脚本

字数 2590阅读 3610评论 0赞 1
1、服务器情况
服务器版本:IBM P670 AIX 5.2
数据库版本:oracle 9.2.0.8.0
CPU:4
物理内存:8G

2、备份策略描述
(1)每周日进行0级备份,并且删除过期备份和归档。每周一到周六1级备份,并且删除过期备份和归档。 alert日志和侦听器日志的备份每月1日进行。
(2)RMAN配置:a)开启控制文件自动备份 b)恢复窗口设置为14天 
RMAN>CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
3、启动RMAN的shell脚本
(1)、0级备份  代码分两部分,第一部分是设置环境变量,第2部分是RMAN代码。备份的时候每个备份集文件中包含4个数据文件,同时校验删除过期的归档日志以及备份文件。
#!/bin/ksh
echo "start /home/oracle/backupshell/lv0.sh"; date
#env
export ORACLE_HOME=/data/oracle/app/9.2.0
export PATH=/data/oracle/app/9.2.0/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/home/oracle/bin:/usr/bin/X11:/sbin:.
export LANG=en_US
ORACLE_SID=test
export ORACLE_SID
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LD_LIRARY_PATH
#backup
$ORACLE_HOME/bin/rman<<EOF
connect target
backup incremental level 0 database tag 'dbL0' format '/data/dback/testbkup_%d_%T_%U_L0' filesperset 4;
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt obsolete;
exit;
EOF
echo "end"; date
 

(2)、1级备份
#!/bin/sh
echo "start /home/oracle/backupshell/lv1.sh"; date
#env
export ORACLE_HOME=/data/oracle/app/9.2.0
ORACLE_SID=test
export ORACLE_SID
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LD_LIRARY_PATH
#backup
$ORACLE_HOME/bin/rman<<EOF
connect target
backup incremental level 1 database tag 'dbL1' format '/data/dback/testbkup_%d_%T_%U_L1' filesperset 4;
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt obsolete;
exit;
EOF
echo "end";date
 
 

4、备份转移alert日志和侦听日志。随着数据库的运行,alert日志和侦听日志会不断增长,当达到几十兆或者几百兆的时候,查看日志会变成非常痛苦的事情。以下是一个定期备份转移历史日志的脚本,通过操作系统的CP命令和cat > /dev/null来转移和清空日志文件。一般来说侦听日志会比alert日志增长更快,因此也可以每周进行侦听日志的备份。这脚本最大的问题就是如果执行cat > /dev/null的时候,如果数据库正在写日志会不会影响运行。
#! /bin/ksh
echo "Start backup alertlog and lsnrctl log"
time=$(date '+%Y%m%d')
cd /data/oracle/admin/test/bdump/alert_backup
mkdir $time
cd $time
cp /data/oracle/admin/test/bdump/alert_test.log /data/oracle/admin/test/bdump/alert_backup/$time
cat /dev/null > /data/oracle/admin/test/bdump/alert_test.log
echo "Alert log backup finished"
cd /data/oracle/app/9.2.0/network/log/lsnrctl_backup/
mkdir $time
cp /data/oracle/app/9.2.0/network/log/listener.log  /data/oracle/app/9.2.0/network/log/lsnrctl_backup/$time
cat /dev/null > /data/oracle/app/9.2.0/network/log/listener.log
echo "Lsnrctl log backup finished"
echo "End backup"
 
5、crontab文件内容
00 00 * * 1,2,3,4,5,6 /home/oracle/backupshell/lv1.sh
00 00 * * 0 /home/oracle/backupshell/lv0.sh
00 01 1 * * /home/oracle/backupshell/alert_lsnrctl_log.sh

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广