首页 文章

没有收集表统计信息的权限

提问于
浏览
0

我有一个oracle包,其中包含一个创建表的过程,而不是授予它的权限 .

代码与此类似:

Begin
Execute immediate 'create table SU.temp_tbl...';
...
...
Dbms_stats.gather_table_stats('SU', 'TEMP_TBL');
End;

该过程的所有者是具有DBA角色的用户 .

这个角色有

创建任何表权限

分析任何表权限

那么为什么当我运行这个程序时,我在收集表命令上得到了'无权限'的例外,但'create'刚执行好了吗?

什么是解决方案?我是否需要SU用户向DBA授予明确的分析权限?

我正在使用oracle 11g版本 .

谢谢 .

1 回答

  • 3

    特权必须直接授予过程/包的所有者,而不是间接由角色授予 .

    当然 EXECUTE ON owner.name_of_procedure 也是必要的 .

    GATHER_TABLE_STATS Procedure的使用说明

    要调用此过程,您必须是表的所有者,或者您需要ANALYZE ANY权限 .

相关问题