当oracle 数据库非正常关闭时,可能面临无法启动或无法登陆的问题,其中部分原因是数据库文件损坏所致,如果数据库没有使用备份机制或运行于非归档模式下时,系统数据文件的损坏往往难以完全恢复,本文就经常遇到数据库数据文件损坏,总结了此类问题处理的常用方法。 一、检查数据文件、控制文件、日志文件是否有损坏。 1. 查看文件$ORACLE_BASE/admin/dbname/bdump/alert_orasid.log 中是否有文件损坏信息,类似如下信息: ORA-01578: ORACLE data block corrupted (file # 7, block #
;) ORA-01110: data file ;: '/oracle1/oradata/V920/oradata/V816/users01.dbf' 通过 file#和找到损坏数据文件和文件类型,然后通过损坏的文件类型确认采用的恢复策略。 2. 可以使用dbv 检查数据文件(不适用于日志文件),应注意使用dbv 检查数据文件时应对损坏数据库文件进行备份,dbv 会修改数据文件中部分内容。被检查的数据文件应为脱机状态。dbv 命令含义: 关键字 描述 (Default) ---------------------------------------------------- FILE 待检测文件名 (NONE) START 起始文件块 (First Block of File) END 终止文件块 (Last Block of File) BLOCKSIZE 逻辑块大小 (8192) LOGFILE 输出日志文件 (NONE) FEEDBACK 显示进度 (0) PARFILE 参数文件 (NONE) USERID 用户名/密码 (NONE) SEGMENT_ID Segment ID (tsn.relfile.block) (NONE) HIGH_SCN Highest Block SCN To Verify (NONE) (scn_wrap.scn_base OR scn) 常用到的参数有:FILE、BLOCKSIZE。例如: D:\oracle\product\10.2.0\oradata\ksyjzh>dbv file=SYSTEM01.DBF blocksize=8192 DBVERIFY: Release 10.2.0.4.0 - Production on Wed Sep 9 14:56:24 2009 Copyright (c) 1982, 2007, Oracle. All rights reserved. DBVERIFY - Verification starting : FILE = system01.dbf DBV-00200: Block, DBA 4255842, already marked corrupt DBVERIFY - Verification complete Total Pages Examined : 67840 Total Pages Processed (Data) : 40678 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 8325 Total Pages Failing (Index): 0 Total Pages Processed (Other): 4189 Total Pages Processed (Seg)...