扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共2页)
在进行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) 如果指向同一个文件,执行以下语句查找文件名:
|
其中,文件号与块号是ORA-1115中指出的,如果该查询持续指向某表或索引,则重建它们即可。
2.如果文件是SYSTEM表空间,或处于NOARCHIVELOG模式,关闭数据库,转到第四步。
3.如果数据库处于ARCHIVELOG模式,仍应关闭数据库,如果不能关闭数据库,则将相应的数据文件脱机:ALTER DATABASE DATAFILE '文件名' OFFLINE;
4.试着将数据文件拷贝到别的磁盘。
5.如果拷贝失败,则文件将丢失。
6.STARTUP MOUNT;
7.将数据文件重命名为成功拷贝到别的磁盘的文件名:
|
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.使用以下查询找出正在进行恢复的对象:
|
6.必须删除该对象以释放回滚块。
三、检测与修复损坏块的常用方法
(一)使用初始化参数DB_BLOCK_CHECKING与DB_BLOCK_CHECKSUM。
当块改变时,DB_BLOCK_CHECKING对块进行逻辑校验。将防止发生10210 与10211错误。
(二)使用DBMS_REPAIR包,由dbmsrpr.sql与prvtrpr.plb生成该包在特定表中生成损坏块的信息。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者