用友股份-LE服务支持部技术方案--《oracle数据库I_OBJ2对象坏块处理》建立日期:2013-04-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-00312/6文档控制创建记录审阅人姓名所属部门职位审阅签字发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-04-01赵健V1.03目录oracle数据库I_OBJ2对象坏块处理....................................................................................4一.系统环境..................................................................................................................4二.问题描述................................................................................................................4三.检查分析................................................................................................................4四.解决方法................................................................................................................64oracle数据库I_OBJ2对象坏块处理一.系统环境数据库:ORACLE二.问题描述执行数据库操作时,报数据块损坏错误。ora-01578:oracle数据块损坏(文件号1,块号7871)ora-01110:数据文件1:'XXXXXXX\system01.dbf'”通过以下语句查询,判断损坏块对应的数据库对象为索引I_OBJ2。SELECTtablespace_name,owner,segment_name,segment_typeFROMdba_extentsWHEREfile_id=1and7871betweenblock_idANDblock_id+blocks-1;三.检查分析索引I_OBJ2为ORACLE数据库核心系统表OBJ$的索引5createuniqueindexI_OBJ2onOBJ$(OWNER#,NAME,NAMESPACE,REMOTEOWNER,LINKNAME,SUBNAME)tablespaceSYSTEMpctfree10initrans2maxtrans255storage(initial16Kminextents1maxextentsunlimited);此类对象属于数据库系统核心对象,对此类对象进行rebuild、drop等操作均会报错。ORA-00701:objectnecessaryforwarmstartingdatabasecannotbealtered通过重建索引对象的方法,不能解决此类系统对象损坏的问题。此种情况,如果有数据库的物理备份(RMAN),可以通过修复坏块的方式进行恢复。如只有逻辑备份(exp/imp),则建议对数据库进行重建,即使应用系统运行正常也建议对数据库进行重建,因为系统级对象损坏造成的安全隐患很大,应尽量利用可用备份集及时重建数据库系统。6I_OBJ2对象损坏情况下的数据库导出同样存在问题,分析其原因为,导出操作前exp程序会通过OBJ$表检索本次导出操作要涉及到的对象(表、索引等),在检索过程中的部分sql会用到I_OBJ2索引,因此导致导出操作报错不能正常运行。以下介绍一种方法在部分情况下,能够绕过I_OBJ2索引成功导出存在坏块的数据库用户数据。四.解决方法由于exp异常终止是因为访问到I_OBJ2索引坏块导致,所以可通过调整数据库参数使exp程序前期准备运行的sql语句均走全表扫描方式绕过索引坏块。可修改以下参数使数据库认为索引扫描的运行成本高于全表扫描的成本。Showparameteroptimizer_index_cost_adj;altersystemsetoptimizer_index_cost_adj=10000scope=spfile;重启数据库;此方法要求存在坏块对象仅为索引对象,如OBJ$表存在也存在坏块,此方法不可行。同时,参数optimizer_index_cost_adj调整后,数据库中所有sql会以全表扫描的方式运行,所以此方法不适用于生产环境数据库系统。以上方法可行性及成功率不高,建议,如能够通过其它备份集恢复尽量不采用此方法。参考:http://www.itpub.net/thread-371805-1-1.html