WEB开发网
开发学院数据库Oracle 如何使用DBMS_REPAIR检测和修补数据坏块 阅读

如何使用DBMS_REPAIR检测和修补数据坏块

 2008-11-10 12:58:38 来源:WEB开发网   
核心提示: 在orphan_key_table 中的Index entry意味着该index应该重建,以保证一个table的指针和它的index指针返回同样的结果集合,如何使用DBMS_REPAIR检测和修补数据坏块(8),六、使用DBMS_REPAIR.SKIP_CORRUPT_BLOCKS来跳过坏

在orphan_key_table 中的Index entry意味着该index应该重建,以保证一个table的指针和它的index指针返回同样的结果集合。

六、使用DBMS_REPAIR.SKIP_CORRUPT_BLOCKS来跳过坏块

SKIP_CORRUPT_BLOCKS用来决定在对指定object的index和table做搜索时是否跳过坏块。

如果index和table不同步,那么一个‘SET TRANSACTION READ ONLY'的transaction可能会出现不一致的情况,例如一个查询仅仅指向index,而它的子查询却同时指向index和table。 如果table的block已经被标识为坏了,那么这两个查询将会返回不同的结果。

建议:如果SKIP_CORRUPT_BLOCKS被enable,那么必须重建orphan_key_table中确定的所有indexes(或所有与该object相关的indexes,如果在DUMP_ORPHAN_KEYS被忽略的情况下)。

  SQL> @skipCorruptBlocks
  SQL> declare
  2 begin
  3 dbms_repair.skip_corrupt_blocks (
  4 schema_name => 'SYSTEM',
  5 object_name => 'T1',
  6 object_type => dbms_repair.table_object,
  7 flags => dbms_repair.skip_flag);
  8 end;
  9 /
  PL/SQL procedure successfully completed.

下列查询显示跳过坏块已经enable。

  SQL> select table_name, skip_corrupt from dba_tables
  2 where table_name = 'T1';
  TABLE_NAME SKIP_COR
  ------------------------------ --------
  T1 ENABLED

坏块中的记录被跳过后,全表扫描不再显示错误。

  SQL> select * from system.t1;
  COL1 COL2
  --------------------------------------------
  4 dddd
  5 eeee

上一页  3 4 5 6 7 8 9  下一页

Tags:如何 使用 DBMS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接