环境: OEL+Oracle 11.2.0.1
ORACLE_SID=orcl2
创建如下目录: [root@DBA2 /]$ mkdir /backup
[root@DBA2 /]$ mkdir /backup/0
[root@DBA2 /]$ mkdir /backup/1
[root@DBA2 /]$ mkdir /backup/2
[root@DBA2 /]$ mkdir /backup/3
[root@DBA2 /]$ mkdir /backup/4
[root@DBA2 /]$ mkdir /backup/5
[root@DBA2 /]$ mkdir /backup/6
更改属主: [root@DBA2 ~]# chown -R oracle:dba /backup/
脚本内容如下: #########################################################
### backup.sh ###
#########################################################
##设置环境变量
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/OraHome
export ORACLE_SID=orcl2
export ORACLE_OWNER=oracle
export ORACLE_TERM=vt100
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export PATH=$PATH:/usr/sbin
export PATH=$PATH:/usr/bin
NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
export NLS_LANG NOW=`date +%w`
rq=`date +%Y%m%d%H%M%S`
RMAN=$ORACLE_HOME/bin/rman
TARGET_CONNECT_STR=/
RMAN_LOG_FILE=/backup/$NOW/$ORACLE_SID.backup_all_out.log
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`
FILE_NAME=/backup/$NOW/$ORACLE_SID.$rq
if [ "$NOW" = "0" ]
then
BACKUP_TYPE="INCREMENTAL LEVEL 0"
else
BACKUP_TYPE="INCREMENTAL LEVEL 1"
fi
##逻辑备份
exp system/oracle direct=Y full=y file=$FILE_NAME.logic log=/backup/$NOW/orcl2_logic_backup.log
cat /backup/$NOW/orcl2_logic_backup.log >> $RMAN_LOG_FILE
rm /backup/$NOW/orcl2_logic_backup.log
##物理备份
CMD_STR="
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
rq=$rq
export rq
$RMAN target $TARGET_CONNECT_STR msglog $RMAN_LOG_FILE append <<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup as compressed backupset $BACKUP_TYPE format "$FILE_NAME.DATAFILE_%s_%t.bak" database;
sql "ALTER SYSTEM ARCHIVE LOG CURRENT";
backup as compressed backupset format "$FILE_NAME.ARCHIVELOG_%s_%t.bak"
archivelog from time "SYSDATE-3" until time "SYSDATE" delete all input;
release channel c1;
release channel c2;
delete noprompt expired backup;
delete noprompt obsolete;
}
EOF
"
if [ "$CUSER" = "root" ]
then
su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE
RSTAT=$?
else
/usr/bin/ksh -c "$CMD_STR" >> $RMAN_LOG_FILE
RSTAT=$?
fi
if [ "$RSTAT" = "0" ]
then
LOGMSG="ended successfully"
else
LOGMSG="ended in error"
fi
echo >> $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
exit $RSTAT更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12ORA-01102 解决思路Statspack 安装和使用相关资讯 RMAN Oracle备份脚本
- RMAN故障一例(归档的备份,从不 (今 20:42)
- RMAN的FORMATA格式说明 (03月10日)
- Oracle 11g RMAN复制数据库的测试 (01月19日)
| - RMAN数据库迁移 (05月22日)
- 使用RMAN复制恢复开发库环境 (02月17日)
- Oracle 11g RMAN跨平台传输表空间 (01月19日)
|
本文评论 查看全部评论 (0)