发布网友 发布时间:2022-04-11 04:47
共2个回答
懂视网 时间:2022-04-11 09:08
如果在出现问题的对象的数据库活动能停下来,则直接简单地执行如下语句即可:
connect
/
as
sysdba
select
dbms_repair.online_index_clean(<problem
index
object_id>)
from
dual;
exit
2)使用PL/SQL block调用dbms_repair包来清理
如果在出现问题的对象的数据库活动不能停下来,则如下的PL/SQL block来处理
注:加上dbms_repair.lock_wait表示不是立刻清理,需要不断的寻找资源锁,直到抢到为止
declare
isClean boolean;
begin
isClean :=
FALSE
;
while isClean=
FALSE
loop
isClean := dbms_repair.online_index_clean(dbms_repair.all_index_id,
dbms_repair.lock_wait);
dbms_lock.sleep(2);
end
loop;
exception
when
others
then
RAISE;
end
;
/
--原文:http://blog.itpub.net/28218939/viewspace-2638333/
1)使用包dbms_repair包来清理
如果在出现问题的对象的数据库活动能停下来,则直接简单地执行如下语句即可:
1 2 3 |
connect / as sysdba
select dbms_repair.online_index_clean(<problem index object_id>) from dual;
exit
|
2)使用PL/SQL block调用dbms_repair包来清理
如果在出现问题的对象的数据库活动不能停下来,则如下的PL/SQL block来处理
注:加上dbms_repair.lock_wait表示不是立刻清理,需要不断的寻找资源锁,直到抢到为止
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
declare
isClean boolean;
begin
isClean := FALSE ;
while isClean= FALSE loop
isClean := dbms_repair.online_index_clean(dbms_repair.all_index_id,
dbms_repair.lock_wait);
dbms_lock.sleep(2);
end loop;
exception
when others then
RAISE;
end
热心网友
时间:2022-04-11 06:16
肯定是你的数据库里存在重复数据,先把重复数据处理掉,没用的话可以先直接删了,然后再创建索引。
|