ITPub博客

首页 > Linux操作系统 > Linux操作系统 > dbms_backup_restore恢复测试!nocatalog,丢失controlfile的恢复办法!

dbms_backup_restore恢复测试!nocatalog,丢失controlfile的恢复办法!

原创 Linux操作系统 作者:warehouse 时间:2007-01-17 00:00:00 0 删除 编辑

C:>rman target /

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 1月 17 18:48:04 2007

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

连接到目标数据库: UTF (DBID=1000919928)

RMAN> backup as compressed backupset full database format 'E:trans_tbsbakutf_
full_%U';

启动 backup 于 17-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=274 devtype=DISK
通道 ORA_DISK_1: 启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=E:ORACLEPRODUCT10.2.0ORADATAUTFSYSTEM01.DBF
输入数据文件 fno=00003 name=E:ORACLEPRODUCT10.2.0ORADATAUTFSYSAUX01.DBF
输入数据文件 fno=00002 name=E:ORACLEPRODUCT10.2.0ORADATAUTFUNDOTBS01.DBF
输入数据文件 fno=00004 name=E:ORACLEPRODUCT10.2.0ORADATAUTFUSERS01.DBF
输入数据文件 fno=00005 name=E:ORACLEPRODUCT10.2.0ORADATAUTFTEST.DBF
输入数据文件 fno=00006 name=E:ORACLEPRODUCT10.2.0ORADATAUTFTEST1.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 17-1月 -07
段句柄=E:TRANS_TBSBAKUTF_FULL_1JI7OIMI_1_1 标记=TAG20070117T184953 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:55
通道 ORA_DISK_1: 启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 17-1月 -07
段句柄=E:TRANS_TBSBAKUTF_FULL_1KI7OIOA_1_1 标记=TAG20070117T184953 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-1月 -07

--========================================================
删除controlfile , datafile , redo
--========================================================

C:>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 1月 17 23:10:46 2007

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

SQL> connect sys as sysdba
输入口令:
已连接。
SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreControlfileTo(cfname=>'E:oracleproduct10.
2.0oradataUTFControl02.ctl');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10 END;
11 /

PL/SQL 过程已成功完成。

SQL> edit
已写入 file afiedt.buf

1 DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreControlfileTo(cfname=>'E:oracleproduct10.
2.0oradataUTFControl03.ctl');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10* END;
SQL> /

PL/SQL 过程已成功完成。

SQL>
SQL> edit
已写入 file afiedt.buf

1 DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreControlfileTo(cfname=>'E:oracleproduct10.
2.0oradataUTFControl01.ctl');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10* END;
SQL> /

PL/SQL 过程已成功完成。

controlfile一旦恢复成功既可以通过dbms_backup_restore来恢复数据文件也可以通过rman来恢复!

SQL> alter database mount;

数据库已更改。

SQL> EDIT
已写入 file afiedt.buf

1* alter database mount
SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFSYSTEM01.DBF');
8 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFSYSAUX01.DBF');
9 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFUNDOTBS01.DBF');
10 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>04,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFUSERS01.DBF');
11 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>05,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFTEST.DBF');
12 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>06,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFTEST1.DBF');
13 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1JI7OIMI_1_1', params=>null);
14 sys.dbms_backup_restore.deviceDeallocate;
15 END;
16 /

PL/SQL 过程已成功完成。

SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成

SQL> recover database using backup controlfile;
ORA-00279: 更改 1007563 (在 01/17/2007 18:49:54 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFARCHIVELOG2007_01_17O1_MF_1_9

7_%U_.ARC
ORA-00280: 更改 1007563 (用于线程 1) 在序列 #97 中


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 1007563 (在 01/17/2007 18:49:54 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFARCHIVELOG2007_01_17O1_MF_1_9

7_%U_.ARC
ORA-00280: 更改 1007563 (用于线程 1) 在序列 #97 中


指定日志: {=suggested | filename | AUTO | CANCEL}

ORA-00308: 无法打开归档日志
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFARCHIVELOG2007_01_17O1_MF_1_

97_%U_.ARC'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项


SQL> alter database open resetlogs;

数据库已更改。

SQL>

--=======================================

恢复spfile and pfile的语法如下

SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreSPFILETO(sfname=>'E:oracleproduct10.2.0d
b_2databaseSPFILEUTF.ORA');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10 END;
11 /

PL/SQL 过程已成功完成。

SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreSPFILETO(Pfname=>'E:oracleproduct10.2.0a
dminUTFpfileINIT2.ORA');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10 END;
11 /

PL/SQL 过程已成功完成。

SQL>


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/19602/viewspace-61725/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-07

  • 博文量
    717
  • 访问量
    5144947