NBU备份oracle异机恢复没有catalog解决方案.docx
- 文档编号:23345813
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:11
- 大小:21.28KB
NBU备份oracle异机恢复没有catalog解决方案.docx
《NBU备份oracle异机恢复没有catalog解决方案.docx》由会员分享,可在线阅读,更多相关《NBU备份oracle异机恢复没有catalog解决方案.docx(11页珍藏版)》请在冰豆网上搜索。
NBU备份oracle异机恢复没有catalog解决方案
NetBackup备份oracle无nocatalog解决方案
1.NetBackup通过RMANnocatalog方式备份设置步骤
当通过rmannocatalog方式备份Oracle,Oracle使用controlfile存放备份信息。
因此,当使用rmannocatalog方式备份时,备份controlfile是非常重要的。
有一个问题,当使用rmannocatalog恢复时,数据库必须是处于“mount”状态的。
而Oraclestartupmount的前提条件是control必须存在。
因此,你必须在恢复datafile之前先恢复controlfile。
使用rmancatalog方式时,能startupnomount然后restorecontrolfile;但使用rmannocatalog时,必须先用文件方式恢复controlfile。
下面对比一下rmannocatalog和rmancatalog的恢复时的步骤,以便建立正确的备份策略(以下的恢复都是在online状态下的备份):
rmannocatalog恢复:
1) 建立oracle运行环境(包括init或sp文件)
2) 文件方式恢复controlfile到init文件指定的位置
3) startupmount
4) rman,恢复datafile
5) alterdatabaseopenresetlogs
rmancatalog恢复:
1) 建立oracle运行环境(包括init或sp文件)
2) rman,restorecontrofile
3) alterdatabasemount
4) rman,restoredatafile
5) alterdatabaseopenresetlogs
能看出,rmannocatalog备份时,必须用文件方式备份controlfile。
另外,由于nocatalog时利用controlfile存放备份信息,建议将Oracle参数文件中的CONTROL_FILE_RECORD_KEEP_TIME值加大(缺省为7天),该参数在$ORACLE_HOME/dbs/initSID.ora中(9i后也可能在spfile中,只能通过Oracle语句更改)。
以下描述怎么使用NetBackup对Oracle进行rmannocatalog方式下的备份:
一、备份服务器上的工作
1.建立NetBackuppolicy,用于备份controlfile
建立policy“oracle_control_file”,backuptype“standard”,client“oracle_server”,filelist“/scripts/control.ora”,schedule“user”type“userbackup”,选择所有时间范围。
2.建立NetBackuppolicy,用于备份Oracledatabase
建立policy“oracle_full”,backuptype“oracle”,client“oracle_server”,script“/scripts/hot_database_level0.sh”,schedule自己定。
3.如果需要,建立NetBackuppolicy用于备份archivelog,方法同上,脚本另写。
二、Oracle服务器上的工作
1.在“oracle_server”上,编辑“/scripts/hot_database_level0.sh”文件,加入下行,在rman指令结束符“}”前:
ALLOCATECHANNELch00TYPEdisk;
COPYCURRENTCONTROLFILEto’/scripts/control.ora’;
RELEASECHANNELch00;
2.在“/scripts/hot_database_level0.sh”相关行(快结束的地方),加入:
/usr/openv/netbackup/bin/bpbackup-poracle_control_file-suser?
t0/scripts/control.ora
3.如果另外有archivelog的备份,重复以上1、2步骤,加在archivelog备份的脚本中。
4.改动oracle参数(可选,Oracle9i使用spfile的话通过oracle指令修改)
(1)shutdownoracle
(2)编辑$ORACLE_HOME/dbs/initSID.ora,设置
CONTROL_FILE_RECORD_KEEP_TIME=365
(3)startuporacle
scripts举例:
#!
/bin/sh
#$Header:
hot_database_backup.sh,v1.92002/02/0616:
48:
56lstrubStab$
#
#bcpyrght
#***************************************************************************
#*$VRTScprght:
Copyright1993-2002VERITASSoftwareCorporation,AllRightsReserved$*
#***************************************************************************
#ecpyrght
#
#---------------------------------------------------------------------------
# hot_database_backup.sh
#---------------------------------------------------------------------------
# ThisscriptusesRecoveryManagertotakeahot(inconsistent)database
# backup.Ahotbackupisinconsistentbecauseportionsofthedatabaseare
# beingmodifiedandwrittentothediskwhilethebackupisprogressing.
# YoumustrunyourdatabaseinARCHIVELOGmodetomakehotbackups.Itis
# assumedthatthisscriptwillbeexecutedbyuserroot.InorderforRMAN
# toworkproperlyweswitchuser(su-)totheoracledbaaccountbefore
# execution.IfthisscriptrunsunderauseraccountthathasOracledba
# privilege,itwillbeexecutedusingthisuser’saccount.
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
#Determinetheuserwhichisexecutingthisscript.
#---------------------------------------------------------------------------
CUSER=`id|cut-d"("-f2|cut-d"
"-f1`
#---------------------------------------------------------------------------
#Putoutputin;.out.Changeasdesired.
#Note:
outputdirectoryrequireswritepermission.
#---------------------------------------------------------------------------
RMAN_LOG_FILE=${0}.out
#---------------------------------------------------------------------------
#Youmaywanttodeletetheoutputfilesothatbackupinformationdoes
#notaccumulate. Ifnot,deletethefollowinglines.
#---------------------------------------------------------------------------
if[-f"$RMAN_LOG_FILE"]
then
rm-f"$RMAN_LOG_FILE"
fi
#-----------------------------------------------------------------
#Initializethelogfile.
#-----------------------------------------------------------------
echo>;>;$RMAN_LOG_FILE
chmod666$RMAN_LOG_FILE
#---------------------------------------------------------------------------
#Logthestartofthisscript.
#---------------------------------------------------------------------------
echoScript$0>;>;$RMAN_LOG_FILE
echo====startedon`date`====>;>;$RMAN_LOG_FILE
echo>;>;$RMAN_LOG_FILE
#---------------------------------------------------------------------------
#Replace/db/oracle/product/ora81,below,withtheOraclehomepath.
#---------------------------------------------------------------------------
ORACLE_HOME=/oracle/app/oracle/product/8.1.7
exportORACLE_HOME
#---------------------------------------------------------------------------
#Replaceora81,below,withtheOracleSIDofthetargetdatabase.
#---------------------------------------------------------------------------
ORACLE_SID=ora81
exportORACLE_SID
#---------------------------------------------------------------------------
#Replaceora81,below,withtheOracleDBAuserid(account).
#---------------------------------------------------------------------------
ORACLE_USER=oracle
#---------------------------------------------------------------------------
#Setthetargetconnectstring.
#Replace"sys/manager",below,withthetargetconnectstring.
#---------------------------------------------------------------------------
TARGET_CONNECT_STR=/
#---------------------------------------------------------------------------
#SettheOracleRecoveryManagername.
#---------------------------------------------------------------------------
RMAN=$ORACLE_HOME/bin/rman
#---------------------------------------------------------------------------
#Printoutthevalueofthevariablessetbythisscript.
#---------------------------------------------------------------------------
echo>;>;$RMAN_LOG_FILE
echo "RMAN:
$RMAN">;>;$RMAN_LOG_FILE
echo "ORACLE_SID:
$ORACLE_SID">;>;$RMAN_LOG_FILE
echo "ORACLE_USER:
$ORACLE_USER">;>;$RMAN_LOG_FILE
echo "ORACLE_HOME:
$ORACLE_HOME">;>;$RMAN_LOG_FILE
#---------------------------------------------------------------------------
#Printoutthevalueofthevariablessetbybphdb.
#---------------------------------------------------------------------------
echo >;>;$RMAN_LOG_FILE
echo "NB_ORA_FULL:
$NB_ORA_FULL">;>;$RMAN_LOG_FILE
echo "NB_ORA_INCR:
$NB_ORA_INCR">;>;$RMAN_LOG_FILE
echo "NB_ORA_CINC:
$NB_ORA_CINC">;>;$RMAN_LOG_FILE
echo "NB_ORA_SERV:
$NB_ORA_SERV">;>;$RMAN_LOG_FILE
echo "NB_ORA_POLICY:
$NB_ORA_POLICY">;>;$RMAN_LOG_FILE
#---------------------------------------------------------------------------
#NOTE:
Thisscriptassumesthatthedatabaseisproperlyopened.Ifdesired,
#thiswouldbetheplacetoverifythat.
#---------------------------------------------------------------------------
echo>;>;$RMAN_LOG_FILE
#---------------------------------------------------------------------------
#IfthisscriptisexecutedfromaNetBackupschedule,NetBackup
#setsanNB_ORAenvironmentvariablebasedonthescheduletype.
#TheNB_ORAvariableisthenusedtodynamicallysetBACKUP_TYPE
#Forexample,when:
# scheduletypeis BACKUP_TYPEis
# ---------------- --------------
#AutomaticFull INCREMENTALLEVEL=0
#AutomaticDifferentialIncrementalINCREMENTALLEVEL=1
#AutomaticCumulativeIncremental INCREMENTALLEVEL=1CUMULATIVE
#
#Foruserinitiatedbackups,BACKUP_TYPEdefaultstoincremental
#level0(full). Tochangethedefaultforauserinitiated
#backuptoincrementalorincrementalcumulative,uncomment
#oneofthefollowingtwolines.
#BACKUP_TYPE="INCREMENTALLEVEL=1"
#BACKUP_TYPE="INCREMENTALLEVEL=1CUMULATIVE"
#
#Notethatweuseincrementallevel0tospecifyfullbackups.
#Thatisbecause,althoughtheyareidenticalincontent,only
#theincrementallevel0backupcanhaveincrementalbackupsof
#level>;0appliedtoit.
#---------------------------------------------------------------------------
if["$NB_ORA_FULL"="1"]
then
echo"Fullbackuprequested">;>;$RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTALLEVEL=0"
elif["$NB_ORA_INCR"="1"]
then
echo"Differentialincrementalbackuprequested">;>;$RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTALLEVEL=1"
elif["$NB_ORA_CINC"="1"]
then
echo"Cumulativeincrementalbackuprequested">;>;$RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTALLEVEL=1CUMULATIVE"
elif["$BACKUP_TYPE"=""]
then
echo"Default-Fullbackuprequested">;>;$RMAN_LOG_FILE
BACKUP_TYPE="INCREMENTALLEVEL=0"
fi
#---------------------------------------------------------------------------
#CallRecoveryManagertoinitiatethebackup.Thisexampledoesnotusea
#RecoveryCatalog.Ifyouchoosetouseone,replacetheoption’nocatalog’
#fromthermancommandlinebelowwiththe
#’rcvcat;/;@;’statement.
#
#Note:
AnyenvironmentvariablesneededatruntimebyRMAN
# mustbesetandexportedwithintheswitchuser(su)command.
#---------------------------------------------------------------------------
# Backsupthewholedatabase. Thisbackupispartoftheincremental
# strategy(thismeansitcanhaveincrementalbackupsoflevels>;0
# appliedtoit).
#
# Wedonotneedtoexplicitlyrequestthecontrol
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NBU 备份 oracle 恢复 没有 catalog 解决方案