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

时间:2017-08-06 15:02:23

标签: oracle privileges table-statistics

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

代码与此类似:

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

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

此角色有

  

创建任何表格权限

  

分析任何表格权限

那么为什么当我运行这个过程时,我在gather table命令中得到了'no privileges'的例外, 但是“创造”刚刚执行了吗?

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

我正在使用oracle 11g版本。

感谢。

1 个答案:

答案 0 :(得分:3)

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

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

来自GATHER_TABLE_STATS Procedure

的使用说明
  

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