RMAN For 11gR2 RAC脚本备份

来源:互联网 发布:驻韩大使 间谍 知乎 编辑:程序博客网 时间:2024/05/22 05:33
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
LEVEL=$@
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 [ $@ -ne 0 -a $@ -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/111111@orcl1';    
#allocate channel c2 device type disk connect  'sys/111111@orcl2';    
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/111111@orcl1';    
#allocate channel c2 device type disk connect  'sys/111111@orcl2';    
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/111111@orcl1';    
#allocate channel c2 device type disk connect  'sys/111111@orcl2';    
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/oracle@orcl1';    
#allocate channel c2 device type disk connect  'sys/oracle@orcl2';    
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/111111@orcl1';    
#allocate channel c2 device type disk connect  'sys/111111@orcl2';  
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/111111@orcl1';    
#allocate channel c2 device type disk connect  'sys/111111@orcl2';    
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)
    )
  )


  
  
0 0
原创粉丝点击