oracle备份如何到异机还原.docx
《oracle备份如何到异机还原.docx》由会员分享,可在线阅读,更多相关《oracle备份如何到异机还原.docx(11页珍藏版)》请在冰豆网上搜索。
oracle备份如何到异机还原
oracle备份如何到异机还原
作者:
ocpyang
情景描述:
有朋友问,MSSQLSERVER将数据库备份还原到其它机器很方便,基本就是傻瓜式操作,oracle有控制文件、参数文件一堆东西,
觉得还原很复杂;其实不然,我抽出了点时间,简单演示下案例,朋友们,参考下!
为了简单快速,我才用RMAN备份和还原
--说明:
(1).RMAN备份到异机恢复的时候,db_name需要相同。
如果说要想改成其他的实例名,可以在恢复成功后,用nid命令修改。
实例名的信息会
记录到控制文件里,所以如果在恢复的时候,如果实例名不一致,恢复的时候会报错。
(2).恢复的路径和源库不一致时,就需要在restore命令中使用set命令指定新位置,
并且使用switchdatafileall将变更信息更新的到控制文件中。
测试环境:
源数据库服务器A,安装在E,备份目录已在E盘;
源数据库服务器B,安装在F盘.
------------------------------------
一、源数据库准备工作
------------------------------------
--1.查询DBID
SQL>selectname,dbidfromv$database;
NAME DBID
-------------------
ORCL 1320546556
--2.备份源数据DB
run{
configureretentionpolicytorecoverywindowof14days;
configurecontrolfileautobackupon; --自动开启控制文件备份
configurecontrolfileautobackupformatfordevicetypediskto'E:
\backup\controlfile\bak_%F';
allocatechannelc1devicetypediskformat 'E:
\backup\data\bak_%u';
allocatechannelc2devicetypediskformat'E:
\backup\data\bak_%u';
sql'altersystemarchivelogcurrent';
backupincrementallevel=0databaseskipinaccessible
plusarchivelogfilesperset20
deleteallinput;
releasechannelc1;
releasechannelc2;
}
allocatechannelformaintenancedevicetypedisk;
crosscheckbackupset;
deletenopromptobsolete;
--或
run{
configureretentionpolicytorecoverywindowof14days;
allocatechannelc1devicetypediskformat 'E:
\backup\data\bak_%u';
allocatechannelc2devicetypediskformat'E:
\backup\data\bak_%u';
sql'altersystemarchivelogcurrent';
backupincrementallevel=0databaseskipinaccessible
plusarchivelogfilesperset20
deleteallinput;
--手动直接指明备份文件名和路径
backupcurrentcontrolfiletag='bak_ctrollfile'format='E:
\backup\controlfile\bak_ctl_file_%U_%T';
backupspfiletag='bak_spfile'format='E:
\backup\controlfile\bak_spfile_%U_%T';
releasechannelc1;
releasechannelc2;
}
allocatechannelformaintenancedevicetypedisk;
crosscheckbackupset;
deletenopromptobsolete;
--3.手动备份spfile
createpfile='E:
\backup\inittest.ora'fromspfile;
------------------------------------
二、目标库准备工作:
------------------------------------
---步骤1.创建口令文件
--如果有就不需要新建.
orapwdfile=F:
\app\Administrator\product\11.2.0\dbhome_1\database\PWDorcl.orapassword=password
--步骤2.恢复参数文件
--方法1.源数据库spfile并拷贝到B数据库服务器
\\192.168.2.25\e$\backup\inittest.ORA
复制到
E:
\bk\inittest.ORA
--步骤3.编辑参数文件中的文件路径
如路径和原来一样,则不需修改
eg:
-*_DUMP_DEST
-LOG_ARCHIVE_DEST*
-CONTROL_FILES
---实例:
orcl.__db_cache_size=939524096
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base='F:
\app\Administrator'#修改路径
orcl.__pga_aggregate_target=855638016
orcl.__sga_target=2550136832
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=1526726656
orcl.__streams_pool_size=16777216
*.audit_file_dest='F:
\app\Administrator\admin\orcl\adump' #修改路径
*.audit_trail='db'
*.compatible='11.2.0.0.0'
#修改路径
*.control_files='F:
\app\Administrator\oradata\orcl\control01.ctl','F:
\app\Administrator\oradata\orcl\control02.ctl','F:
\app\Administrator\oradata\orcl\control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='F:
\arch' #修改路径
*.db_recovery_file_dest_size=6442450944
*.diagnostic_dest='F:
\app\Administrator' #修改路径
*.dispatchers='(PROTOCOL=TCP)(SERVICE=orclXDB)'
*.log_archive_dest_1='location=f:
\arch' #修改路径
*.nls_date_format='yyyy-mm-ddhh:
mi:
ss'
*.open_cursors=300
*.optimizer_capture_sql_plan_baselines=TRUE
*.pga_aggregate_target=845152256
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2536505344
*.skip_unusable_indexes=TRUE
*.undo_tablespace='UNDOTBS1'
--步骤4.重启实例,使用已编辑好的参数文件
将用pfile将B数据库服务器启动到nomout状态
rmantarget/
startupnomountpfile='e:
\bk\inittest.ora'
--步骤5.恢复控制文件,装载数据库
rmantarget/
setdbid1320546556
restorecontrolfilefrom'e:
\bk\controlfile\BAK_CTL_FILE_6LO6SON4_1_1_20130412';
启动restore于2013-04-1113:
58:
58
使用目标数据库控制文件替代恢复目录
分配的通道:
ORA_DISK_1
通道ORA_DISK_1:
SID=129设备类型=DISK
通道ORA_DISK_1:
正在还原控制文件
通道ORA_DISK_1:
还原完成,用时:
00:
00:
01
输出文件名=F:
\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
输出文件名=F:
\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
输出文件名=F:
\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
完成restore于2013-04-1113:
59:
00
--步骤6.将DB启动到mout状态
alterdatabasemount;
数据库已装载
释放的通道:
ORA_DISK_1
--加载备份目录
CATALOGSTARTWITH'E:
\bk';
搜索与样式E:
\bk匹配的所有文件
数据库未知文件的列表
====================================
文件名:
E:
\bk\controlfile\BAK_C-1320546556-20130411-03
文件名:
E:
\bk\controlfile\BAK_CTL_FILE_65O6QILO_1_1_20130411
文件名:
E:
\bk\controlfile\BAK_SPFILE_66O6QILQ_1_1_20130411
文件名:
E:
\bk\data\BAK_60O6QIGV
文件名:
E:
\bk\data\BAK_61O6QIGV
文件名:
E:
\bk\data\BAK_62O6QIH1
文件名:
E:
\bk\data\BAK_63O6QIH1
文件名:
E:
\bk\data\BAK_64O6QILM
是否确实要将上述文件列入目录(输入YES或NO)?
yes
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
======================
文件名:
E:
\bk\controlfile\BAK_C-1320546556-20130411-03
文件名:
E:
\bk\controlfile\BAK_CTL_FILE_65O6QILO_1_1_20130411
文件名:
E:
\bk\controlfile\BAK_SPFILE_66O6QILQ_1_1_20130411
文件名:
E:
\bk\data\BAK_60O6QIGV
文件名:
E:
\bk\data\BAK_61O6QIGV
文件名:
E:
\bk\data\BAK_62O6QIH1
文件名:
E:
\bk\data\BAK_63O6QIH1
文件名:
E:
\bk\data\BAK_64O6QILM
--步骤7.restore数据库
7.1恢复目录不同的情况:
到Target库查询一下:
SQL> selecttrim(file_id),trim(file_name)fromdba_data_filesORDERBYFILE_IDASC;
1 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
2 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
3 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
4 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
6 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY02.DBF
7 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY03.DBF
8 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY04.DBF
9 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY05.DBF
11 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY06.DBF
12 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY07.DBF
13 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY08.DBF
14 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY09.DBF
15 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY10.DBF
16 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY01.DBF
17 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY11.DBF
18 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY12.DBF
19 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY13.DBF
20 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY14.DBF
21 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY15.DBF
22 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY16.DBF
23 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY17.DBF
24 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY18.DBF
25 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY19.DBF
26 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY20.DBF
SQL>selecttrim(file_id),trim(file_name)fromdba_temp_files;
1 E:
\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF
select'SETNEWNAMEFORDATAFILE'||''||file_id||''||'TO'||''||''''||trim(file_name)||''''||';'
fromdba_data_filesORDERBYFILE_IDASC;
---如下实例:
RUN
{
#renamethedatafiles
SETNEWNAMEFORDATAFILE1TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF';
SETNEWNAMEFORDATAFILE2TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF';
SETNEWNAMEFORDATAFILE3TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF';
SETNEWNAMEFORDATAFILE4TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF';
SETNEWNAMEFORDATAFILE6TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY02.DBF';
SETNEWNAMEFORDATAFILE7TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY03.DBF';
SETNEWNAMEFORDATAFILE8TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY04.DBF';
SETNEWNAMEFORDATAFILE9TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY05.DBF';
SETNEWNAMEFORDATAFILE11TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY06.DBF';
SETNEWNAMEFORDATAFILE12TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY07.DBF';
SETNEWNAMEFORDATAFILE13TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY08.DBF';
SETNEWNAMEFORDATAFILE14TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY09.DBF';
SETNEWNAMEFORDATAFILE15TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY10.DBF';
SETNEWNAMEFORDATAFILE16TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY01.DBF';
SETNEWNAMEFORDATAFILE17TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY11.DBF';
SETNEWNAMEFORDATAFILE18TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY12.DBF';
SETNEWNAMEFORDATAFILE19TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY13.DBF';
SETNEWNAMEFORDATAFILE20TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY14.DBF';
SETNEWNAMEFORDATAFILE21TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY15.DBF';
SETNEWNAMEFORDATAFILE22TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY16.DBF';
SETNEWNAMEFORDATAFILE23TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY17.DBF';
SETNEWNAMEFORDATAFILE24TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY18.DBF';
SETNEWNAMEFORDATAFILE25TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY19.DBF';
SETNEWNAMEFORDATAFILE26TO'F:
\APP\ADMINISTRATOR\ORADATA\ORCL\VPAY20.DBF';
SQL"ALTERDATABASERENAMEFILE''E:
\app\Administrator\oradata\orcl\REDO01.LOG''
TO''F:
\app\Administrator\oradata\orcl\REDO01.LOG''";
SQL"ALTERDATABASERENAMEFILE''E:
\app\Administrator\oradata\orcl\REDO02.LOG''
TO''F:
\app\Administrator\oradata\orcl\REDO02.LOG''";
SQL"ALTERDATABASERENAMEFILE''E:
\app\Administrator\oradata\orcl\REDO03.LOG''
TO''F:
\app\Administrator\oradata\orcl\REDO03.LOG''";
RESTOREDATABASE;
SWITCHDATAFILEALL;
}
对switchdatafileall的说明:
--对于nocatalog模式下,rman备份的信息是保存在控制文件里的,包括文件的路径信息。
这里的switchdatafileall的作用,就是更新控制文件里的信息。
--步骤8.recover数据库
RECOVERDATABASE;
/***常见错误:
归档日志线程=1序列=1696
RMAN-00571:
===========================================================
RMAN-00569:
===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:
===========================================================
RMAN-03002:
recover命令(在04/11/201315:
18:
07上)失败
RMAN-06054:
介质恢复正在请求未知的线程1序列1696的归档日志以及起始SCN240793
29
---解决方法:
RMAN>recoverdatabaseuntilscn24159677;
启动recover于2013-04-1115:
29:
05
使用通道ORA_DISK_1
正在开始介质的恢复
介质恢复完成,用时:
00:
00:
02
完成recover