难题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>