数据块坏块的修复

RMAN: blockrecover
没有使用RMAN时,可以使用DBMS_REPAIR包进行修复
DBMS_REPAIR包处理数据库坏块时,会弃用损坏数据块的所有数据
DBMS_REPAIR包处理损坏数据块的方法
1)建立修复表
修复表用于存放表,表分区,或者索引的损坏块信息。在检查包含损坏块的对象之前,必须先建立修复表。
DBMS_REPAIR.ADMIN_TABLES
修复表名必须要带有REPAIR_前缀(大写)
sql>exec dbms_repair.admin_tables('REPAIR_TABLE',-
   >dbms_repair.REPAIR_TABLE,-
   >dbms_repair.create_action)
2)确定损坏块的个数
DBMS_REPART.CHECK_OBJECT
sql>var cc number //变量cc用于存放损坏块的个数
sql>exec dbms_repair.check_object('scott',-
   >'customers',corrupt_count=>:cc)
3)标记损坏块
DBMS_REPAIR.FIX_CORRUPT_BLOCKS //该过程可以将损坏的数据块标记为损坏
sql>var fc number //fc用于存放被修复的数据块个数
sql>exec dbms_repair.fix_corrupt_blocks(-
   >'scott','customers',fix_count=>:fc)
4)跳过损坏块
为了避免扫描损坏的数据块,必须跳过损坏的数据块
DBMS_REPAIR.SKIP_CORRUPT_BLOCKS
sql>exec dbms_repair.skip_corrupt_blocks(-
   >'scott','customers')
select涉及到损坏数据块时,损怀的信息不显示,并且不报错误
DML语句涉及到损坏的数据块时,语句不执行,并且报ORA-01578的错误
5)确定指向损坏块的索引入口
损坏块的索引入口,就是当确定了表的损坏块之后,其索引仍然存在大量指向损坏快的索引入口,该部分索引入口被称为“孤立键值”。如果该值多的话,可以考虑重建索引
威力确定孤立键值的个数,需要建立用于存放孤立键值的孤表
DBMS_REPAIR.ADMIN_TABLES
sql>exec dbms_repair.admin_tables('ORPHAN_TAB',-
   >dbms_repair.orphan_table,dbms_repair.create_action)
孤表建立后,使用过程DUMP_ORPHAN_KEYS,可以将孤立键值信息写入到孤表中
sql>var kc number //kc为存放孤立键值个数的输出变量
sql>exec dbms_repair.dump_orphan_keys('scott','sys_c005010',-
   >orphan_table_name=>:'ORPHAN_TAB',key_count=>:kc)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/464838/viewspace-429845/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/464838/viewspace-429845/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值