Linux 下 Oracle备份脚本(RMAN/EXP)

环境:

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




--------------------------------------------------------------------------------------------

版权所有,转载请注明作者及原文链接,否则追究法律责任!

QQ:      584307876

作者:    Seven

原文链接:  http://blog.csdn.net/sunjiapeng/article/details/8776555

邮箱:     [email protected]


你可能感兴趣的:(Linux 下 Oracle备份脚本(RMAN/EXP))