Oraclecorruptblock(坏块)详解(7)

电脑杂谈  发布时间:2019-08-02 14:08:57  来源:网络整理

object_name => 'DMM',

corrupt_count => cc);

logical函数_matlab的logical_logical dump

DBMS_OUTPUT.put_line ( TO_CHAR (cc));

END;

正常情况下输入为0。 如果有坏块,可以在创建的REPAIR_TABLE中查看块损坏信息:

/* Formatted on 2009-12-17 13:18:19 (QP5v5.115.810.9015) */

SELECT object_name,

relative_file_id,

block_id,

marked_corrupt,

corrupt_description,

repair_description,

CHECK_TIMESTAMP

FROM repair_table;

注意:在8i下,check_object只会检查坏块,MARKED_CORRUPT为false,故需要进行 定位坏块(fix_corrupt_blocks) ,修改MARKED_CORRUPT为true,同时更新CHECK_TIMESTAMP。

9i以后经过check_object,MARKED_CORRUPT的值已经标识为TRUE了。所以可以直接进行第四步了。

5.4 .定位坏块:dbms_repair.fix_corrupt_blocks

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

/* Formatted on 2009-12-17 13:29:01 (QP5v5.115.810.9015) */

DECLARE

cc NUMBER;

BEGIN

DBMS_REPAIR.fix_corrupt_blocks (schema_name => 'SYS',

object_name => 'DMM',

fix_count => cc);

DBMS_OUTPUT.put_line (a => TO_CHAR (cc));

END;

5.5 .跳过坏块

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

SQL> select count(*) from SYS.DMM;

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

ORA-01110: 数据文件 14: 'D: /BLOCK.DBF'

还是会得到错误信息。 这里需要用skip_corrupt_blocks来跳过坏块:

/* Formatted on 2009-12-17 13:30:17 (QP5v5.115.810.9015) */

exec dbms_repair.admin_tables('orphan_table',dbms_repair.orphan_table,dbms_repair.create_action,'system')。exec dbms_aqadm.grant_queue_privilege('dequeue','sys.sys$service_metrics', )。例子:exec dbms_repair.skip_corrupt_blocks('scott','emp')。

SQL> select count(*) from SYS.DMM;

COUNT(*)

----------

12850

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

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

/* Formatted on 2009-12-17 13:34:55(QP5 v5.115.810.9015) */

DECLARE

cc NUMBER;

BEGIN

DBMS_REPAIR.dump_orphan_keys (schema_name => 'SYS',

object_name => 'INDX_DMM',

object_type => 2,

repair_table_name => 'REPAIR_TABLE',

orphan_table_name => 'ORPHAN_TABLE',

key_count => CC);

END;

通过以下命令可以知道丢失行的信息:

SQL> SELECT * FROM ORPHAN_TABLE;

我们根据这个结果来考虑是否需要rebuild index.

5.7重建freelist:rebuild_freelists

/* Formatted on 2009-12-17 13:37:57(QP5 v5.115.810.9015) */

exec dbms_repair.admin_tables('orphan_table',dbms_repair.orphan_table,dbms_repair.create_action,'system')。exec dbms_aqadm.grant_queue_privilege('dequeue','sys.sys$service_metrics', )。exec dbms_repair.dump_orphan_keys('scott','pk_emp',orphan_table_name=>'orphan_table',key_count=>:key_count)。

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

QQ: 492913789

Email: ahdba@qq.com

Blog:

网上资源:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-117663-7.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 幕之内潮
      幕之内潮

      早都预料该公司要出事

    • 蔡琳
      蔡琳

      我反正不行要不给大家个毒誓

    热点图片
    拼命载入中...