Aix下使用rman备份Oracle RAC数据库
环境:AIX5.2 HACMP5.1 Oracle9206RAC
使用rman增量备份,备份策略为:每周四执行零级备份,周五---周三执行1级增量备份,下周四再进行新的零级备份。这样如果需要恢复的话,需要最多的备份数据为 1个零级备份+6个1级备份+当天的归档日志。rman零级备份脚本放于/home/oracle/ora0.sh,1级备份位于/home/oracle/ora1.sh 具体内容如下:
零级备份
#!/bin/sh
echo "start"; date
#env
ORACLE_BASE=/oracle/app/oracle
export ORACLE_BASE
ORACLE_HOME=/oracle/app/oracle/product/9.2.0
export ORACLE_HOME
ORACLE_SID=XXX
export ORACLE_SID
ORACLE_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LD_LIRARY_PATH
PATH=/usr/css/sbin:$ORACLE_HOME/bin:/usr/bin:$PATH
export PATH
LANG=en_US
export LANG
#backup
$ORACLE_HOME/bin/rman<<EOF
connect target
run
{
allocate channel c1 device type disk ;
allocate channel c2 device type disk ;
allocate channel c3 device type disk ;
backup incremental level 0 database tag 'dbL0' format '/share1/backup/dbkup_%d_%T_%U_L0';
sql 'alter system archive log current' ;
backup archivelog all delete input format '/share2/arcbkup/arcbkup/arc_%d_%T_%U_L0';
release channel c1;
release channel c2;
release channel c3;
}
exit;
EOF
echo "end"; date
1级备份
#!/bin/sh
echo "start"; date
#env
ORACLE_BASE=/oracle/app/oracle
export ORACLE_BASE
ORACLE_HOME=/oracle/app/oracle/product/9.2.0
export ORACLE_HOME
ORACLE_SID=XXX
export ORACLE_SID
ORACLE_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LD_LIRARY_PATH
PATH=/usr/css/sbin:$ORACLE_HOME/bin:/usr/bin:$PATH
export PATH
LANG=en_US
export LANG
#backup
$ORACLE_HOME/bin/rman<<EOF
connect target
run
{
allocate channel c1 device type disk ;
allocate channel c2 device type disk ;
allocate channel c3 device type disk ;
backup incremental level 1 database tag 'dbL1' format '/share1/backup/dbkup_%d_%T_%U_L1';
sql 'alter system archive log current' ;
backup archivelog all delete input format '/share2/arcbkup/arcbkup/arc_%d_%T_%U_ L1';
release channel c1;
release channel c2;
release channel c3;
}
exit;
EOF
echo "end";date
在cron任务中定时实现定时备份,即加入以下条目
0 1 * * 0,1,2,3,5,6 /home/oracle/ora1.sh 每天(除周四)凌晨1点执行一级备份
0 0 * * 4 /home/oracle/ora0.sh 每周四0点执行0级备份
数据库全备份路径是在 /share1/backup
数据库归档日志路径分别为/share2/archive/archive1;/share2/archive/archive2
(该目录文件请不要使用rm命令删除)
数据库归档日志备份路径为/share2/arcbkup/arcbkup
数据库控制文件自动备份路径为 /share1/spbkup
/share1 /share2文件系统为两台机器(两个实例)可以共同访问的文件系统,所以保证了归档日志共享,以达到恢复目的。因为数据库恢复时,只需要在一个实例上进行恢复,但是需要读取两个实例产生的归档日志,所以归档日志目录必须共享。反过来,备份的时候,只需要在一个实例上进行即可。
以下是数据库全备份脚本:
rman备份脚本放于/home/oracle/backup.sh,具体内容如下:
#!/bin/sh
echo "start"; date
#env
ORACLE_BASE=/oracle/app/oracle
export ORACLE_BASE
ORACLE_HOME=/oracle/app/oracle/product/9.2.0
export ORACLE_HOME
ORACLE_SID=XXX
export ORACLE_SID
ORACLE_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LD_LIRARY_PATH
PATH=/usr/css/sbin:$ORACLE_HOME/bin:/usr/bin:$PATH
export PATH
LANG=en_US
export LANG
#backup
$ORACLE_HOME/bin/rman<<EOF
connect target
run
{
allocate channel c1 device type disk;
backup database format '/share1/backup/dbkup_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all delete input format '/share2/arcbkup/arcbkup/arc_%d_%T_%U';
}
exit;
EOF
echo "end"; date
在cron任务中定时实现定时备份,即加入这一条目
0 3 10 * * /home/oracle/backup.sh 即在每月10号凌晨3点运行备份脚本。