天天看点

RMAN For 11gR2 RAC脚本备份

1.创建脚本,备份集,备份日志存放路径

mkdir /data/scripts -p                  //备份脚本路径

mkdir /data/rman_bak/data -p  //备份集存放路径

mkdir /data/rman_bak/logs -p  //备份日志存放路径

chown oracle:oinstall /data -R  //设置路径属主

chmod 777 /data -R                    //设置路径权限

2.脚本内容如下

/data/scripts/rman_bak.sh  //根据具体环境修改脚本自定义备份策略,该脚本设置的备份策略为保留2个副本,所需空间为3+增量备份空间容量,归档日志为删除7天前归档日志。

##############################################################################

#!/bin/bash  

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export ORACLE_SID=orcl1

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export PATH=$ORACLE_HOME/bin:$PATH

[email protected]

DATE=`date +%w`

DATE_2=`date +%Y%m%d`

BACKUP_PATH="/data/rman_bak"

BIN=$ORACLE_HOME/bin

if [ $# != 1 ]; then

echo "usage: rman_bak.sh n    

where n is the rman backup level(Only 0,1 is permitted)."    

exit 1

fi

if [ [email protected] -ne 0 -a [email protected] -ne 1 ]; then

echo "usage: rman_bak.sh n    

where n is the rman backup level(Only 0,1 is permitted)."    

exit 2

fi

if [[ $LEVEL = 0 ]]; then

$BIN/rman log $BACKUP_PATH/logs/level.$ORACLE_SID.$LEVEL.$DATE_2.log <<EOF

connect target /;  

CONFIGURE RETENTION POLICY TO REDUNDANCY 3;

run{    

allocate channel c1 device type disk connect  'sys/[email protected]';    

#allocate channel c2 device type disk connect  'sys/[email protected]';    

crosscheck backupset of archivelog all;    

backup archivelog  all format '$BACKUP_PATH/data/archlog.%d.level.$LEVEL.%U_%T';    

delete noprompt expired backupset of archivelog all;    

release channel c1;    

#release channel c2;    

}

run{  

allocate channel c1 device type disk connect  'sys/[email protected]';    

#allocate channel c2 device type disk connect  'sys/[email protected]';    

crosscheck backupset of database;    

backup incremental level $LEVEL database format '$BACKUP_PATH/data/data.%d.level.$LEVEL.%U_%T';    

backup spfile tag='spfile' format '$BACKUP_PATH/data/spfile_%U_%T';   

backup current controlfile tag='control' format='$BACKUP_PATH/data/control_%U_%T';    

delete noprompt expired backupset of database;    

delete noprompt obsolete;    

release channel c1;    

#release channel c2;    

}    

run{    

allocate channel c1 device type disk connect  'sys/[email protected]';    

#allocate channel c2 device type disk connect  'sys/[email protected]';    

crosscheck backupset of archivelog all;    

backup archivelog  all format '$BACKUP_PATH/data/archlog.%d.level.$LEVEL.%U_%T';    

delete noprompt expired backupset of archivelog all; 

delete archivelog all completed before 'sysdate-7';   

release channel c1;    

#release channel c2;    

}

exit;    

EOF

else

$BIN/rman log $BACKUP_PATH/logs/level.$ORACLE_SID.$LEVEL.$DATE_2.log <<EOF

connect target /;  

CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

run{    

allocate channel c1 device type disk connect  'sys/[email protected]';    

#allocate channel c2 device type disk connect  'sys/[email protected]';    

crosscheck backupset of archivelog all;    

backup archivelog all format '$BACKUP_PATH/data/archlog.%d.level.$LEVEL.%U_%T';    

delete noprompt expired backupset of archivelog all;    

release channel c1;    

#release channel c2;    

}

run{  

allocate channel c1 device type disk connect  'sys/[email protected]';    

#allocate channel c2 device type disk connect  'sys/[email protected]';  

crosscheck backupset of database ;    

backup incremental level $LEVEL database format '$BACKUP_PATH/data/data.%d.level.$LEVEL.%U_%T';    

backup spfile tag='spfile' format '$BACKUP_PATH/data/spfile_%U_%T'; 

backup current controlfile tag='control' format='$BACKUP_PATH/data/control_%U_%T';    

delete noprompt expired backupset of database ;    

delete noprompt obsolete ;    

release channel c1;    

#release channel c2;    

}

run{    

allocate channel c1 device type disk connect  'sys/[email protected]';    

#allocate channel c2 device type disk connect  'sys/[email protected]';    

crosscheck backupset of archivelog all;    

backup archivelog  all format '$BACKUP_PATH/data/archlog.%d.level.$LEVEL.%U_%T';    

delete noprompt expired backupset of archivelog all; 

delete archivelog all completed before 'sysdate-7';   

release channel c1;    

#release channel c2;    

}

exit;  

EOF

fi

################################################################################

3.添加计划任务

crontab -e

00 1 * * 0            /data/rman_bak/scripts/rman_bak.sh 0    //周日01:00时完全备份

00 1 * * 1,2,3,4,5,6  /data/rman_bak/scripts/rman_bak.sh 1    //周一到周六01:00增量备份

4.配置监听

tnsnames.ora添加如下:

ORCL =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = testdb-cluster-scan)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

ORCL1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.223)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

      (INSTANCE_NAME = orcl1)

    )

  )