【问题标题】:No privileges to gather table stats没有权限收集表统计信息
【发布时间】:2018-01-13 22:56:42
【问题描述】:

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

代码与此类似:

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

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

这个角色有

创建任何表权限

分析任何表权限

那么为什么当我运行这个过程时,我在收集表命令上得到一个“无特权”的异常, 但是“创建”刚刚执行好吗?

解决办法是什么?是否需要 SU 用户明确授予 DBA 分析权限?

我使用的是 oracle 11g 版本。

谢谢。

【问题讨论】:

    标签: oracle privileges table-statistics


    【解决方案1】:

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

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

    来自GATHER_TABLE_STATS Procedure的使用说明

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      相关资源
      最近更新 更多