Oracle 脚本:修复 status 为 unusable 的 index
Oracle 脚本:修复 status 为 unusable 的 index
有配置工具使用时, 经常会出现以下错误: 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, 但是无法编辑)
评论暂时关闭