1. 程式人生 > >十八、dbms_repair(用於檢測,修復在表和索引上的損壞數據塊)

十八、dbms_repair(用於檢測,修復在表和索引上的損壞數據塊)

所有者 key 掃描 dbm 壞塊 索引 數據 urg 損壞

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‘);

十八、dbms_repair(用於檢測,修復在表和索引上的損壞數據塊)