Oracle基础包之DBMS_REPAIR(十八)

1、概述
作用:

用于检测,修复在表和索引上的损坏数据块

2、包的组成
1)、admin_tables
语法:
dbms_repair.admin_tables(table_name in varchar2,table_type in binary_integer,action in binary_integer,tablespace in varchar2 default null);
其中table_name用于指定要处理的表名,必须要指定前缀orphan或repair,table_type指定表类型(orphan或repair_table),
action指定要执行的管理操作(建立表create_action,删除所有行purge_action,删除表drop_action),tablespace用于指定表所在的表空间。
例子:
exec dbms_repair.admin_tables('repair_table',dbms_repair.repair_table,dbms_repair.create_action,'system');
exec dbms_repair.admin_tables('orphan_table',dbms_repair.orphan_table,dbms_repair.create_action,'system');
--上面例子执行第一条语句后,会建立修复表repair_table,并且该修复表用于存放损坏数据块的信息;执行第二条语句后,会建立孤表orphan_table,该表用于存放指向损坏数据块的索引入口信息。
2)、check_object
作用:

用于检查特定对象,并将损坏信息填写到修复表中。

语法:
dbms_repair.check_object(schema_name in varchar2,object_name in varchar2,partition_name in varchar2 default null,object_type in binary_integer default tables_object,
repair_table_name in varchar2 default 'repair_table',flags in binary_integer default null,relative_fno in binary_integer default null,
block_start in binary_integer default null,block_end in binary_integer default null,corrupt_count out binary_integer);
--其中schema_name指定要检查对象的方案名,object_name指定要检查的对象名,partition_name用于指定要检查的分区名,object_type指定要检查对象的类型(table_object或index_object),
--repair_table_name指定要被填写的修复表,flags为将来使用而保留,relative_fno指定相对文件号,block_start指定要检查的起始块号,block_end指定要检查的结束块号,
--corrupt_count用于返回损坏的块个数。
例子:
var corr_count number;
exec dbms_repair.check_object('scott','emp',corrupt_count=>:corr_count);
print corr_count
3)、dump_orphan_keys
作用:

用于报告指向损坏数据块行的索引入口,并且会将相应索引入口的信息插入到孤表中。

语法:
dbms_repair.dump_orphan_keys(schema_name in varchar2,object_name in varchar2,
partition_name in varchar2 default null,object_type in binary_integer default index_object,
repair_table_name in varchar2 default 'repair_table',orphan_table_name in varchar2 default 'orphan_keys_table',
flags in binary_integer default null,key_count out binary_integer);
--其中object_type指定对象类型(index_object),repair_table_name指定修复表名,orphan_table_name指定孤表名,key_count用于返回索引入口个数。
例子:
var key_count number
exec dbms_repair.dump_orphan_keys('scott','pk_emp',orphan_table_name=>'orphan_table',key_count=>:key_count);
print key_count
4)、fix_corrupt_blocks
作用:

修复被损坏的数据块,这些被损坏的数据块是在执行了check_object之后生成的。

语法:
dbms_repair.fix_corrupt_blocks(schema_name in varchar2,object_name in varchar2,partition_name in varchar2 default null,
object_type in binary_integer default table_object,repair_table_name in varchr2 default 'repair_table',
flags in binary_integer default null,fix_count out binary_integer);
--其中object_type指定对象类型(table_object),fix_count返回修复的数据块个数。
例子:
var fix_count number
exec dbms_repair.fix_corrup_block('scott','emp',fix_count=>:fix_count);
print fix_count
5)、rebuild_freelists
作用:

用于重建指定对象的空闲列表

语法:
dbms_repair.rebuild_freelists(schema_name in varchar2,object_name in varchar2,partition_name in varchar2 default null,
object_type in binary_integer default table_object);
--其中object_type指定对象类型(table_object)。
例子:
exec dbms_repair.rebuild_freelists('scott','emp');
6)、skip_corrupt_blocks
作用:

用于指定在扫描对象(表或索引)时跳过损坏块。

语法:
dbms_repair.skip_corrupt_blocks(schema_name in varchar2,object_name in varchar2,object_type in binary_integer default table_object,
flag in binary_integer default skip_flag);
其中object_type指定对象类型(table_object),flags指定是否要跳过损坏块(skip_flao跳过,no_skip_flag不跳过)
例子:
exec dbms_repair.skip_corrupt_blocks('scott','emp');
7)、segment_fix_status
作用:

用于修复位图入口的损坏

语法:
dbms_repair.segment_fix_status(segment_owner in varchar2,segment_name in varchar2,segment_type in binary_integer default table_object,
file_number in binary_integer default null,block_number in binary_integer default null,
status_value in binary_integer default null,partition_name in varchar2 default null);
--其中segment_owner指定段所有者,segment_name指定段名,segment_type指定段类型,file_number指定数据块所在的相对文件号,
--block_number指定数据块号,status_value指定块状态值(1:全块,2:0~25%,3:25%~50%,4:50%~75%,5:75%~100%)
--partition_name指定分区名。
例子:
exe dbms_repair.segment_fix_status('sys','mytab');
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央,流年殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值