对每个索引都要进行dump_orphan_keys。
SQL> select index_name, count(*) from orphan_key_table
2 group by index_name;
INDEX_NAME COUNT(*)
------------------------------ ----------
ID_INX 491
NAME_INX 491
5)使用skip_corrupt_blocks,使查询或者DML时跳过坏块
SQL> declare
2 begin
3 dbms_repair.skip_corrupt_blocks (
4 schema_name => 'SYS',
5 object_name => 'TEST',
6 object_type => dbms_repair.table_object,
7 flags => dbms_repair.skip_flag);
8 end;
9 /
PL/SQL 过程已成功完成。
SQL> select table_name, skip_corrupt from dba_tables
2 where table_name = 'TEST';
TABLE_NAME SKIP_COR
------------------------------ --------
TEST ENABLED
6)使用dbms_repair.rebuild_freelists重建freelists,使得该块不再被放到freelists,当中,也就是该块将不会再被使用。
SQL> declare
2 begin
3 dbms_repair.rebuild_freelists (
4 schema_name => 'SYS',
5 object_name => 'TEST',
6 object_type => dbms_repair.table_object);
7 end;
8 /
declare
*
第 1 行出现错误:
ORA-10614: Operation not allowed on this segment
ORA-06512: 在 "SYS.DBMS_REPAIR", line 400
ORA-06512: 在 line 3
不过我们可以看到,对于SYS用户下面的对象好像不能进行此操作。
4、重建索引
SQL> select count(id) from test;
COUNT(ID)
----------
19998
SQL> select count(name) from test;
COUNT(NAME)
-----------
19998
SQL> select count(*) from test;
COUNT(*)
----------
19507
我们可以看到上面的三个查询,对于第1和第2个使用索引进行查询和不使用索引进行查询的结果是不一样的。下面我们使用rebuild试试。
SQL> alter index id_inx rebuild;
索引已更改。
SQL> alter index name_inx rebuild;
索引已更改。
SQL> select count(id) from test;
COUNT(ID)
----------
19998
SQL> select count(name) from test;
COUNT(NAME)
-----------
19998
SQL> select count(*) from test;
COUNT(*)
----------
19507
可以是不能通过rebuild来重建索引的。只能通过DROP然后再CREATE。
SQL> drop index id_inx;
索引已删除。
SQL> drop index name_inx;
索引已删除。
SQL> create index id_inx on test(id);
索引已创建。
SQL> create index name_inx on test(name);
索引已创建。
SQL> select count(id) from test;
COUNT(ID)
----------
19507
SQL> select count(name) from test;
COUNT(NAME)
-----------
19507
SQL> select count(*) from test;
COUNT(*)
----------
19507
到此该表已经可以正常使用了,但同时也丢失了一些数据,所以在使用dbms_repair进行恢复的时候要充分考虑到数据的重要性和恢复的后果。同时也应该考虑是否有其它别的恢复方法,不然贸贸然的行事最后可能得不偿失。
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|