Oracle 恢复测试-控制文件篇(一)

控制文件全部损坏,有trace文件,数据库shutdown abort的情况下。(试验前请先备份数据库)

1、查询控制文件相关信息

  1. SQL> col name format a50
  2. SQL> select * from v$controlfile;
  3. STATUS  NAME                                               IS_ BLOCK_SIZE FILE_SIZE_BLKS
  4. ------- -------------------------------------------------- --- ---------- --------------
  5.         C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL01.CT NO       16384            450
  6.         C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL02.CT NO       16384            450
  7.         C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL03:.CT NO       16384            450

2、backup controlfile to trace

  1. SQL> alter session set tracefile_identifier=kipos;
  2. 会话已更改。
  3. SQL> alter database backup controlfile to trace;
  4. 数据库已更改。
  5. SQL> 

3、模拟破坏控制文件,可以用UltraEdit随便建一个文件,然后另存为控制文件

4、强制执行检查点,系统发现控制文件错误,然后shutdown abort

  1. SQL> alter system checkpoint;
  2. alter system checkpoint
  3. *
  4. 第 1 行出现错误:
  5. ORA-00227: 控制文件中检测到损坏的块: (块 , # 块 )
  6. SQL>  select * from v$controlfile;
  7. ERROR:
  8. ORA-03114: 未连接到 ORALCE

5、查看alter_sid.log,也可以查看相关trace文件

  1. alter_sid.log
  2. Mon Oct 13 15:39:13 2008
  3. Errors in file c:/oracle/product/10.2.0/admin/orcl/bdump/orcl_arc0_2204.trc:
  4. ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
  5. ORA-00202: control file: 'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL01.CTL'
  6. Master background archival failure: 227
  7. Mon Oct 13 15:39:50 2008
  8. Hex dump of (file 0, block 1) in trace file c:/oracle/product/10.2.0/admin/orcl/bdump/orcl_ckpt_2720.trc
  9. Corrupt block relative dba: 0x00000001 (file 0, block 1)
  10. Completely zero block found during control file header read

6、恢复控制文件-启动到mount状态,然后根据trace文件重建控制文件

  1. SQL> startup nomount;
  2. ORACLE 例程已经启动。
  3. Total System Global Area  167772160 bytes
  4. Fixed Size                  1247900 bytes
  5. Variable Size              75498852 bytes
  6. Database Buffers           88080384 bytes
  7. Redo Buffers                2945024 bytes
  8. SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
  9.   2      MAXLOGFILES 16
  10.   3      MAXLOGMEMBERS 3
  11.   4      MAXDATAFILES 100
  12.   5      MAXINSTANCES 8
  13.   6      MAXLOGHISTORY 292
  14.   7  LOGFILE
  15.   8    GROUP 1 (
  16.   9      'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG'
  17.  10    ) SIZE 50M,
  18.  11    GROUP 2 (
  19.  12      'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG'
  20.  13    ) SIZE 50M,
  21.  14    GROUP 3 'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG'  SIZE 50M
  22.  15  -- STANDBY LOGFILE
  23.  16  DATAFILE
  24.  17    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF',
  25.  18    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF',
  26.  19    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF',
  27.  20    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF',
  28.  21    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF',
  29.  22    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/MIS.DBF',
  30.  23    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDO_1',
  31.  24    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/INDEX_TBS.DBF'
  32.  25  CHARACTER SET ZHS16GBK
  33.  26  ;
  34.  控制文件已创建

7、尝试打开数据库,出现ora-01110错误,原因是shutdown abort关闭,需要恢复数据库

 

  1. SQL> alter database open;
  2. alter database open
  3. *
  4. 第 1 行出现错误:
  5. ORA-01113: ?? 1 ??????
  6. ORA-01110: ???? 1: 'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF'

8、恢复并打开数据库

  1. SQL> recover database;
  2. 完成介质恢复。
  3. SQL> alter database open;
  4. 数据库已更改。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值