botang 发表于 2020-1-4 09:43:31

模拟MOS售后处理逻辑坏块

select* from REPAIR_TABLE;

BEGIN
DBMS_REPAIR.ADMIN_TABLES (
   table_name => 'REPAIR_TABLE',
   table_type => DBMS_REPAIR.REPAIR_TABLE,
   action => DBMS_REPAIR.CREATE_ACTION,
   tablespace => 'USERS');
END;

select* from REPAIR_TABLE;

select* from ORPHAN_KEY_TABLE;

BEGIN
DBMS_REPAIR.ADMIN_TABLES (
   table_name => 'ORPHAN_KEY_TABLE',
   table_type => DBMS_REPAIR.ORPHAN_TABLE,
   action => DBMS_REPAIR.CREATE_ACTION,
   tablespace => 'USERS');
END;

select* from ORPHAN_KEY_TABLE;

DECLARE
num_corrupt INT;
BEGIN
num_corrupt := 0;
DBMS_REPAIR.CHECK_OBJECT (
   schema_name => 'HR',
   object_name => 'TLOG',
   repair_table_name => 'REPAIR_TABLE',
   corrupt_count => num_corrupt);
dbms_output.put_line( 'Find'|| num_corrupt||' Bolcks.');
END;

select* from REPAIR_TABLE;


DECLARE
num_fix INT;
BEGIN
num_fix := 0;
DBMS_REPAIR.FIX_CORRUPT_BLOCKS (
   schema_name => 'HR',
   object_name => 'TLOG',
   object_type => DBMS_REPAIR.TABLE_OBJECT,
   repair_table_name => 'REPAIR_TABLE',
   fix_count => num_fix);
    dbms_output.put_line( 'Fix'|| num_fix||' Bolcks.');
END;


begin
dbms_repair.skip_corrupt_blocks(schema_name => 'HR',
object_name => 'TLOG');
end;

select* from ORPHAN_KEY_TABLE;

DECLARE
num_orphans INT;
BEGIN
num_orphans := 0;
DBMS_REPAIR.DUMP_ORPHAN_KEYS (
schema_name => 'HR',
object_name => 'ILOG_A',
object_type => DBMS_REPAIR.INDEX_OBJECT,
repair_table_name => 'REPAIR_TABLE',
orphan_table_name => 'ORPHAN_KEY_TABLE',
key_count => num_orphans);
DBMS_OUTPUT.PUT_LINE('orphan key count: ' || TO_CHAR(num_orphans));
END;


DECLARE
num_orphans INT;
BEGIN
num_orphans := 0;
DBMS_REPAIR.DUMP_ORPHAN_KEYS (
schema_name => 'HR',
object_name => 'ILOG_B',
object_type => DBMS_REPAIR.INDEX_OBJECT,
repair_table_name => 'REPAIR_TABLE',
orphan_table_name => 'ORPHAN_KEY_TABLE',
key_count => num_orphans);
DBMS_OUTPUT.PUT_LINE('orphan key count: ' || TO_CHAR(num_orphans));
END;

selectkeyrowid from ORPHAN_KEY_TABLEwhere index_name='ILOG_A';

select* from orphan_key_table where index_name='ILOG_B' and keyrowid||' '='AAAVZYAIgAAAMABAAA'||' ';

select index_name, dump(key) from ORPHAN_KEY_TABLE;

select chr(65) from dual;为了机器排序而存储实数的算法:

例子:

195,2,25,12,30


100**(195-193-0)(2-1)+
100**(195-193-1)(25-1)+
100**(195-193-2)(12-1)+
100**(195-193-3)(30-1)

10000+2400+11+0.29=12411.29



页: [1]
查看完整版本: 模拟MOS售后处理逻辑坏块