设为首页 加入收藏

TOP

使用dbms_repair修复块损坏的具体示例(二)
2014-11-24 01:03:19 来源: 作者: 【 】 浏览:14
Tags:使用 dbms_repair 修复 损坏 具体 示例
标识为TRUE了。

所以可以直接进行第四步了。

按照oracle文档上的说法,在8i下,check_object只会检查坏块,MARKED_CORRUPT为false

需要使用第3步,fix_corrupt_blocks定位 ,修改MARKED_CORRUPT为true,同时更新CHECK_TIMESTAMP。

这里我们经过实验,确认在9i下跳过第3步,是完全可行的。

那么8i是否需要执行第三步,我没有实验过,但推测应该是不可以跳过的。


3.定位坏块:dbms_repair.fix_corrupt_blocks


只有将坏块信息写入定义的REPAIR_TABLE后,才能定位坏块。

declare

cc number;

begin

dbms_repair.fix_corrupt_blocks(schema_name => DLINGER,object_name => TEST,fix_count => cc);

dbms_output.put_line(a => to_char(cc));

end;


4.跳过坏块:

我们前面虽然定位了坏块,但是,如果我们访问table:

SQL> select count(*) from dlinger.dbblock;


select count(*) from dlinger.dbblock


ORA-01578: ORACLE 数据块损坏(文件号14,块号154)

ORA-01110: 数据文件 14: D:ORACLEORADATAORACLE9IBLOCK.DBF


还是会得到错误信息。

这里需要用skip_corrupt_blocks来跳过坏块:


SQL> exec dbms_repair.skip_corrupt_blocks(schema_name => DLINGER,object_name => TEST,flags => 1);


PL/SQL procedure successfully completed


SQL> select count(*) from dlinger.test;


COUNT(*)

----------

12850

丢失了12896-12850=46行数据。


5.处理index上的无效键值;dump_orphan_keys


declare

cc number;

begin

dbms_repair.dump_orphan_keys(schema_name => DLINGER,object_name => I_TEST,object_type => 2,

repair_table_name => REPAIR_TABLE,orphan_table_name => ORPHAN_TABLE,key_count => CC);

end;

/


SQL> SELECT * FROM ORPHAN_TABLE;


SCHEMA_NAME INDEX_NAME IPART_NAME INDEX_ID TABLE_NAME PART_NAME TABLE_ID KEYROWID KEY DUMP_TIMESTAMP

-------------- ----------- ------------ ---------- ----------- ---------- ---------- ---------------------- ------------------------------------------ --------------

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADA0A *BAAAAAAMTE9HTU5SQ19HU0lJ/g 2004-8-25 22:1

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADAsA *BAAAAAAMTE9HTU5SQ19HVExP/g 2004-8-25 22:1

..............................................


DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADB0A *BAAAAAAPTE9HTU5SX0xPQkZSQUck/g 2004-8-25 22:1

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADBYA *BAAAAAAMTE9HTU5SX1RZUEUk/g 2004-8-25 22:1

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADAQA *BAAAAAALTE9HTU5SX1VJRCT+ 2004-8-25 22:1

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADAoA *BAAAAAAMTE9HTU5SX1VTRVIk/g 2004-8-25 22:1

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇走进Affinity之一:VMware开源数.. 下一篇mongodb for java使用中的小问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: