Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248851
  • 博文数量: 115
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 930
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-30 05:27
文章分类

全部博文(115)

文章存档

2011年(10)

2010年(21)

2009年(19)

2008年(65)

我的朋友

分类: Oracle

2010-03-14 12:11:05

案例场景:数据库服务器(Oracle,非归档模式,软件安装在本地,控制文件存放在本地,其他文件都在磁盘阵列)需要重做OS,于是将Oracle相关的文件全部冷备到其他机器。在拷贝数据文件的时候,system01.dbf出现一些问题,无法拷贝,于是再次打开数据库(在这之前,控制文件已经)检查了一下所有文件的状态,并没有查到什么原因导致system01.dbf无法拷贝。当时的决定是:放弃冷备,OS重装后直接重装Oracle,然后导入数据恢复。比较幸运的是,OS重装后,磁盘阵列的卷信息居然都自动恢复了,将备份好的软件解tar,将控制文件也拷回,打开数据库时提示:控制文件比数据文件旧,无法打开。
恢复过程:
1、尝试使用旧的控制文件去恢复数据文件到一个比较旧的状态:
SQL> recover database using BACKUP CONTROLFILE;
ORA-00279: ?? 2734997 (? 03/09/2010 15:53:32 ??) ???? 1 ????
ORA-00289: ??: /opt/app/oracle/product/10.2.0/dbs/arch1_6_709571253.dbf
ORA-00280: ?? 2734997 (???? 1) ??? #6 ?


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> recover database using BACKUP CONTROLFILE;
ORA-00279: ?? 2734997 (? 03/09/2010 15:53:32 ??) ???? 1 ????
ORA-00289: ??: /opt/app/oracle/product/10.2.0/dbs/arch1_6_709571253.dbf
ORA-00280: ?? 2734997 (???? 1) ??? #6 ?


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01113: ?? 1 ??????
ORA-01110: ???? 1: '/usr3/oradata1/sysdata/system01.dbf'
2、重建控制文件:
SQL>alter database backup controlfile to trace;
在udump目录下找到相应的trc文件,先删除旧的控制文件,然后使用第二段重建控制文件的语句重建控制文件:
SQL> CREATE CONTROLFILE REUSE DATABASE "CRNOPHQ" RESETLOGS  NOARCHIVELOG
  2  MAXLOGFILES 16
  3  MAXLOGMEMBERS 3
  4  MAXDATAFILES 1024
  5  MAXINSTANCES 8
  6  MAXLOGHISTORY 292
  7  LOGFILE
  8  GROUP 1 (
  9  '/usr3/redo_log/redo01a.log',
 10  '/usr3/redo_log/redo01b.log'
 11  ) SIZE 1024M,
 12  GROUP 2 (
 13  '/usr3/redo_log/redo02a.log',
 14  '/usr3/redo_log/redo02b.log'
 15  ) SIZE 1024M,
 16  GROUP 3 (
 17  '/usr3/redo_log/redo03a.log',
 18  '/usr3/redo_log/redo03b.log'
 19  ) SIZE 1024M
 20  -- STANDBY LOGFILE
 21  DATAFILE
 22  '/usr3/oradata1/sysdata/system01.dbf',
 23  '/usr3/oradata1/sysdata/undotbs01.dbf',
 24  '/usr3/oradata1/sysdata/sysaux01.dbf',
 25  '/usr3/oradata1/sysdata/users01.dbf',
 26  '/usr3/oradata1/sysdata/sysaux02.dbf',
 27  '/usr3/oradata1/sysdata/system02.dbf',
 28  '/usr3/oradata1/sysdata/undotbs02.dbf',
 29  '/usr3/oradata1/sysdata/undotbs03.dbf',
 30  '/usr3/oradata1/sysdata/undotbs04.dbf',
 31  '/usr3/oradata1/sysdata/users02.dbf',
 32  '/usr3/oradata1/data/dbs_d_crnophq01.dbf',
 33  '/usr3/oradata1/data/dbs_i_crnophq01.dbf',
 34  '/usr3/oradata3/data/dbs_d_perf01.dbf',
 35  '/usr3/oradata3/data/dbs_d_perf02.dbf',
 36  '/usr3/oradata3/data/dbs_d_perf03.dbf',
 37  '/usr3/oradata3/data/dbs_d_perf04.dbf',
 38  '/usr3/oradata3/data/dbs_d_perf05.dbf',
 39  '/usr3/oradata2/data/dbs_i_perf01.dbf',
 40  '/usr3/oradata2/data/dbs_i_perf02.dbf',
 41  '/usr3/oradata2/data/dbs_d_ne01.dbf',
 42  '/usr3/oradata2/data/dbs_d_ne02.dbf',
 43  '/usr3/oradata2/data/dbs_d_ne03.dbf',
 44  '/usr3/oradata2/data/dbs_d_ne04.dbf',
 45  '/usr3/oradata2/data/dbs_i_ne01.dbf',
 46  '/usr3/oradata2/data/dbs_i_ne02.dbf',
 47  '/usr3/oradata1/data/dbs_d_work01.dbf',
 48  '/usr3/oradata1/data/dbs_i_work01.dbf',
 49  '/usr3/oradata1/data/dbs_d_rnopoa01.dbf',
 50  '/usr3/oradata1/data/dbs_i_rnopoa01.dbf',
 51  '/usr3/oradata2/data/dbs_d_spatial01.dbf',
 52  '/usr3/oradata2/data/dbs_i_spatial01.dbf',
 53  '/usr3/oradata2/data/dbs_d_spatialmap01.dbf',
 54  '/usr3/oradata2/data/dbs_i_spatialmap01.dbf'
 55  CHARACTER SET ZHS16GBK
 56  ;

控制文件已创建。

SQL> alter database open resetlogs;

数据库已更改。

SQL> select status,instance_name from v$instance;

STATUS       INSTANCE_NAME
------------ ----------------
OPEN         CRNOPHQ
至此,恢复完成。
阅读(704) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~