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点运行备份脚本。