技术开发 频道

只有rman的备份文件恢复过程

难题2. 控制文件恢复

这个又怎么恢复呢? 用rman的自动备份控制文件的rman备份吗? 是的没错,只有从rman备份文件中提取出来的controlfile才能使用rman备份文件恢复datafile的.

那么这里有来种办法来实现从rman备份文件中提取出controlfie了.

方法1.

RMAN>restore controlfile from ‘/…备份文件..’;

恢复的控制文件将放在$ORACLE_HOME/dbs/cncontrl.dbf不过这个方法有时恢复的控制文件中记录的dbname与实际不一致.

方法2: 利用dbms_backup_restore提取controlfile

步骤:

[oracle@foway dbs]$sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 18 21:38:21 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba

Connected.

由于在刚才使用rman时执行了startup nomount,所以这里是connected,下面我们到nomount状态

SQL> startup force nomount

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 62916852 bytes

Database Buffers 100663296 bytes

Redo Buffers 2973696 bytes

SQL>DECLARE

2devtype varchar2(256);

3done boolean;

4BEGIN

5devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');

6sys.dbms_backup_restore.restoreSetDatafile;

7sys.dbms_backup_restore.restoreControlfileTo(cfname=>'/opt/oracle/oradata/orcl/control01.ctl');

8sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/opt/oracle/flash_recovery_area/ORCL/backupset/2008_07_18/o1_mf_ncsnf_TAG20080718T203240_482fls2h_.bkp',params=>null);

9 sys.dbms_backup_restore.deviceDeallocate;

10 end;

11/

PL/SQL procedure successfully completed.

下面验证control01.ctl是否恢复:

[oracle@foway dbs]$ ls /opt/oracle/oradata/orcl/

control01.ctl

[oracle@foway dbs]$

看到了control01.ctl 恭喜你:难题2 解决了.

于是我们可以启动数据库到mount状态了.

[oracle@foway dbs]$sqlplus /nolog

SQL*Plus: Release 10.2.0.4 - Production on Fri Jul 18 21:45:32 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba

Connected.

SQL> startup force mount

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 62916852 bytes

Database Buffers 100663296 bytes

Redo Buffers 2973696 bytes

ORA-00205: error in identifying control file, check alert log for more info

我们已经恢复了控制文件了,怎么还是有错误呢,其实不用担心,看看spfile中的记录先

SQL> show parameter control_files

 NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

control_files string /opt/oracle/oradata/orcl/contr

ol01.ctl, /opt/oracle/oradata/

orcl/control02.ctl, /opt/oracl

e/oradata/orcl/control03.ctl

SQL>
 

0
相关文章