首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

软件资讯设计 工具 系统 开发 安全 办公 陶吧 IT教育 Vista频道 | 下载中心酷我音乐盒 腾讯QQ
天极网 > 开发频道>用ORACLE8i修复数据库坏块的三种方法

用ORACLE8i修复数据库坏块的三种方法

2007-04-09 07:00作者:liulj出处:论坛整理责任编辑:卢林嘉

  二、回滚段需要恢复

  如果回滚段处于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= ;

  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_OBJECT检查表、索引、分区中的块损坏。其中OBJECT_TYPE为:TABLE_OBJECT(表),INDEX_OBJECT(索引), REPAIR_TABLE_NAME(用于存储损坏块信息的表)。例:

  dbms_repair.check_object('ORATRAIN','LOCATIONS',corrupt_count=>:cc);

  3.使用以下语句查询块损坏信息:

  SELECT object_name, relative_file_no, block_id, marked_corrupt, corrupt_description, repair_description FROM repair_table;

  4.将块标志为损坏的:dbms_repair.fix_corrupt_blocks('ORATRAIN','LOCATIONS',fix_count=>:fc);

  5.跳过损坏块:dbms_repair.skip_corrupt_blocks('ORATRAIN', 'LOCATIONS');

  其中OBJECT_TYPE为 :TABLE_OBJECT(表),CLUSTER_OBJECT(索引)。

  6.使用REBUILD_FREELISTS重建损坏的空闲列表:DBMS_REPAIR.rebuild_freelists

  7.使用以下方法查找指向损坏块的索引:

  (1) 创建存放指向坏块索引的表

  (2) dbms_repair.dump_orphan_keys('ORATRAIN','LOC_PK',

  orphan_table_name=>'ORPHAN_TAB1',key_count=>:kc);

  (3) SELECT index_name, count(*) FROM orphan_key_table WHERE table_name = 'CLASSES' GROUP BY index_name;

  (4) 重建具有orphan keys的索引

  限制:不能分析Index-organized tables 与 LOB indexes,DUMP_ORPHAN_KEYS不能对bitmap与 function-based indexes操作。

  (三)使用SQL命令ANALYZE TABLE|INDEX … VALIDATE STRUCTURE

  utlvalid.sql.创建含有损坏块信息的INVALID_ROWS表,ANALYZE TABLE VALIDATE STRUCTURE CASCADE同时校验表与索引。

  (四)使用DBVERIFY

  DBVERIFY是一个外部工具,所以对数据库影响很小。可用于在将备份文件拷贝回原位置前检验备份文件的完好性,并定位数据块损坏。命令如下:

  dbv /opt/oracle/db02/oradata/data01.dbf start=1 end=500 logfile=dbv.log


  阅读关于 ORACLE 数据库 修复 的全部文章

关注此文的读者还看过:

返回开发频道首页

共2页。 上一页12

软件频道最新更新

热点推荐

IT嘉年华

编辑推荐

软件下载

热门
推荐

网友关注

软件
资料
游戏

装机推荐

文章排行

本周
本月
最新更新
天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络