技术开发 频道

一步一步学RMAN:技巧实践篇

   
 前情回顾:
     1 一步一步学RMAN之进入RMAN
     2 一步一步学RMAN之RMAN命令知多少;
     3  一步一步学RMAN之RMAN备份演练进阶篇 ;
     4  一步一步学RMAN之实战RMAN备份 

    首先注意:rman备份的时候并不会备份临时表空间的数据文件(想想也是,反正是临时的,备它干嘛),所以完全恢复之后,如果临时表空间的数据文件也丢失,需要手工重新创建临时表空间的数据文件。据消息灵通人士称,10G之后的版本会在恢复过程中自动创建临时表空间的数据文件,手头没有环境(11g都出了,俺还在学9i,落后啊。),未经尝试,有心的朋友如果落实该消息,也不妨通知俺一下:)

  其次需要了解:Oracle数据库的恢复实际上包含了两个概念:数据库修复(RESTORE)与数据库恢复(RECOVER):
  数据库修复:是指利用备份的数据库文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置。RMAN在进行修复操作时,会利用恢复目录(没有建立恢复目录的话就使用目标数据库的控制文件)来获取备份信息,并从中选择最合适的备份进行修复操作。选择备份时有两个原则(1、选择距离恢复目录时刻最近;2、优先选择镜像复制,其次才是备份集)
  数据库恢复:是指利用重做日志或增量备份来重建丢失的数据。

  再然后需要明白:我们在对目标数据库做任何形式的修复或者恢复之前,目标数据库必须处于加载状态,恢复指定数据文件时,也可以在打开状态下恢复(什么,控制文件丢了,进不了加载状态?黑黑,麻烦了,不过也并非完全无可救药,接着往下看吧)。

一、对数据库进行完全介质恢复
  过程有三个步骤:
  1、启动数据库到加载状态
        RMAN> SHUTDOWN IMMEDIATE;
        RMAN> STARTUP MOUNT;

  2、执行恢复操作(记的我们刚说过的,恢复分两步,有先有后的。)
  RMAN> RESTORE DATABASE;
  RMAN> RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;

  注意:DELETE ARCHIVELOGS和SKIP TABLESPACE两个参数是可选择的,作用如下:
  DELETE ARCHIVELOGS:表示RMAN将在完成恢复过程后自动删除那些在恢复过程中修复的归档日志文件。
  SKIP TABLESPACE:跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的。

  3、打开数据库
  RMAN> ALTER DATABASE OPEN;
  此处需要注意的一点是,如果你的数据库并非处于归档模式,那么必须使用ALTER DATABASE OPEN RESETLOGS来打开数据库,因为RMAN会认为在非归档模式下是一个不一致的备份,执行resetlogs之后,oracle将会把scn重新置为0。


二、恢复表空间
    同样也可以分成三个步骤:
  1、启动数据库到加载状态
        RMAN> SHUTDOWN IMMEDIATE;
        RMAN> STARTUP MOUNT;

       2、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机:   

RMAN> SQL 'ALTER TABLESPACE jweb OFFLINE IMMEDIATE'; RMAN> RESTORE TABLESPACE jweb; RMAN> RECOVER TABLESPACE jweb; RMAN> SQL 'ALTER TABLESPACE jweb ONLINE';

  3、打开数据库
  RMAN> ALTER DATABASE OPEN;

三、恢复数据文件
       事实上,恢复表空间实际就是恢复其所对应的数据文件(一个表空间可能对应多个数据文件),所以步骤与上相似。
  1、启动数据库到加载状态
      RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;

2、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机,操作数据文件时可以直接指定数据文件,也可以以数据文件序号代替:

RMAN>SQL 'ALTER DATABASE DATAFILE 10 OFFLINE; RMAN> RESTORE DATAFILE 10; RMAN> RECOVER DATAFILE 10; RMAN>SQL ' ALTER DATABASE DATAFILE 10 ONLINE;

3、打开数据库
  RMAN> ALTER DATABASE OPEN;

