《2022年通过RMAN备份恢复数据库到其他服务器 .pdf》由会员分享,可在线阅读,更多相关《2022年通过RMAN备份恢复数据库到其他服务器 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通过 RMAN 备份恢复数据库到其他服务器本节演示如何通过RMAN 创建的备份集, 将数据库恢复到其他服务器。本小节执行的操作较多,一定要有一个清醒的大脑,因此赶紧把脑袋里那堆乱七八糟的东西清除清除,要不你一定会看晕的。设定环境如下:源库 192.168.100.100,SID:jssbook。目录库 192.168.100.101,已安装与源库相同版本的数据库软件(一定要相同版本哟)。准备工作如下:记录下源数据库的DBID , DBID 的获取方式上节已讲过。创建完整备份集(含控制文件、数据文件、归档文件),源库为非归档模式也可以,只要确保创建的备份是一致备份,然后将备份集复制到目标服务器的
2、相同路径下。为简单起见, 源端与目标端目录结构保持一致。如果你在测试或正式操作时由于实际原因无法保持源端与目标端结构一致,在恢复过程中注意修改相关路径。操作步骤如下:注意,下列操作如非特别注明,均是在目标端服务器上进行的。1在源库端创建数据库的完整备份这个过程不用演示了,请没自信的同学自觉重温第8 章。备份集创建成功之后,将其复制到目录端的相同路径下,强调一点,必须是相同路径。复制方式灵活多样, Windows 环境可以直接通过共享复制,Linux/UNIX下可以通过 FTP。2在目标服务器上创建OracleService 如果是 Linux/UNIX环境,不需要执行本步骤,只要在连接数据库时
3、指定ORACLE_SID 环境变量即可。如果是 Windows 服务器,需要通过ORADIM 命令创建一个 OracleService,创建的 SID 要与源库相同,操作如下:1.C:Documents and SettingsAdministratorORADIM -NEW -SID JSSBOOK 2.Instance created. 上述命令创建了一个名为jssbook 的 OracleService。关于 ORADIM 命令的参数说明,直接执行ORADIM 命令,不加任何参数即可看到简要说明。3配置目标端数据库的初始化参数文件这个配置主要包括两步:名师资料总结 - - -精品资料欢迎
4、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 第一步是将源库端的SPFILE 初始化参数文件复制到目标端的适当路径,即%ORACLE_HOME%database 目录下,如果是Linux/UNIX环境则是在 $ORACLE_HOMEdbs 目录下。第二步是要修改其中的部分参数值,这一步并不是必须的, 如果目标端的路径与源端保持完全一致,不做任何修改都可以。 不过如果路径不一致的话, 至少要保证如下几个参数所指定的值正确有效:control_files :控制文件
5、路径。audit_file_dest:Oracle 审计输出的 debug 日志路径。background_dump_dest :LGWR 、DBWn 之类后台进程输出的debug 日志路径。core_dump_dest :Oracle内核输出的 dump 日志路径。user_dump_dest :用户进程输出的debug 日志路径。log_archive_dest_1:归档文件路径,如果启用了归档模式的话。由于 SPFILE 是二进制文件,无法直接编辑,如果要修改,可以先通过SPFILE 创建 PFILE(客户端初始化参数文件),PFILE 可以用文本编辑工具打开(如记事本 ),修改完相关参
6、数值后,再通过 PFILE 创建 SPFILE 即可,大致步骤如下:指定 ORACLE_SID ,然后连接到SQL*Plus 命令行环境:1.C:Documents and SettingsAdministratorset oracle_sid=jssbook 2.C:Documents and SettingsAdministratorsqlplus / as sysdba3.SQL*Plus: Release 10.2.0.1.0 - Production on Tue May 5 13:16:59 2009 4.Copyright (c) 1982, 2005, Oracle. All
7、rights reserved. 5.Connected to an idle instance. 根据源库复制过来的SPFILE 创建 PFILE,注意给 PFILE 指定适当的路径,执行命令如下:1.SQL CREATE PFILE = f:oraclebackuppfile_jssbook.ora2.FROM SPFILE;File created. 如果从源库复制出来的SPFILE 并没放在 %ORACLE_HOME%DATABASE目录下,也可以通过FROM SPFILE= 的方式指定 SPFILE 的详细路径,例如:1.SQL CREATE PFILE = f:oracleback
8、uppfile_jssbook.ora2.FROM SPFILE=f:oracleproduct10.2.0db_1database spfilejssbook.ora; 使用记事本 之类的文本工具打开文件F:oraclebackuppfile_jssbook.ora,修改相关参数值并保存。返回 SQL*Plus 命令行环境,执行下列命令,根据修改过的PFILE 创建 SPFILE:1.SQL CREATE SPFILE From Pfile=f:oraclebackuppfile_jssbook.ora; 2.File created. SPFILE 创建成功,数据库就可以启动到NOMOUN
9、T 状态了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 1.SQL STARTUP NOMOUNT 2.ORACLE instance started. 3.Total System Global Area 314572800 bytes 4.Fixed Size 1248720 bytes 5.Variable Size 67109424 bytes 6.Database Buffers 239075328 bytes 7
10、.Redo Buffers 7139328 bytes 4 恢复控制文件并进入到加载状态新开一个命令行窗口,连接到RMAN 命令行:1.C:Documents and SettingsjunsansiSET ORACLE_SID=jssbook 2.C:Documents and SettingsjunsansiRMAN TARGET / 3.Recovery Manager: Release 10.2.0.1.0 - Production on4.Tue May 5 13:54:15 2009 5.Copyright (c) 1982, 2005, Oracle. All rights re
11、served. 6.connected to target database: jssbook (not mounted) 由于此时目标数据库尚无控制文件,因此此处必须首先指定DBID :1.RMAN SET DBID=1415261003 2.executing command: SET DBID 从指定备份集中恢复控制文件:1.RMAN RESTORE CONTROLFILE FROM F:oraclebackup 2.C-1415261003-20090505-00; 3.Starting restore at 05-MAY-09 4.using target database cont
12、rol file insteadof recovery catalog 5.allocated channel: ORA_DISK_1 6.channel ORA_DISK_1: sid=157 devtype=DISK 7.channel ORA_DISK_1: restoring control file 8.channel ORA_DISK_1: restore complete, elapsed time : 00:00:04 9.output filename=F:ORACLEORADATAJSSBOOKCONTROL01.CTL 10.output filename=F:ORACL
13、EORADATAJSSBOOKCONTROL02.CTL 11.output filename=F:ORACLEORADATAJSSBOOKCONTROL03.CTL 12.Finished restore at 05-MAY-09 控制文件会被恢复到初始化参数CONTROL_FILES 指定的路径下。有了控制文件,就可以将数据库置为MOUNT 状态了:1.RMAN ALTER DATABASE MOUNT; 2.database mounted 3.released channel: ORA_DISK_1 5修复数据库名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
14、- - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 在这个测试环境中,源端与目标端的路径保持一致,因此这里可以直接用源路径修复,如果你的目标库与源库路径不同的话, 需要通过 SET NEWNAME FOR DATAFILE命令来为数据文件重新设定路径(注意, SET NEWNAME 必须要放在 RUN 块中执行的哟)。执行命令如下:1.RMAN RESTORE DATABASE; 2.Starting restore at 05-MAY-09 3.allocated channel: ORA_DISK_1
15、 4.channel ORA_DISK_1: sid=157 devtype=DISK 5.channel ORA_DISK_1: starting datafile backupset restore 6.channel ORA_DISK_1: specifying datafile(s) to restore from backup set7.restoring datafile 00001 to F:ORACLEORADATAJSSBOOKSYSTEM01.DBF 8.restoring datafile 00002 to F:ORACLEORADATAJSSBOOKUNDOTBS01.
16、DBF 9.restoring datafile 00003 to F:ORACLEORADATAJSSBOOKSYSAUX01.DBF 10.restoring datafile 00004 to F:ORACLEORADATAJSSBOOKUSERS01.DBF 11.restoring datafile 00005 to F:ORACLEORADATAJSSBOOKSCOTT_TBS01.DBF 12.restoring datafile 00006 to F:ORACLEORADATAJSSBOOKBOOKS01.DBF 13.channel ORA_DISK_1: reading f
17、rom backup piece 14.F:ORACLEBACKUPBAK_1JKE921J_1_1 15.channel ORA_DISK_1: restored backup piece 1 16.piece handle=F:ORACLEBACKUPBAK_1JKE921J_1_1 tag=TAG20090505T134835 17.channel ORA_DISK_1: restore complete, elapsed time : 00:00:55 18.Finished restore at 05-MAY-09 觉着神奇是吧, 这样都可以, 不需要指定备份集位置吗?有这样的疑问说
18、明你独立思考得还不够多啊,虽然说人类一思考上帝就发笑,但是作为一名勤劳、勇敢、朴实(就是不爱思考)的中国人,上帝并不是我们的主要信仰,它也管不了神奇的东方世界这嘎。应该说,在一般情况下执行本操作时,不需要做特别的设置,前面在备份章节曾经说过,在NOCATALOG 模式下,备份集信息是保存在控制文件中的,现在控制文件已经恢复了,它当然知道应该上哪儿找备份集。那什么时候需要手动指定备份集呢?只有一种情况,当你的备份集不在控制文件的原路径时,你必须通过 CATALOG 命令重新注册备份集,也就是告诉RMAN ,它要找的备份集在哪里。6恢复数据库RECOVER 也是同理,不需要你告诉他归档在什么位置,
19、它也知道上哪去找,因为控制文件里都记着呢,直接执行RECOVER 即可:1.RMAN RECOVER DATABASE; 2.Starting recover at 05-MAY-09 3.using channel ORA_DISK_1 4.starting media recovery 5.channel ORA_DISK_1: starting archive log restore 6.todefault destination 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
20、 4 页,共 5 页 - - - - - - - - - 7.channel ORA_DISK_1: restoring archive log 8.archive log thread=1 sequence =51 9.channel ORA_DISK_1: reading from backup piece 10. F:ORACLEBACKUPBAK_1KKE923B_1_1 11.channel ORA_DISK_1: restored backup piece 1 12.piece handle=F:ORACLEBACKUPBAK_1KKE923B_1_1 13.tag=TAG2009
21、0505T134931 14.channel ORA_DISK_1: restore complete, 15.elapsed time : 00:00:01 16.archive log filename=F:ORACLEORADATAJSSBOOK 17.ARCHIVEARC00051_0680477835.001 thread=1 sequence =51 18.unable to find archive log 19.archive log thread=1 sequence =52 20.RMAN-00571: = 21.RMAN-00569: = ERROR MESSAGE ST
22、ACK FOLLOWS = 22.RMAN-00571: = 23.RMAN-03002: failure of recover command at 05/05/2009 14:04:38 24.RMAN-06054: media recovery requesting unknown log: 25.thread 1 seq 52 lowscn 983415 报错了?正常的,因为我们创建的热备份并不是一致性备份,源端的归档是过来了,但联机重做日志文件并没有随备份集复制过来,因此恢复时肯定恢复不到源端的当前状态。这个错误是提醒你要想继续恢复的话还需要线程1 生成的 SEQUENCE#为 52
23、 的重做日志文件。我们这里只是测试恢复到异机的过程,并不准备保持与源数据库端一模一样(如果你要保持一致,必须复制源数据库端的重做日志文件,那必须首先SHUTDOWN 源端数据库才行)。如果说你只是希望避免看到这个错误,可以在RECOVER DATABASE前指定 SET UNTIL SCN或者用 SET UNTIL TIME命令设置恢复到的SCN 号或时间,执行不完全恢复。当然,我们现在执行的也是不完全恢复。7用 OPEN RESETLOGS 方式打开数据库最后,以 OPEN RESETLOGS 方式打开数据库即可:1.RMAN ALTER DATABASE OPEN RESETLOGS; 2.database opened 至此,数据库在192.168.100.101服务器端创建成功。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -