oracle坏块处理方法.docx

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
oracle坏块处理方法

=========================================================== 修复数据库坏块之一 =========================================================== 用ORACLE8i修复在进行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=object #; 6. 必须删除该对象以释放回滚块。 三、检测与修复损坏块的常用方法:(一)使用初始化参数DB_BLOCK_CHECKING与DB_BLOCK_CHECKSUM。 当块改变时,DB_BLOCK_CHECKING对块进行逻辑校验。将防止发生10210 与10211错误。 (二)使用DBMS_REPAIR包,由dbmsrpr.sql与prvtrpr.plb生成该包在特定表中生成损坏块的信息。 1.DBMS_REPAIR.ADMIN_TABLES用于创建与删除存储损坏块的表。其中TABLE_TYPE为:REPAIR_TABLE(表),ORPHAN_TABLE(索引);ACTION为:CREATE_ACTION(创建表),PURGE_ACTION(删除无关数据),DROP_ACTION(删除表)。例: dbms_repair.admin_tables(REPAIR_TABLE,DBMS_REPAIR.REPAIR_TABLE,DBMS_REPAIR.CREATE_ACTION,temp_data); 2.DBMS_REPAIR.CHECK_

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档