1. 说明: 本次数据库还原演练涉及的内容: 1.1 集群数据库还原至单实例数据库; 1.2 ASM文件系统还原到普通文件系统; 1.3 LINUX操作系统还原到WINDOWS系统; 1.4 从NBU进行的异机还原操作。
2. 操作步骤记录:
2.1 获取需要还原的数据库实例的参数文件: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [root@oak0 ~]# su - oracle [oracle@oak0 ~]$ export ORACLE_SID=CONEWComp1 [oracle@oak0 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Sep 26 08:20:24 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options SYS@NEWComp1>show parameter spfile; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/NEWComp/spfileNEWComp.ora SYS@NEWComp1>create pfile='/u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/pfileNEWComp.ora' from spfile; File created.
2.2 将参数文件传到目标服务器(略) 2.3 查看数据库DBID 1 2 3 4 5 6 7 [oracle@oak0 ~]$ rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Thu Sep 27 22:37:08 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: NEWCOMP (DBID=2780812440)
2.4 在需要还原的服务器上安装ORACLE数据库软件(略) 2.5 在异机主机的host文件中添加nbu server主机和原主机信息: 1 2 3 4 5 6 7 8 9 10 #localhost name 127.0.0.1 localhost ::1 localhost 172.15.60.67 LQWVTXLJKF-AP01 #ODA 公用数据库服务器 172.15.1.114 oak0 172.15.1.115 oak1 172.15.1.118 oak_SCANIP #NBU备份机 172.15.1.19 it-zbnbu01
2.6 在NBU备份机上添加主机HOSTS(略) 2.7 在需要还原的服务器上安装nbu客户端(略) 2.8 在NBU主机上查找相关备份集文件: 1 2 3 4 5 6 7 8 [root@lqit-zbnbu01 ~]# find / -name bplist /usr/openv/netbackup/bin/bplist [root@lqit-zbnbu01 ~]# /usr/openv/netbackup/bin/bplist -C oak0 -t 4 -l -R / -rw-rw---- oracle asmadmin 18874368 Sep 28 14:43 /ctrl_dNEWCOMP_u9ote8fsv_s312_p1_t988037023 -rw-rw---- oracle asmadmin 35237632K Sep 28 14:37 /arch_dNEWCOMP_u9nte8fi4_s311_p1_t988036676 -rw-rw---- oracle asmadmin 36400384K Sep 28 14:32 /arch_dNEWCOMP_u9mte8f70_s310_p1_t988036320 -rw-rw---- oracle asmadmin 18874368 Sep 28 14:31 /bk_dNEWCOMP_u9lte8f6a_s309_p1_t988036298 -rw-rw---- oracle asmadmin 4441856K Sep 28 14:30 /bk_dNEWCOMP_u9kte8f4j_s308_p1_t988036243
2.9 将PFILE文件传输至需要还原的主机并修改相关参数: 主要是文件路径名及集群相关配置要改,加#号的为注释掉的集群参数,路径已修改为WINDOWS的路径。 参数文件示例(注释掉的内容为原来参数文件内容)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 #NEWComp1.__db_cache_size=6274678784 #NEWComp2.__db_cache_size=5721030656 #NEWComp2.__java_pool_size=16777216 #NEWComp1.__java_pool_size=16777216 #NEWComp2.__large_pool_size=33554432 #NEWComp1.__large_pool_size=33554432 #NEWComp2.__pga_aggregate_target=4294967296 #NEWComp1.__pga_aggregate_target=4294967296 #NEWComp2.__sga_target=8589934592 #NEWComp1.__sga_target=8589934592 #NEWComp2.__shared_io_pool_size=0 #NEWComp1.__shared_io_pool_size=0 #NEWComp1.__shared_pool_size=2197815296 #NEWComp2.__shared_pool_size=2751463424 #NEWComp2.__streams_pool_size=0 #NEWComp1.__streams_pool_size=0 *._datafile_write_errors_crash_instance=false *._db_writer_coalesce_area_size=16777216 *._disable_interface_checking=TRUE *._ENABLE_NUMA_SUPPORT=FALSE *._FILE_SIZE_INCREASE_INCREMENT=2143289344 *._fix_control='off' *._gc_policy_time=0 *._gc_undo_affinity=FALSE *.aq_tm_processes=0 *.audit_file_dest='C:\app\data\NEWComp1\adump' *.audit_sys_operations=TRUE *.audit_trail='db' #*.cluster_database=true *.compatible='11.2.0.4.0' *.control_files=C:\app\data\NEWComp1\o1_mf_df10drj3_.ctl' *.cpu_count=2 *.cursor_sharing='EXACT' *.db_block_checking='FULL' *.db_block_checksum='FULL' *.db_block_size=8192 *.db_create_file_dest='C:\app\data\NEWComp1\' *.db_create_online_log_dest_1='C:\app\data\NEWComp1\' *.db_domain='' *.db_files=1024 *.db_lost_write_protect='TYPICAL' *.db_name='NEWComp' *.db_recovery_file_dest='C:\app\data\NEWComp1\' *.db_recovery_file_dest_size=1932735283200 *.db_writer_processes=2 *.diagnostic_dest='C:\app\data\NEWComp1\' *.dispatchers='(PROTOCOL=TCP) (SERVICE=NEWCompXDB)' *.fast_start_mttr_target=300 *.filesystemio_options='setall' *.global_names=FALSE #NEWComp1.instance_number=1 #NEWComp2.instance_number=2 *.job_queue_processes=30 *.log_archive_format='%t_%s_%r.dbf' *.log_buffer=16000000 *.nls_language='AMERICAN' *.nls_territory='AMERICA' *.open_cursors=1000 *.os_authent_prefix='' *.parallel_adaptive_multi_user=FALSE *.parallel_execution_message_size=16384 *.parallel_threads_per_cpu=2 *.pga_aggregate_target=4294967296 *.processes=400 #*.remote_listener='oak-scan:1521' *.remote_login_passwordfile='exclusive' *.session_cached_cursors=100 *.sga_max_size=8589934592 *.sga_target=8589934592 *.sql92_security=TRUE #NEWComp2.thread=2 #NEWComp1.thread=1 *.undo_retention=900 #NEWComp2.undo_tablespace='UNDOTBS2' #NEWComp1.undo_tablespace='UNDOTBS1' undo_tablespace='UNDOTBS1'
2.10 将参数文件放置于相应的文件夹内;(上一步填入参数文件的路径) 2.11 创建监听(略) 2.12 创建密码文件: 1 C:\app\product\11.2.0\dbhome_1\BIN>orapwd file=C:\app\data\NEWComp1\pwdhwprod.ora password=oracle entries=5;
2.13 创建实例: 1 2 3 C:\app\product\11.2.0\dbhome_1\BIN>oradim -new -sid NEWComp1 -startmode m 实例已创建。
2.14 连接数据库: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 C:\app\product\11.2.0\dbhome_1\BIN>set ORACLE_SID=NEWComp1 C:\app\product\11.2.0\dbhome_1\BIN>sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on 星期四 9月 27 22:27:24 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. 已连接到空闲例程。 使用修改过的PFILE文件将数据库启动到NOMOUNT阶段 SQL> startup pfile='C:\app\data\NEWComp1\pfileNEWComp1.ora' nomount; ORACLE 例程已经启动。 Total System Global Area 8551575552 bytes Fixed Size 2298352 bytes Variable Size 1526730256 bytes Database Buffers 6996099072 bytes Redo Buffers 26447872 bytes SQL>
2.15 使用RMAN连接到数据库,并SET DBID(使用源数据库的DBID) 1 2 3 4 5 6 7 8 9 10 11 C:\app\product\11.2.0\dbhome_1\BIN>rman target / 恢复管理器: Release 11.2.0.4.0 - Production on 星期四 9月 27 22:35:05 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: NEWCOMP (未装载) RMAN> SET DBID=2780812440 正在执行命令: SET DBID
2.16 恢复控制文件: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 RMAN> run { 2> allocate channel ch03 type 'sbt_tape'; 3> SEND 'NB_ORA_SERV=lqit-zbnbu01,NB_ORA_CLIENT=oak0'; 4> restore controlfile from '/ctrl_dNEWCOMP_u9ote8fsv_s312_p1_t988037023'; 5> release channel ch03; 6> } 分配的通道: ch03 通道 ch03: SID=321 设备类型=SBT_TAPE 通道ch03: Veritas NetBackup for Oracle - Release 8.1 (49) 向通道发命令: ch03 启动 restore 于 28-9月 -18 通道 ch03: 正在还原控制文件 通道 ch03: 还原完成, 用时: 00:00:25 输出文件名=C:\APP\DATA\NEWCOMP1\O1_MF_DF10DRJ3_.CTL 完成 restore 于 28-9月 -18 释放的通道: ch03
2.17 将数据库启动至MOUNT状态: 1 2 3 4 5 RMAN> sql 'alter database mount'; sql 语句: alter database mount RMAN>
2.18 恢复数据文件: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 SQL> select file#,name from v$datafile; FILE# NAME ---------- ---------------------------------------------------------------------------------------------------- 1 /u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/NEWCOMP/datafile/o1_mf_system_df10dwfb_.dbf 2 /u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/NEWCOMP/datafile/o1_mf_sysaux_df10f5pk_.dbf 3 /u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/NEWCOMP/datafile/o1_mf_undotbs1_df10fffw_.dbf 4 /u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/NEWCOMP/datafile/o1_mf_undotbs2_df10fthf_.dbf 5 /u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/NEWCOMP/datafile/o1_mf_users_df10fz0q_.dbf 6 /u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/NEWCOMP/datafile/NEWPARTS.dbf 7 /u02/app/oracle/oradata/datastore/.ACFS/snaps/NEWComp/NEWCOMP/datafile/NEWPARTS_2.dbf RMAN> run { 2> allocate channel ch01 type 'sbt_tape'; 3> SEND 'NB_ORA_SERV=lqit-zbnbu01,NB_ORA_CLIENT=oak0'; 4> SET NEWNAME FOR DATAFILE 1 TO 'C:\app\data\NEWComp1\o1_mf_system_df10dwfb_.dbf'; 5> SET NEWNAME FOR DATAFILE 2 TO 'C:\app\data\NEWComp1\o1_mf_sysaux_df10f5pk_.dbf'; 6> SET NEWNAME FOR DATAFILE 3 TO 'C:\app\data\NEWComp1\o1_mf_undotbs1_df10fffw_.dbf'; 7> SET NEWNAME FOR DATAFILE 3 TO 'C:\app\data\NEWComp1\o1_mf_undotbs1_df10fffw_.dbf'; 8> SET NEWNAME FOR DATAFILE 5 TO 'C:\app\data\NEWComp1\o1_mf_users_df10fz0q_.dbf'; 9> SET NEWNAME FOR DATAFILE 6 TO 'C:\app\data\NEWComp1\NEWPARTS.dbf'; 10> SET NEWNAME FOR DATAFILE 7 TO 'C:\app\data\NEWComp1\NEWPARTS_2.dbf'; 11> SET NEWNAME FOR DATAFILE 4 TO 'C:\app\data\NEWComp1\o1_mf_undotbs2_df10fthf_.dbf'; 12> restore database; 13> switch datafile all; 14> release channel ch01; 15> } 分配的通道: ch01 通道 ch01: SID=9 设备类型=SBT_TAPE 通道ch01: Veritas NetBackup for Oracle - Release 8.1 (49) 向通道发命令: ch01 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 启动 restore 于 28-9月 -18 通道 ch01: 正在开始还原数据文件备份集 通道 ch01: 正在指定从备份集还原的数据文件 通道 ch01: 将数据文件 00001 还原到 C:\app\data\NEWComp1\o1_mf_system_df10dwfb_.dbf 通道 ch01: 将数据文件 00002 还原到 C:\app\data\NEWComp1\o1_mf_sysaux_df10f5pk_.dbf 通道 ch01: 将数据文件 00003 还原到 C:\app\data\NEWComp1\o1_mf_undotbs1_df10fffw_.dbf 通道 ch01: 将数据文件 00004 还原到 C:\app\data\NEWComp1\o1_mf_undotbs2_df10fthf_.dbf 通道 ch01: 将数据文件 00005 还原到 C:\app\data\NEWComp1\o1_mf_users_df10fz0q_.dbf 通道 ch01: 将数据文件 00006 还原到 C:\app\data\NEWComp1\NEWPARTS.dbf 通道 ch01: 将数据文件 00007 还原到 C:\app\data\NEWComp1\NEWPARTS_2.dbf 通道 ch01: 正在读取备份片段 bk_dNEWCOMP_u9kte8f4j_s308_p1_t988036243 通道 ch01: 段句柄 = bk_dNEWCOMP_u9kte8f4j_s308_p1_t988036243 标记 = TAG20180928T143043 通道 ch01: 已还原备份片段 1 通道 ch01: 还原完成, 用时: 00:01:55 完成 restore 于 28-9月 -18 数据文件 1 已转换成数据文件副本 输入数据文件副本 RECID=9 STAMP=988043414 文件名=C:\APP\DATA\NEWCOMP1\NEWCOMP\DATAFILE\O1_MF_SYSTEM_FTVSKMW7_.DBF 数据文件 2 已转换成数据文件副本 输入数据文件副本 RECID=10 STAMP=988043414 文件名=C:\APP\DATA\NEWCOMP1\NEWCOMP\DATAFILE\O1_MF_SYSAUX_FTVSKMSC_.DBF 数据文件 3 已转换成数据文件副本 输入数据文件副本 RECID=11 STAMP=988043414 文件名=C:\APP\DATA\NEWCOMP1\NEWCOMP\DATAFILE\O1_MF_UNDOTBS1_FTVSKMX6_.DBF 数据文件 4 已转换成数据文件副本 输入数据文件副本 RECID=12 STAMP=988043414 文件名=C:\APP\DATA\NEWCOMP1\NEWCOMP\DATAFILE\O1_MF_UNDOTBS2_FTVSKMX6_.DBF 数据文件 5 已转换成数据文件副本 输入数据文件副本 RECID=13 STAMP=988043415 文件名=C:\APP\DATA\NEWCOMP1\NEWCOMP\DATAFILE\O1_MF_USERS_FTVSKMXN_.DBF 数据文件 6 已转换成数据文件副本 输入数据文件副本 RECID=14 STAMP=988043415 文件名=C:\APP\DATA\NEWCOMP1\NEWPARTS.DBF 数据文件 7 已转换成数据文件副本 输入数据文件副本 RECID=15 STAMP=988043415 文件名=C:\APP\DATA\NEWCOMP1\NEWPARTS_2.DBF 释放的通道: ch01 RMAN> 介质恢复:(其实可以和数据文件恢复同时进行,这里为了调试而分开了) RMAN> run { 2> allocate channel ch01 type 'sbt_tape'; 3> SEND 'NB_ORA_SERV=lqit-zbnbu01,NB_ORA_CLIENT=oak0'; 4> recover database; 5> release channel ch01; 6> } 释放的通道: ORA_DISK_1 分配的通道: ch01 通道 ch01: SID=9 设备类型=SBT_TAPE 通道ch01: Veritas NetBackup for Oracle - Release 8.1 (49) 向通道发命令: ch01 启动 recover 于 28-9月 -18 正在开始介质的恢复 通道 ch01: 正在开始将归档日志还原到默认目标 通道 ch01: 正在还原归档日志 归档日志线程=2 序列=94 通道 ch01: 正在还原归档日志 归档日志线程=1 序列=97 通道 ch01: 正在还原归档日志 归档日志线程=1 序列=98 通道 ch01: 正在还原归档日志 归档日志线程=2 序列=95 通道 ch01: 正在读取备份片段 arch_dNEWCOMP_u9nte8fi4_s311_p1_t988036676 通道 ch01: 段句柄 = arch_dNEWCOMP_u9nte8fi4_s311_p1_t988036676 标记 = TAG20180928T143157 通道 ch01: 已还原备份片段 1 通道 ch01: 还原完成, 用时: 00:05:45 归档日志文件名=C:\APP\DATA\NEWCOMP1\FRA\NEWCOMP\ARCHIVELOG\2018_09_28\O1_MF_1_97_FTVT7G1B_.ARC 线程=1 序列=97 归档日志文件名=C:\APP\DATA\NEWCOMP1\FRA\NEWCOMP\ARCHIVELOG\2018_09_28\O1_MF_2_94_FTVT7G0T_.ARC 线程=2 序列=94 通道 default: 正在删除归档日志 归档日志文件名=C:\APP\DATA\NEWCOMP1\FRA\NEWCOMP\ARCHIVELOG\2018_09_28\O1_MF_1_97_FTVT7G1B_.ARC RECID=196 STAMP=988044047 归档日志文件名=C:\APP\DATA\NEWCOMP1\FRA\NEWCOMP\ARCHIVELOG\2018_09_28\O1_MF_1_98_FTVT7G29_.ARC 线程=1 序列=98 通道 default: 正在删除归档日志 归档日志文件名=C:\APP\DATA\NEWCOMP1\FRA\NEWCOMP\ARCHIVELOG\2018_09_28\O1_MF_2_94_FTVT7G0T_.ARC RECID=197 STAMP=988044057 归档日志文件名=C:\APP\DATA\NEWCOMP1\FRA\NEWCOMP\ARCHIVELOG\2018_09_28\O1_MF_2_95_FTVT7G29_.ARC 线程=2 序列=95 通道 default: 正在删除归档日志 归档日志文件名=C:\APP\DATA\NEWCOMP1\FRA\NEWCOMP\ARCHIVELOG\2018_09_28\O1_MF_2_95_FTVT7G29_.ARC RECID=195 STAMP=988044014 无法找到归档日志 归档日志线程=2 序列=96 释放的通道: ch01 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: recover 命令 (在 09/28/2018 16:41:10 上) 失败 RMAN-06054: 介质恢复正在请求未知的线程 2 序列 96 的归档日志以及起始 SCN 10843514565186
由于缺少序列96的归档日志,因此跳过该日志:(和归档日志备份有关,后续可以调整NBU备份策略改善)1 2 3 4 5 6 7 8 9 10 11 12 RMAN> recover database until scn 10843514565186; 启动 recover 于 28-9月 -18 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=9 设备类型=DISK 正在开始介质的恢复 介质恢复完成, 用时: 00:00:00 完成 recover 于 28-9月 -18 RMAN>
2.19 打开数据库: 1 2 3 4 5 RMAN> alter database open resetlogs; 数据库已打开 RMAN>
至此恢复全部完成。
3. 需要注意的问题
还原的目标数据库SID必须严格匹配源数据库;
集群数据库还原至单实例数据库需要注意DB NAME和SID有所不同,需要分别做调整;
RMAN中需要为目标数据库配置DBID,该值需要与源数据库完全一致;
目标数据库软件版本号需要与源数据库版本号完全一致;
NBU中提示部分备份成功的ORACLE备份集无法用于还原操作;
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。