欢迎光临
我们一直在努力

用oracle8i修复数据库坏块的三种方法_数据库技巧

建站超值云服务器,限时71元/月

  在进行SUN CLUSTER双机切换、意外断电或其它情况下,有时会发生共享盘MOUNT不上的情况,需要使用FSCK对共享盘进行修复。修复完成后,在数据库启动过程中,却又出现”数据块损坏,无法启动数据库”的现象,此时,可以根据不同的数据块损坏类型,检测并修复错误。在此介绍三种使用Oracle8i修复损坏数据块的方法。


  一、数据块损坏,错误代码为ORA-01578


  ORA-1115 I/O ERROR READING BLOCK


  通常后跟ORA-737X错误与操作系统错误(如UNIX中的错误号5)


  产生原因:


  1. 硬件问题(磁盘控制器问题或磁盘问题)


  2. 物理级的数据块损坏(通常由前一原因造成)


  3. 处理巨型文件时,后跟错误代码ORA-7371


  确定故障原因与恢复的方法:


  1. 查看alert.log文件中其它ORA-1115错误的发生情况:


  1) 如果指向不同磁盘的文件,则是磁盘控制器的问题,查看V$DATAFILE,有哪些文件位于该控制器下,转到第二步。


  2) 如果指向相同磁盘的不同文件,则是磁盘的问题,转到第二步。


  3) 如果指向同一个文件,执行以下语句查找文件名:


  SELECT SEGMENT_NAME,SEGMENT_TYPE FROM DBA_EXTENTS WHERE FILE_ID=<文件号> AND <块号> BETWEEN BLOCK_ID


  AND BLOCK_ID+BLOCKS-1;


  其中,文件号与块号是ORA-1115中指出的,如果该查询持续指向某表或索引,则重建它们即可。


  2. 如果文件是SYSTEM表空间,或处于NOARCHIVELOG模式,关闭数据库,转到第四步。


  3. 如果数据库处于ARCHIVELOG模式,仍应关闭数据库,如果不能关闭数据库,则将相应的数据文件脱机:ALTER DATABASE DATAFILE 文件名 OFFLINE;


  4. 试着将数据文件拷贝到别的磁盘。


  5. 如果拷贝失败,则文件将丢失。


  6. STARTUP MOUNT;


  7. 将数据文件重命名为成功拷贝到别的磁盘的文件名:


  ALTER DATABASE RENAME FILE 老路径文件名 TO 新路径文件名;


  8. ALTER DATABASE OPEN;


  9. RECOVER DATAFILE 文件名;


  ALTER DATABASE DATAFILE 文件名 ONLINE;


  二、回滚段需要恢复


  如果回滚段处于NEED RECOVERY状态,需要执行以下步骤进行恢复:


  1. 查看所有联机的表空间与数据文件


  2. 在init.ora文件中加入event = “10015 trace name context forever,level 10″,这将生成一个追踪文件,其中含有事务与回滚的信息。


  3. 关闭并重新打开数据库。


  4. 查看TRACE文件,应有error recovery tx(#,#) object #.TX(#,#),指出事务信息,其中object #与sys.dba_objects中的object_id相同。


  5. 使用以下查询找出正在进行恢复的对象:


  SELECT owner,object_name,object_type,status FROM dba_objects WHERE object_id=

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用oracle8i修复数据库坏块的三种方法_数据库技巧
分享到: 更多 (0)