四、示例:归档模式下,假设某数据文件丢失,恢复该数据文件。
    我们来模拟一个过程,首先我们创建一份数据库的完全备份,然后在数据库中进行若干操作,之后删除该数据文件来模拟该文件意外丢失,最后我们通过rman来恢复该数据文件。

    还记的我们6章实战备份里写的备份脚本吗,ok,我们先执行该脚本,进行数据库备份。
    E:\oracleScript\backup> database_backup_jssweb.bat
    千万表忘了执行完之后看一下输出的log,一定要确保你所有的操作都是正确执行了的。
Ok,下面连接数据库模拟一些操作。(我懒,以下就少注文字,大家重点看过程就是了。)

C:\Documents and Settings\Administrator>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 7月 18 10:17:44 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> conn jss/jss 已连接。 SQL> create table tmp3(col varchar2(50)); ######创建一个临时表并插入一些数据 表已创建。 SQL> insert into tmp3 values ('test1'); 已创建 1 行。 SQL> insert into tmp3 values ('test2'); 已创建 1 行。 SQL> insert into tmp3 values ('test3'); 已创建 1 行。 SQL> select *from tmp3; COL -------------------------------------------------- test1 test2 test3 SQL> commit; 提交完成。 SQL> conn / as sysdba ####已dba用户连接并关闭数据库 已连接。 SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> host del F:\OraHome1\oradata\jssweb\jweb.ora ######手动删除数据文件 SQL> startup ORACLE 例程已经启动。 Total System Global Area 143727516 bytes Fixed Size 453532 bytes Variable Size 109051904 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes 数据库装载完毕。 ORA-01157: 无法标识/锁定数据文件 10 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 10: 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA' #######看看,启动报错了吧 SQL> select instance_name,status from v$instance; #######看看当前数据库状态,应该是处于mount INSTANCE_NAME STATUS ---------------- ------------ jssweb MOUNTED

OK,下面该RMAN出马了。
SQL>exit
C:\Documents and Settings\Administrator>set oracle_sid=jssweb
C:\Documents and Settings\Administrator>rman target /
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: JSSWEB (DBID=3391142503)

RMAN> restore datafile 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';
####首先修复数据文件。是不是有疑问,为什么不像上面第三节讲的那样先将该数据文件置为脱机,笨啊你,数据库都没打开,脱什么机啊,整个数据库现在都是脱机的。
启动 restore 于 18-7月 -07

正在使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00010恢复到F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:\BACKUP\1AIN4JU5_1_1 tag=TAG20070718T092837 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 18-7月 -07

RMAN> recover datafile 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';
########恢复数据文件
启动 recover 于 18-7月 -07
使用通道 ORA_DISK_1

正在开始介质的恢复
完成介质的恢复

完成 recover 于 18-7月 -07
RMAN> alter database open; ########看起来很顺利,打开数据库看看

数据库已打开

RMAN> host;
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>sqlplus jss/jss ####连到该用户
SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 7月 18 10:33:50 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL> select *from tmp3; ######查询我们备份后创建的表
COL
--------------------------------------------------
test1
test2
test3
#######yeah,成功恢复,没有数据丢失。
SQL>

附个SQL:用来查询数据文件,临时文件与表空间对应及数据文件序号:
select ts.tablespace_name, df.file_name, df.file_id, tf.file_name
from dba_tablespaces ts, dba_data_files df, dba_temp_files tf
where ts.tablespace_name = df.tablespace_name(+)
and ts.tablespace_name = tf.tablespace_name(+)

   
    无数次我对自己说,可以了,足够了,你已经明白了,需要学习的东西还很多,赶紧冲着下个目标去吧。尤幸的是在下一刻,另一个声音在脑海中响起,再加把劲,真的搞明白了,亲手去做个测试吧。

    前面说过的,在非恢复目录(catalog)模式下,rman的备份信息都将存储在目标数据库的控制文件中,所以一旦控制文件丢失,不仅目标数据库崩溃,而且rman备份信息也尽数丢失,这种情况下,如果您有控制文件备份,那还有救(没有备份的话,也并非完全没有希望,如果您对自己的oracle结构非常了解,可以通过写脚本的方式自已重建控制文件。看看oracle是不是考虑的很周全了,很多情况下你认为没救了的时候,也并非完全陷入绝境)。

    本章将模拟归档模式下,控制文件丢失情况下的恢复,在本例中,我们仍然借助上节中建立的备份做恢复,大家应该还记的。
    在应用备份恢复时,必须知道目标数据库的DBID,有多种方式可查,比如我们创建自动备份时,如果没有更改其命名方式,文件名中会包含DBID;或者查看之前的rman备份日志,其中登陆到rman之后会显示出目标数据库的DBID

