微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

执行重建索引查询时出错ORA-29874 和 ORA-29960

如何解决执行重建索引查询时出错ORA-29874 和 ORA-29960

代码

create or replace procedure REBUILD_X_TEXT
IS

 err_code NUMBER;
 err_msg  VARCHAR2(100);
 
Begin
 
EXECUTE IMMEDIATE 'ALTER INDEX TWPROD.X_TEXT_ENTITY rebuild parameters(''REPLACE Metadata sync(every "SYSDATE+15/1440")'')'; 
EXECUTE IMMEDIATE 'ALTER INDEX TWPROD.X_TEXT_ENTITY noparaLLEL'; 

exception
 WHEN OTHERS THEN
     
      err_code := sqlCODE;
      err_msg  := SUBSTR(sqlERRM,1,100);
      DBMS_OUTPUT.put_line('Rebuild index Failed : Error code ' || err_code || ': ' || err_msg);
  

END REBUILD_X_TEXT;

错误

连接数据库PROD
ORA-29874:在执行 ODCIINDEXALTER 例程时出现警告
ORA-29960:第 1 行,
DRG-10595:ALTER INDEX X_TEXT_ENTITY 失败
DRG-50857:drvddl.Resubmit_job 中的 oracle 错误
ORA-27486:权限不足
ORA-06512:在“SYS.REBUILD_X_TEXT”,第 7 行
ORA-06512:在第 2 行
进程退出
数据库 PROD 断开连接。

解决方法

我假设这是关于文本索引(因为它的名称是 X_TEXT_ENTITY)并且该过程是作为 sys 以外的“普通”用户执行的。

在这种情况下,请检查用户是否具有创建表权限,如果没有,则发出它。 我知道您知道如何向用户授予权限,但我仍会发布该声明,以防有人稍后找到答案。

grant create table on USERNAME;

原因是 Oracle 为每个 TEXT 索引创建了一组表,这也是人们在处理文本索引时看到“ORA-27486:权限不足”的最常见原因。

由于修改索引时出现问题,可能需要玩“alter any table”权限,违反数据库安全。如果安全方面是一个问题,您可能需要检查为该索引创建的表(它们的名称以“DR$INDEX_NAME%”开头)并向执行 REBUILD_X_TEXT 的用户发出“alter table”授权

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。