run{
allocatechannelc1devicetypediskmaxpiecesize=30G;
allocatechannelc2devicetypediskmaxpiecesize=30G;
allocatechannelc3devicetypediskmaxpiecesize=30G;
allocatechannelc4devicetypediskmaxpiecesize=30G;
backupformat'/u01/bak/orcl_%U_%T'skipinaccessiblefilesperset5databasetagorcl_hot_db_bk;
sql'altersystemarchivelogcurrent';
backupcurrentcontrolfiletag='bak_ctlfile'format='/u01/bak/ctl_file_%U_%T';
backupspfiletag='spfile'format='/u01/bak/spfile_%U_%T';
releasechannelc1;
releasechannelc2;
releasechannelc3;
releasechannelc4;
}
EOF
4.目标库恢复
1.
2.
3.
4.
4.1.传输备份文件
从源端拷贝备份文件到目标端指定目录
4.2.还原spfile到pfile
RMAN>startupnomount--rman自启动一个实例
RMAN>restorespfiletopfile‘/u01/initdba.ora’from‘/u01/bakup/xxx’;
注意:
修改磁盘组名称,归档路径、控制文件路径,日志路径,trace文件路径、remote_listener
4.3.还原控制文件
在其中一个节点上执行。
4.3.1.用pfile启动到nomount状态
RMAN>startupnomuntpfile=’/u01/app/xx/initdba.ora’;
4.3.2.rman执行对控制文件的恢复
RMAN>restorecontrolfilefrom'/HS5220/c-2006462633-20170123-03';
Startingrestoreat2017-02-0412:
16:
56
usingchannelORA_DISK_1
channelORA_DISK_1:
restoringcontrolfile
RMAN-00571:
===========================================================
RMAN-00569:
===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:
===========================================================
RMAN-03002:
failureofrestorecommandat02/04/201712:
16:
57
ORA-19870:
errorwhilerestoringbackuppiece/HS5220/c-2006462633-20170123-03
ORA-19504:
failedtocreatefile"+DG_DATA"
ORA-17502:
ksfdcre:
4Failedtocreatefile+DG_DATA
ORA-15001:
diskgroup"DG_DATA"doesnotexistorisnotmounted
ORA-15040:
diskgroupisincomplete
ORA-15040:
diskgroupisincomplete
ORA-15040:
diskgroupisincomplete
ORA-15040:
diskgroupisincomplete
ORA-15040:
diskgroupisincomplete
ORA-15040:
diskgroupisincomplete
[oracle@ora8db1~]$ls-l$ORACLE_HOME/bin/oracle
-rwsr-s--x1oracleoinstall2398409683月1512:
32/u01/app/oracle/product/11.2.0/db_1/bin/oracle
[oracle@ora8db1~]$exit
logout
[root@ora8db1~]#su-grid
[grid@ora8db1~]$cd$ORACLE_HOME/bin/
[grid@ora8db1bin]$setasmgid
setasmgidsetasmgid0setasmgidwrap
[grid@ora8db1bin]$setasmgidwrap-o/u01/app/oracle/product/11.2.0/db_1/bin/oracle
[grid@ora8db1bin]$exit
logout
[root@ora8db1~]#su-oracle
[oracle@ora8db1~]$ls-l$ORACLE_HOME/bin/oracle
-rwsr-s--x1oracleasmadmin2398409683月1512:
32/u01/app/oracle/product/11.2.0/db_1/bin/oracle
[oracle@ora8db1~]$exportORACLE_SID=jsglrac1
[oracle@ora8db1~]$rmantarget/
RecoveryManager:
Release11.2.0.4.0-ProductiononThuMar1609:
23:
192017
Copyright(c)1982,2011,Oracleand/oritsaffiliates.Allrightsreserved.
RMAN-00571:
===========================================================
RMAN-00569:
===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:
===========================================================
RMAN-00554:
initializationofinternalrecoverymanagerpackagefailed
RMAN-04005:
errorfromtargetdatabase:
ORA-27140:
attachtopost/waitfacilityfailed
ORA-27300:
OSsystemdependentoperation:
invalid_egidfailedwithstatus:
1
ORA-27301:
OSfailuremessage:
Operationnotpermitted
ORA-27302:
failureoccurredat:
skgpwinit6
ORA-27303:
additionalinformation:
startupegid=1001(oinstall),currentegid=1004(asmadmin)
[oracle@ora8db1~]$ps-ef|grepora_pmon
oracle1556251008:
59?
00:
00:
00ora_pmon_jsglrac1
oracle173687173043009:
24pts/000:
00:
00grepora_pmon
[oracle@ora8db1~]$kill-9155625
[oracle@ora8db1~]$sqlplus/assysdba
SQL*Plus:
Release11.2.0.4.0ProductiononThuMar1609:
25:
182017
Copyright(c)1982,2013,Oracle.Allrightsreserved.
Connectedtoanidleinstance.
SYS@jsglrac1>startupnomount
ORACLEinstancestarted.
TotalSystemGlobalArea3206836224bytes
FixedSize2257520bytes
VariableSize1174408592bytes
DatabaseBuffers1979711488bytes
RedoBuffers50458624bytes
SYS@jsglrac1>exit
DisconnectedfromOracleDatabase11gEnterpriseEditionRelease11.2.0.4.0-64bitProduction
WiththePartitioning,RealApplicationClusters,OLAP,DataMining
andRealApplicationTestingoptions
[oracle@ora8db1~]$rmantarget/
RecoveryManager:
Release11.2.0.4.0-ProductiononThuMar1609:
25:
372017
Copyright(c)1982,2011,Oracleand/oritsaffiliates.Allrightsreserved.
connectedtotargetdatabase:
JSGLRAC(notmounted)
RMAN>restorecontrolfilefrom'/backup/full_backup/jsglrac/ctl_file_0grv777r_1_1_20170315';
Startingrestoreat2017-03-1609:
25:
57
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:
ORA_DISK_1
channelORA_DISK_1:
SID=1057instance=jsglrac1devicetype=DISK
channelORA_DISK_1:
restoringcontrolfile
channelORA_DISK_1:
restorecomplete,elapsedtime:
00:
00:
02
outputfilename=+DG_DATA/jsglrac/controlfile/current.267.938769959
Finishedrestoreat2017-03-1609:
25:
59
RMAN>
RMAN>restorecontrolfilefrom‘/u01/backup/xxx’;
修改参数文件中控制文件的名字
4.4.生成spfile,放在共享设备上
[oracle@ora8db1~]$sqlplus/assysdba
SQL*Plus:
Release11.2.0.4.0ProductiononThuMar1609:
29:
112017
Copyright(c)1982,2013,Oracle.Allrightsreserved.
Connectedto:
OracleDatabase11gEnterpriseEditionRelease11.2.0.4.0-64bitProduction
WiththePartitioning,RealApplicationClusters,AutomaticStorageManagement,OLAP,
DataMiningandRealApplicationTestingoptions
SYS@jsglrac1>createspfile='+DG_DATA'frompfile;
Filecreated.
[root@ora8db1~]#su-grid
[grid@ora8db1~]$asmcmd
ASMCMD>ls
DG_DATA/
DG_GI/
ASMCMD>cdDG_DATA
ASMCMD>ls
JSGLRAC/
ASMCMD>cdJSGLRAC
ASMCMD>ls
CONTROLFILE/
PARAMETERFILE/
ASMCMD>cdPARAMETERFILE
ASMCMD>ls
spfile.256.938770171
ASMCMD>ls-l
TypeRedundStripedTimeSysName
PARAMETERFILEUNPROTCOARSEMAR1609:
00:
00Yspfile.256.938770171
修改所有节点的pfile内容,指向spfile
SPFILE=’+DATA/XX/spfiledba.ora’
4.5.创建口令文件
$orapwdfile=?
/dbs/orapwdbapassword=oracle
在所有节点上创建口令文件。
注意:
密码要和原库一样
4.6.restore数据库
4.6.1.将数据库启动到mount状态--两个节点都要mount
SQL>alterdatabasemount;
在其中一个节点上执行
注册备份信息到控制文件
RMAN>catalogstartwith‘/u01/backup/’;---后面一定要添加“/”字符
restore数据文件
先在源库执行:
setlinesize100
setlinesize160pagesize2000
colfile_namefora60
select'setnewnamefordatafile'||file_id||'to'||chr(39)||'+DATA'||chr(39)||';'fromdba_data_files;
生成修改数据文件名的批量语句
run
{
allocatechanneld1typedisk;
allocatechanneld2typedisk;
allocatechanneld3typedisk;
allocatechanneld4typedisk;
setnewname–此处加入上面查出的批量语句
……
……
restoredatabase;
SWITCHDATAFILEALL;
releasechanneld1;
releasechanneld2;
releasechanneld3;
releasechanneld4;
}
(--恢复归档文件
RMAN>catalogstartwith‘/HS5220/’;
RMAN>listbackupofarchivelogall;
run{
allocatechannelc1typedisk;
allocatechannelc2typedisk;
allocatechannelc3typedisk;
allocatechannelc4typedisk;
setarchivelogdestinationto‘/HS5220’;
restorearchivelogfromlogseq170171untillogseq170226thread1;
restorearchivelogfromlogseq149060untillogseq149109thread2;
releasechannelc1;
releasechannelc2;
releasechannelc3;
releasechannelc4;
}
)
Recover过程中会自动restore归档文件,同时recover归档文件
4.6.2.查看源端数据库文件存放位置信息
selectfile#,namefromv$datafile;
查看目标库中文件号与文件名对应关系,并记录
4.7.recover数据库
注册归档信息到控制文件
RMAN>catalogstartwith‘/u01/archivelog/’;
RMAN>recoverdatabase;
/*先看归档的list信息
RMAN>listbackupofarchivelogall;
这里要注意,这里涉及到2个节点的归档文件,我们要找到2个节点最后的归档文件,看下哪个归档文件的scn小,然后恢复到这个scn。
RMAN>run{
setuntioscn2986227;
recoverdatabase;
}
*/
4.8.关闭源库
停应用程序。
在scott用户下创建一个测试表,来验证将来是否恢复完全
查看是否有大查询
selectcount(*)fromgv$session_longopswheretime_remaining>0;
查看大事物
selectsum(used_ublk)fromgv$transaction;
查看恢复操作
select*fromgv$fast_start_transactions;
select*fromgv$fast_start_servers;
清除col_usage$记录,当关闭数据库的时候就不会有大量的记录需要清理
execDBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
altersystemswitchlogfile;
altersystemswitchlogfile;
altersystemcheckpoint;
altersystemcheckpoint;
srvctlstopdatabase-dPRD-oimmediate
srvctlstartdatabase–dPRD–omount
4.9.拷贝源端剩下的归档和onlineredo
从11.2.0.3开始支持本地ASM到远端ASM之间的copy。
归档文件可以放在本地,也可以放在ASM磁盘组中。
4.10.再次recover
我们的归档文件是从其他地方copy过来的,当前的数据库并没有相关记录。
所以我们需要先将归档文件注册到控制文件中,然后才能使用。
RAMN>catalogarchivelog‘/u01/backup/xx’;
拷贝过来的onlineredofile,必须放在参数文件中指定的redo路径下。
ASMCMD>cp/backup/group_1.258.886258033group_1
copying/backup/group_1.258.886258033->+dg_data/jsglrac/onlinelog/group_1
RMAN>recoverdatabase;---完全恢复
4.11.upgatedb
关闭2节点数据库,同时在节点1上修改参数
---关闭归档
SQL>atlersystemsetcluster_database=falsescope=spfile;
SQL>shutdownimmediate;
SQL>startup
SQL>alterdatabaseopenresetlogs;
SQL>shutdownimmediate;
SQL>startupupgrade;
SQL>@?
/rdbms/admin/catupgrd.sql----
SQL>shutdownimmediate;
SQL>startup
SQL>@?
/rdbms/admin/utlrp.sql--编译失效对象
SQ>altersystemsetcluster_database=truescope=spfile;
crsctlstatres–t
#crsctlstopcluster–all
altersystemsetremote_listener=’rac12-sc