SQL> select *from jss.tmp3;
COL
--------------------------------------------------
test4
test1
test2
test3

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>host del F:\OraHome1\oradata\jssweb\CONTROL*;

SQL> EXIT;
C:\Documents and Settings\Administrator>rman target /

恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: jssweb(未安装)

RMAN> set dbid 3391142503
#####由于目标数据库控制文件丢失,在此处必须指定dbid
正在执行命令: SET DBID

RMAN> restore controlfile from 'd:\backup\C-3391142503-20070718-04';
########如果打开了自动备份,通过restore controlfile from autobackup也可以
########不过需要注意,因为控制文件没有了,所以rman的配置信息也丢失了,你需要用 set controlfile autobackup format for device type disk to 'd:\backup\%F';命令重设一个自动备份的控制文件所在路径。

启动 restore 于 18-7月 -07

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=F:\ORAHOME1\ORADATA\JSSWEB\CONTROL01.CTL
输出文件名=F:\ORAHOME1\ORADATA\JSSWEB\CONTROL02.CTL
输出文件名=F:\ORAHOME1\ORADATA\JSSWEB\CONTROL03.CTL
完成 restore 于 18-7月 -07

RMAN> sql 'alter database mount';
#######控制文件已恢复,将目标数据库置为加载状态
正在使用目标数据库控制文件替代恢复目录
sql 语句: alter database mount

RMAN> restore database;
########修复数据库
启动 restore 于 18-7月 -07

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=12 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到F:\ORAHOME1\ORADATA\JSSWEB\SYSTEM01.DBF
正将数据文件00002恢复到F:\ORAHOME1\ORADATA\JSSWEB\UNDOTBS01.DBF
正将数据文件00003恢复到F:\ORAHOME1\ORADATA\JSSWEB\DRSYS01.DBF
正将数据文件00004恢复到F:\ORAHOME1\ORADATA\JSSWEB\EXAMPLE01.DBF
正将数据文件00005恢复到F:\ORAHOME1\ORADATA\JSSWEB\INDX01.DBF
正将数据文件00006恢复到F:\ORAHOME1\ORADATA\JSSWEB\ODM01.DBF
正将数据文件00007恢复到F:\ORAHOME1\ORADATA\JSSWEB\TOOLS01.DBF
正将数据文件00008恢复到F:\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF
正将数据文件00009恢复到F:\ORAHOME1\ORADATA\JSSWEB\XDB01.DBF
正将数据文件00010恢复到F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:\BACKUP\1AIN4JU5_1_1 tag=TAG20070718T092837 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 18-7月 -07

RMAN> recover database;
########恢复数据库
启动 recover 于 18-7月 -07
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 7 已作为文件 F:\ORAHOME1\ORADATA\JSSWEB\REDOC02.LOG 存在于
盘上
存档日志线程 1 序列 8 已作为文件 F:\ORAHOME1\ORADATA\JSSWEB\REDOA01.LOG 存在于
盘上
存档日志线程 1 序列 9 已作为文件 F:\ORAHOME1\ORADATA\JSSWEB\REDOB02.LOG 存在于
盘上
通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=5
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:\BACKUP\1BIN4K16_1_1 tag=TAG20070718T093014 params=NULL
通道 ORA_DISK_1: 恢复完成
存档日志文件名 =F:\ORAHOME1\RDBMS\ARC00005.001 线程 =1 序列 =5
存档日志文件名 =F:\ORAHOME1\RDBMS\ARC00006.001 线程 =1 序列 =6
存档日志文件名 =F:\ORAHOME1\ORADATA\JSSWEB\REDOC02.LOG 线程 =1 序列 =7
存档日志文件名 =F:\ORAHOME1\ORADATA\JSSWEB\REDOA01.LOG 线程 =1 序列 =8
存档日志文件名 =F:\ORAHOME1\ORADATA\JSSWEB\REDOB02.LOG 线程 =1 序列 =9
完成介质的恢复
完成 recover 于 18-7月 -07

