从PL / SQL内部执行DDL失败

问题描述 投票:0回答:1

我正在从存储的proc内部执行DDL:

v_sql_stmt := 'ALTER INDEX PK_TEST REBUILD ONLINE';
EXECUTE IMMEDIATE (v_sql_stmt);

所有对象-索引,表(用于建立索引的表)和proc(具有上述两行)属于同一架构。另外,在执行存储的proc时,我登录到相同的模式并以所有者身份执行proc。

但是,每次我运行它时,都会出现错误:ORA-01031:该语句的特权不足

我已经获得了DBA授予用户明确的CREATE ANY TABLE和CREATE ANY INDEX权限的权限,因为PL / SQL可能无法解决通过角色授予的授予。

但是在授予之后,我仍然在这一行中得到错误。从dbms_output跟踪的不同地方可以看到,该过程的其他部分正在执行OK。

任何人都可以提供意见吗?

oracle indexing plsql dynamic-sql execute-immediate
1个回答
0
投票

您必须授予特定索引的ALTER ANY INDEX或ALTER INDEX。

© www.soinside.com 2019 - 2024. All rights reserved.