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)
没有使用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/