RMAN> sql 'alter database open resetlogs';
######由于使用备份的控制文件恢复,该文件内不包含目标数据库redologs和数据文件头部scn信息,所以必须通过resetlogs方式open。
sql 语句: alter database open resetlogs

RMAN> host;

Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrator>sqlplus jss/jss
SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 7月 18 17:40:28 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL> select *from tmp3;

COL
--------------------------------------------------
test4
test1
test2
test3
#######成功恢复,数据也没有丢失
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开

C:\Documents and Settings\Administrator>exit
主机命令完成

RMAN>

注意,恢复之后表忘了重建临时表空间。另外,由于resetlogs,建议立即对数据库进行一次完全备份。   
    从业的时间长了,俺感觉现在的技术圈子水也混啊,一个个在岸边上都是十八般武艺,下了水才知道他是不是真的会游。俺这一枪可能会打着不少人,不过对俺自己是个警示:基础一定要抓落,技术一定要过硬,不明确的俺一定要做测试!
  本节演示通过rman创建备份机(由于俺只有一台机器,俺只能在这台机器上模拟,赶紧把你脑袋里那堆污七八糟的东西清除清除,一定要有一个清醒的大脑,要不你一定会看晕的。),参考网址如下:
http://download-west.oracle.com/docs/cd/B19306_01/backup.102/b14191/rcmrecov002.htm#sthref727
http://download-west.oracle.com/docs/cd/B19306_01/backup.102/b14192/recov003.htm#BRBSC50002

初始设定:
    假设两台服务器a和b(虽然我这儿只有一台,您就把它假装是两台吧),服务器A中运行的库sid为mydb,现在将它复制一份到服务器b 。

准备工作:
1、记录下源数据库的DBID,DBID的获取方式上节讲过的。
2、将源数据库的初始化参数文件,拷贝到目标服务器上。
3、确认备份(含控制文件,数据文件,归档文件)有效,并已拷贝至目标服务器(没归档应该也可以,只要能确认数据文件和控制文件是一致备份。)

步骤:
1.首先创建源库的全库备份,(由于只有一台机器,所以备份完之后,通过dbca删除源库,正式情况下务必要等备份库完全建立并正常运行之后才能决定是否要删除源库啊)。前面讲了太多的备份,这里就不列详细的操作步骤了。本例中我创建了一个新库,并在库中建了一个tmp表,插入了4条记录。

2.在目标服务器配置oracle_sid。
C:\Documents and Settings\Administrator>oradim -new -sid mydb
添加一个名为mydb的sid,由于是异机恢复,sid要与源库相同。

3.连接到该sid
C:\Documents and Settings\Administrator>set oracle_sid=mydb
C:\Documents and Settings\Administrator>rman target /

恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
已连接到目标数据库 (未启动)

RMAN> set dbid 2543439098;
正在执行命令: SET DBID
RMAN> startup nomount;

启动失败: ORA-01078: failure in processing system parameters
LRM-00109: N^7(4r?*2NJ}ND<~ 'F:\ORAHOME1\DATABASE\INITMYDB.ORA'

正在尝试在没有参数文件的情况下启动 Oracle 例程...
Oracle 例程已启动

系统全局区域总计 97589952 字节

Fixed Size 453312 字节
Variable Size 46137344 字节
Database Buffers 50331648 字节
Redo Buffers 667648 字节

4.先恢复初始化参数文件
RMAN> restore spfile to pfile 'F:\ORAHOME1\DATABASE\INITMYDB.ORA' from 'd:\backup\mydb\C-2543439098-20070720-02';

启动 restore 于 20-7月 -07

