天萃荷净
Oracle研究中心学习笔记:分享一篇关于Oracle数据库紧急恢复工具ODU的使用案例,在紧急恢复下对Oracle数据库进行数据抽取的详细过程。
本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客
本文链接地址: 使用ODU恢复9208数据库一例
某客户的9208数据库出现故障,alert的呈现的是如下信息:
Wed Oct 19 08:30:36 2011
Thread 1 advanced to log sequence 3055
Current log# 3 seq# 3055 mem# 0: /oracle/oradata/ncdb/redo03.log
Wed Oct 19 12:46:57 2011
Thread 1 advanced to log sequence 3056
Current log# 1 seq# 3056 mem# 0: /oracle/oradata/ncdb/redo01.log
Wed Oct 19 16:16:23 2011
Errors in file /opt/oracle/admin/ncdb/udump/ncdb_ora_8178.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01115: IO error reading block from file 13 (block # 621195)
ORA-01110: data file 13: '/oracle/oradata/ncdb/NNC_DATA03.dbf'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
Linux-x86_64 Error: 5: Input/output error
Additional information: 621194
ORA-01115: IO error reading block from file 13 (block # 621195)
ORA-01110: data file 13: '/oracle/oradata/ncdb/NNC_DATA03.dbf'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
Linux-x86_64 Error: 5: Input/output error
Additional information: 621194
Wed Oct 19 16:17:23 2011
Errors in file /opt/oracle/admin/ncdb/udump/ncdb_ora_9804.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01115: IO error reading block from file 13 (block # 621195)
ORA-01110: data file 13: '/oracle/oradata/ncdb/NNC_DATA03.dbf'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
Linux-x86_64 Error: 5: Input/output error
Additional information: 621194
ORA-01115: IO error reading block from file 13 (block # 621195)
ORA-01110: data file 13: '/oracle/oradata/ncdb/NNC_DATA03.dbf'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
Linux-x86_64 Error: 5: Input/output error
Additional information: 621194
Wed Oct 19 16:18:42 2011
Errors in file /opt/oracle/admin/ncdb/udump/ncdb_ora_1713.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01115: IO error reading block from file 13 (block # 621195)
ORA-01110: data file 13: '/oracle/oradata/ncdb/NNC_DATA03.dbf'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
Linux-x86_64 Error: 5: Input/output error
Additional information: 621194
ORA-01115: IO error reading block from file 13 (block # 621195)
ORA-01110: data file 13: '/oracle/oradata/ncdb/NNC_DATA03.dbf'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
Linux-x86_64 Error: 5: Input/output error
Additional information: 621194
Wed Oct 19 22:40:35 2011
KCF: write/open error block=0x3b6a online=1
file=2 /oracle/oradata/ncdb/undotbs01.dbf
error=27072 txt: 'Linux-x86_64 Error: 5: Input/output error
Additional information: 15209'
Wed Oct 19 22:40:35 2011
Errors in file /opt/oracle/admin/ncdb/bdump/ncdb_dbw4_8141.trc:
ORA-01242: data file suffered media failure: database in NOARCHIVELOG mode
ORA-01114: IO error writing block to file 2 (block # 15210)
ORA-01110: data file 2: '/oracle/oradata/ncdb/undotbs01.dbf'
ORA-27072: skgfdisp: I/O error
Linux-x86_64 Error: 5: Input/output error
Additional information: 15209
DBW4: terminating instance due to error 1242
Instance terminated by DBW4, pid = 8141
Thu Oct 20 07:21:54 2011
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
SCN scheme 3
Using log_archive_dest parameter default value
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up ORACLE RDBMS Version: 9.2.0.8.0.
System parameters with non-default values:
从其中一个trace,还能找到如下信息:
Corrupt block relative dba: 0x00000001 (file 0, block 1)
Fractured block found during control file header read
Data in bad block -
type: 21 format: 2 rdba: 0x00000001
last change scn: 0xffff.000029de seq: 0x1 flg: 0x04
consistency value in tail: 0x2a141501
check value in block header: 0x25ac, computed block checksum: 0x3ca
spare1: 0x0, spare2: 0x0, spare3: 0x0
***
很明显,file header出现坏块了。通过dbv检查发现有数千个坏块,由于该环境无备份,且虽然是归档模式,但是未启动自动归档,以至于多方人马进行恢复,终以失败而告终。
最后通过老熊的ODU进行了数据的抽取恢复,这里简单的说明一下注意事项:
1. 要注意control.txt的配置,output_format可以设置为txt或dmp两种形式,如果是txt,那么抽取以后的数据我们需要使用sqlldr进行加载,如果是dmp格式 当然就使用imp导入即可(导入时注意字符集);
2. 注意字节序的问题,根据平台设置byte_order
3. 其他参数,也需要根据实际情况进行修改,比如compatible,db_http://www.oracleplus.netblock_checksum
需要注意的是,db_block_checksum设置为true,将会去检查block中的checksum值 这里说明一下的是oracle是根据异或算法将计算的值写入到block的第16,17位置。
相对来说设置为true在速度上有一微小的差异。
通过这次恢复,也感受到了ODU的强悍,大家可以去这里下载 http://www.oracleodu.com/cn/
--------------------------------------ORACLE-DBA----------------------------------------
最权威、专业的Oracle案例资源汇总之【学习笔记】Oracle恢复工具ODU使用笔记 紧急恢复数据库的详细步骤