oracle 脚本(2)-修复 status 为 unusable 的 index(ORA-01502)

有配置工具使用时, 经常会出现以下错误: ORA-01502: index 'xxx.xxxxx' or partition of such index is in unusable state,解决方法为——以 DBA 登录,并运行以下脚本即可


-- 请以 DBA 权限登录,并执行
-- 将所有 UNUSABLE 状态的 index 修复, rebuild 一下即可
declare
  -- 指向所有 UNUSABLE 状态的 index 的游标
  cursor c is 
    select index_name, owner 
    from dba_indexes 
    where status='UNUSABLE';
  
  owner dba_indexes.owner%type;
  index_name dba_indexes.index_name%type;
begin
  open c;
  loop 
       fetch c into index_name, owner; 
       exit when c%notfound;
       
       execute immediate 'alter index ' || owner || '.' || index_name || ' rebuild';
  end loop;
  close c;
end;


思考1: 为什么正常的操作会导致某个 index 出现 unusable 的情况?

思考2:怎样在不登录 DBA 的情况下解决这个问题?(我试了一下从 user_indexes 表里可以拿到当前用户所有的 index, 但是无法编辑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值