正在使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=9 devtype=DISK
通道 ORA_DISK_1: 已找到的自动备份: d:\backup\mydb\C-2543439098-20070720-02
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 20-7月 -07
然后使用刚刚创建的参数文件重新启动到未加载状态(注意,你最好打开该参数文件,看一下路径是否都确实存在,或者是否正确。)
RMAN> startup force nomount pfile='F:\ORAHOME1\DATABASE\INITMYDB.ORA';

Oracle 例程已启动
系统全局区域总计 135338868 字节

Fixed Size 453492 字节
Variable Size 109051904 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节

5.恢复控制文件并进入到加载状态
RMAN> restore controlfile from 'f:\backup\mydb\C-2543439098-20070720-01';

启动 restore 于 20-7月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=F:\ORAHOME1\ORADATA\MYDB\CONTROL01.CTL
输出文件名=F:\ORAHOME1\ORADATA\MYDB\CONTROL02.CTL
输出文件名=F:\ORAHOME1\ORADATA\MYDB\CONTROL03.CTL
完成 restore 于 20-7月 -07
RMAN> alter database mount;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 07/20/2007 17:44:22
ORA-01990: 打开口令文件'F:\OraHome1\DATABASE\PWDmydb.ORA'时出错
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
#########奇怪,我这里报错了,但再次执行加载,发现提供已经是加载状态了,报错不奇怪,奇怪的是报错了还能进加载,呵呵,不就是缺少密码文件嘛,不管它,一会儿恢复完了再重建,继续进行。

RMAN> alter database mount;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 07/20/2007 17:44:51
ORA-01100: 数据库已安装

6.修复数据库,我这里是源路径修复,如果你要恢复的文件地址与源库地址不同的话,需要通过SET NEWNAME FOR DATAFILE命令来为数据文件重新设定路径。
RMAN> restore database;

启动 restore 于 20-7月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到F:\ORAHOME1\ORADATA\MYDB\SYSTEM01.DBF
正将数据文件00002恢复到F:\ORAHOME1\ORADATA\MYDB\UNDOTBS01.DBF
正将数据文件00003恢复到F:\ORAHOME1\ORADATA\MYDB\DRSYS01.DBF
正将数据文件00004恢复到F:\ORAHOME1\ORADATA\MYDB\INDX01.DBF
正将数据文件00005恢复到F:\ORAHOME1\ORADATA\MYDB\TOOLS01.DBF
正将数据文件00006恢复到F:\ORAHOME1\ORADATA\MYDB\USERS01.DBF
正将数据文件00007恢复到F:\ORAHOME1\ORADATA\MYDB\XDB01.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:\BACKUP\MYDB\03INAL1I_1_1 tag=TAG20070720T162417 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 20-7月 -07

7.恢复数据库
RMAN> recover database;
启动 recover 于 20-7月 -07
使用通道 ORA_DISK_1

正在开始介质的恢复

通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=10
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:\BACKUP\MYDB\04INAL2V_1_1 tag=TAG20070720T162503 params=NULL
通道 ORA_DISK_1: 恢复完成
存档日志文件名 =F:\ORAHOME1\ORADATA\MYDB\ARCHIVE\1_10.DBF 线程 =1 序列 =10
无法找到存档日志
存档日志线程 =1 序列=11
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/20/2007 17:50:36
RMAN-06054: media recovery requesting unknown log: thread 1 scn 143893
报错了,但是没关系,并非严重错误,只是提醒你恢复到一个未知的scn号。如果要避免这个错误,可以在alter database mount之后,通过set until scn或者set until time命令设置恢复到的scn号或时间。

8.然后通过open resetlogs方式打开数据库
RMAN> alter database open resetlogs;

数据库已打开
呵呵,成功打开,这是个好消息,我们需要连接到数据库来验证一下。
C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期五 7月 20 17:55:24 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> conn system/manager
已连接。
SQL> select *from tmp;

COL
--------------------------------------------------
11111
22222
33333
44444

SQL>

    哈哈,成功啦。剩下的工作就简单了,你即可以通过dbca配置数据库,也可以通过orapwd命令重建密码文件等等,那就不在本节的讨论范围了。
    呵呵,另外,表忘了重建临时表空间,以及马上进行全备份。

0
相关文章