Nocatalog 下的RMAN 增量备份 shell脚本
?
?????? 之前整理了下catalog下全備的腳本,上次在生產(chǎn)庫(kù)上弄了個(gè)nocatalog的腳本,結(jié)果沒(méi)有在本本上保存,這次要用了,重新在整理了一下。
?
Linux 平臺(tái)下 RMAN 全備 和 增量備份 shell 腳本
http://blog.csdn.net/tianlesoftware/archive/2010/07/16/5740630.aspx
?
在執(zhí)行腳本之前,先修改幾個(gè)參數(shù)值:
1. DB 參數(shù):
修改控制文件的保存時(shí)間,從默認(rèn)的7天改成14天
SQL> show parameter control
SQL> alter system set control_file_record_keep_time=14 scope=both;
?
2. RMAN 參數(shù):
開啟控制文件的自動(dòng)備份,開啟之后在數(shù)據(jù)庫(kù)備份或者數(shù)據(jù)文件(比如添加數(shù)據(jù)文件)有修改的時(shí)候都會(huì)自動(dòng)備份控制文件和spfile文件。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
?
3. 備份策略根據(jù)自己的系統(tǒng)決
?????? 我這里是周日做0級(jí)備份。周四1級(jí)備份,其他2級(jí)備份。
?
4. 備份腳本如下:
##################################################################
##?? rman_incremental_backup.sh???? ??????????##
##? ??created by Tianlesoftware??????????? ?????##
##??????? 2011-1-25????????????????????? ???##
##################################################################
#!/bin/ksh
export LANG=en_US
BACKUP_DATE=`date +%d`
RMAN_LOG_FILE=${0}.out
TODAY=`date`
USER=`id|cut -d "(" -f2|cut -d ")" -f1`
echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export ORACLE_HOME
RMAN=$ORACLE_HOME/bin/rman
export RMAN
ORACLE_SID=orcl
export ORACLE_SID
ORACLE_USER=oracle
export ORACLE_USER
?
echo "ORACLE_SID: $ORACLE_SID">>$RMAN_LOG_FILE
echo "ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE
echo "ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE
echo "==========================================">>$RMAN_LOG_FILE
echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE
echo "?????????? ????????">>$RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
?
WEEK_DAILY=`date +%a`
case? "$WEEK_DAILY" in
?????? "Mon")
??????????? BAK_LEVEL=2
??????????? ;;
?????? "Tue")
??????????? BAK_LEVEL=2
??????????? ;;
?????? "Wed")
??????????? BAK_LEVEL=2
??????????? ;;
?????? "Thu")
??????????? BAK_LEVEL=1
??????????? ;;
?????? "Fri")
??????????? BAK_LEVEL=2
??????????? ;;
?????? "Sat")
??????????? BAK_LEVEL=2
??????????? ;;
?????? "Sun")
??????????? BAK_LEVEL=0
??????????? ;;
?????? "*")
??????????? BAK_LEVEL=error
esac
?
export BAK_LEVEL=$BAK_LEVEL
echo "Today is : $WEEK_DAILY? incremental level= $BAK_LEVEL">>$RMAN_LOG_FILE
?
RUN_STR="
BAK_LEVEL=$BAK_LEVEL
export BAK_LEVEL
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
$RMAN nocatalog TARGET sys/admin msglog $RMAN_LOG_FILE append <<EOF
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup? incremental level= $BAK_LEVEL? skip inaccessible filesperset 5 Database format='/u01/backup/orcl_lev"$BAK_LEVEL"_%U_%T'? tag='orcl_lev"$BAK_LEVEL"' ;
sql 'alter system archive log current';
backup archivelog all tag='arc_bak' format='/u01/backup/arch_%U_%T' skip inaccessible? filesperset 5 not? backed up 1 times? delete input;
backup current controlfile tag='bak_ctlfile' format='/u01/backup/ctl_file_%U_%T';
backup spfile tag='spfile' format='/u01/backup/ORCL_spfile_%U_%T';
release channel c2;
release channel c1;
}
allocate channel for maintenance device type disk;
report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
list backup summary;
release channel;
EOF
"
?# Initiate the command string
?
if [ "$CUSER" = "root" ]
then
??? echo "Root Command String: $RUN_STR" >> $RMAN_LOG_FILE????
??? su - $ORACLE_USER -c "$RUN_STR" >> $RMAN_LOG_FILE
??? RSTAT=$?
else
??? echo "User Command String: $RUN_STR" >> $RMAN_LOG_FILE????
??? /bin/sh -c "$RUN_STR" >> $RMAN_LOG_FILE
??? RSTAT=$?
fi
?
# ---------------------------------------------------------------------------
# Log the completion of this script.
# ---------------------------------------------------------------------------
?
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
/bin/mailx -s "RMAN Backup SID " tianlesoftware@vip.qq.com < $RMAN_LOG_FILE
exit $RSTAT
?
5. 備份腳本的log 日志:
?
connected to target database: DAVE (DBID=801102850)
using target database control file instead of recovery catalog
?
RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12>
allocated channel: c1
channel c1: sid=158 devtype=DISK
?
allocated channel: c2
channel c2: sid=147 devtype=DISK
?
Starting backup at 01-FEB-12
channel c1: starting incremental level 2 datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=/u01/app/oracle/oradata/orcl/system.256.736598559
input datafile fno=00004 name=/u01/app/oracle/oradata/orcl/users.259.736598641
channel c1: starting piece 1 at 01-FEB-12
channel c2: starting incremental level 2 datafile backupset
channel c2: specifying datafile(s) in backupset
input datafile fno=00003 name=/u01/app/oracle/oradata/orcl/sysaux.257.736598563
input datafile fno=00002 name=/u01/app/oracle/oradata/orcl/undotbs1.258.736598599
channel c2: starting piece 1 at 01-FEB-12
channel c1: finished piece 1 at 01-FEB-12
piece handle=/u02/backup/orcl_lev2_0dn287g3_1_1_20120201 tag=ORCL_LEV2 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:36
channel c2: finished piece 1 at 01-FEB-12
piece handle=/u02/backup/orcl_lev2_0en287g3_1_1_20120201 tag=ORCL_LEV2 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:36
Finished backup at 01-FEB-12
?
Starting Control File and SPFILE Autobackup at 01-FEB-12
piece handle=/u01/app/oracle/flash_recovery_area/DAVE/autobackup/2012_02_01/o1_mf_s_774118951_7lmfms6s_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 01-FEB-12
?
sql statement: alter system archive log current
?
Starting backup at 01-FEB-12
current log archived
channel c1: starting archive log backupset
channel c1: specifying archive log(s) in backup set
input archive log thread=1 sequence=9 recid=9 stamp=774118956
channel c1: starting piece 1 at 01-FEB-12
channel c2: starting archive log backupset
channel c2: specifying archive log(s) in backup set
input archive log thread=1 sequence=10 recid=10 stamp=774118956
channel c2: starting piece 1 at 01-FEB-12
channel c1: finished piece 1 at 01-FEB-12
piece handle=/u02/backup/arch_0hn287hc_1_1_20120201 tag=ARC_BAK comment=NONE
channel c1: backup set complete, elapsed time: 00:00:02
channel c1: deleting archive log(s)
archive log filename=/u01/archivelog/1_9_738254360.arch recid=9 stamp=774118956
channel c2: finished piece 1 at 01-FEB-12
piece handle=/u02/backup/arch_0gn287hc_1_1_20120201 tag=ARC_BAK comment=NONE
channel c2: backup set complete, elapsed time: 00:00:03
channel c2: deleting archive log(s)
archive log filename=/u01/archivelog/1_10_738254360.arch recid=10 stamp=774118956
Finished backup at 01-FEB-12
?
Starting backup at 01-FEB-12
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
including current control file in backupset
channel c1: starting piece 1 at 01-FEB-12
channel c1: finished piece 1 at 01-FEB-12
piece handle=/u02/backup/ctl_file_0in287hg_1_1_20120201 tag=BAK_CTLFILE comment=NONE
channel c1: backup set complete, elapsed time: 00:00:02
Finished backup at 01-FEB-12
?
Starting backup at 01-FEB-12
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
including current SPFILE in backupset
channel c1: starting piece 1 at 01-FEB-12
channel c1: finished piece 1 at 01-FEB-12
piece handle=/u02/backup/ORCL_spfile_0jn287hi_1_1_20120201 tag=SPFILE comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 01-FEB-12
?
Starting Control File and SPFILE Autobackup at 01-FEB-12
piece handle=/u01/app/oracle/flash_recovery_area/DAVE/autobackup/2012_02_01/o1_mf_s_774118963_7lmfn45l_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 01-FEB-12
?
released channel: c2
?
released channel: c1
?
RMAN> RMAN>
allocated channel: ORA_MAINT_DISK_1
channel ORA_MAINT_DISK_1: sid=158 devtype=DISK
?
RMAN> RMAN>
RMAN retention policy will be applied to the command
RMAN retention policy is set to recovery window of 7 days
no obsolete backups found
?
RMAN> RMAN>
RMAN retention policy will be applied to the command
RMAN retention policy is set to recovery window of 7 days
no obsolete backups found
?
RMAN> RMAN>
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/orcl_lev2_06n2877c_1_1_20120201 recid=1 stamp=774118636
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/orcl_lev2_05n2877c_1_1_20120201 recid=2 stamp=774118636
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u01/app/oracle/flash_recovery_area/DAVE/autobackup/2012_02_01/o1_mf_s_774118723_7lmfdojy_.bkp recid=3 stamp=774118725
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/arch_08n287ab_1_1_20120201 recid=4 stamp=774118732
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/arch_09n287ab_1_1_20120201 recid=5 stamp=774118732
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/ctl_file_0an287al_1_1_20120201 recid=6 stamp=774118742
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/ORCL_spfile_0bn287ao_1_1_20120201 recid=7 stamp=774118744
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u01/app/oracle/flash_recovery_area/DAVE/autobackup/2012_02_01/o1_mf_s_774118745_7lmffb20_.bkp recid=8 stamp=774118746
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/orcl_lev2_0dn287g3_1_1_20120201 recid=9 stamp=774118915
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/orcl_lev2_0en287g3_1_1_20120201 recid=10 stamp=774118923
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u01/app/oracle/flash_recovery_area/DAVE/autobackup/2012_02_01/o1_mf_s_774118951_7lmfms6s_.bkp recid=11 stamp=774118953
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/arch_0gn287hc_1_1_20120201 recid=12 stamp=774118957
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/arch_0hn287hc_1_1_20120201 recid=13 stamp=774118957
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/ctl_file_0in287hg_1_1_20120201 recid=14 stamp=774118961
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u02/backup/ORCL_spfile_0jn287hi_1_1_20120201 recid=15 stamp=774118962
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/u01/app/oracle/flash_recovery_area/DAVE/autobackup/2012_02_01/o1_mf_s_774118963_7lmfn45l_.bkp recid=16 stamp=774118964
Crosschecked 16 objects
?
?
RMAN> RMAN>
?
RMAN> RMAN>
?
List of Backups
===============
Key???? TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
1?????? B? 2? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? ORCL_LEV2
2?????? B? 2? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? ORCL_LEV2
3?????? B? F? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? TAG20120201T165843
4?????? B? A? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? ARC_BAK
5?????? B? A? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? ARC_BAK
6?????? B? F? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? BAK_CTLFILE
7?????? B? F ?A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? SPFILE
8?????? B? F? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? TAG20120201T165905
9?????? B? 2? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? ORCL_LEV2
10????? B? 2? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? ORCL_LEV2
11????? B? F? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? TAG20120201T170231
12????? B? A? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? ARC_BAK
13????? B? A? A DISK????? ??01-FEB-12?????? 1?????? 1?????? NO???????? ARC_BAK
14????? B? F? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? BAK_CTLFILE
15????? B? F? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? SPFILE
16????? B? F? A DISK??????? 01-FEB-12?????? 1?????? 1?????? NO???????? TAG20120201T170243
?
RMAN> RMAN>
released channel: ORA_MAINT_DISK_1
?
RMAN> RMAN>
?
Recovery Manager complete.
?
Script rman_incremental_backup.sh
==== ended successfully on Wed Feb 1 17:02:50 EST 2012 ====
?
?
6. 將備份腳本添加到Crontab
[oracle@singledb u02]$ crontab -l
20 17 * * * /u02/rman_incremental_backup.sh 1>/u02/rman.log 2>&1 &
?
關(guān)于crontab 參考:
?????? Linux Crontab 定時(shí)任務(wù) 命令詳解
?????? http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5315039.aspx
?
?
?
?
?
?
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
網(wǎng)上資源: http://tianlesoftware.download.csdn.net
相關(guān)視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(滿); DBA2 群:62697977(滿)
DBA3 群:62697850?? DBA 超級(jí)群:63306533;????
聊天 群:40132017
--加群需要在備注說(shuō)明Oracle表空間和數(shù)據(jù)文件的關(guān)系,否則拒絕申請(qǐng)
?
轉(zhuǎn)載于:https://www.cnblogs.com/zlja/archive/2011/01/26/2449724.html
總結(jié)
以上是生活随笔為你收集整理的Nocatalog 下的RMAN 增量备份 shell脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 法拍房数量激增数百倍!来看看这里面的数据
- 下一篇: 考考你,能看出这一段代码是用哪个编程语言