科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用ORACLE8i修复数据库坏块的三种方法(2)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍三种使用Oracle8i修复损坏数据块的方法并给出了它的产生原因和确定故障原因与恢复的方法。

作者:佚名 来源:动网先锋 2007年8月29日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

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

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章