无权收集 table 统计数据
No privileges to gather table stats
我有一个 oracle 程序包,其中包含创建 table 的过程,然后它授予了权限。
代码与此类似:
Begin
Execute immediate 'create table SU.temp_tbl...';
...
...
Dbms_stats.gather_table_stats('SU', 'TEMP_TBL');
End;
过程的所有者是具有 DBA 角色的用户。
这个角色有
create any table privilege
比如
Analyze any table privilege
那么为什么当我在 运行 这个过程中,我在 gather table 命令上得到 'no privileges' 的异常,
但是 'create' 刚刚执行好了?
解决方案是什么?我是否需要 SU 用户明确授予 DBA 分析权限?
我用的是oracle 11g版本
谢谢。
权限必须直接授予 procedure/package 的所有者,而不是通过角色间接授予。
当然EXECUTE ON owner.name_of_procedure
也是必须的
来自GATHER_TABLE_STATS Procedure
的使用说明
To invoke this procedure you must be owner of the table, or you need the ANALYZE ANY privilege.
我有一个 oracle 程序包,其中包含创建 table 的过程,然后它授予了权限。
代码与此类似:
Begin
Execute immediate 'create table SU.temp_tbl...';
...
...
Dbms_stats.gather_table_stats('SU', 'TEMP_TBL');
End;
过程的所有者是具有 DBA 角色的用户。
这个角色有
create any table privilege
比如
Analyze any table privilege
那么为什么当我在 运行 这个过程中,我在 gather table 命令上得到 'no privileges' 的异常, 但是 'create' 刚刚执行好了?
解决方案是什么?我是否需要 SU 用户明确授予 DBA 分析权限?
我用的是oracle 11g版本
谢谢。
权限必须直接授予 procedure/package 的所有者,而不是通过角色间接授予。
当然EXECUTE ON owner.name_of_procedure
也是必须的
来自GATHER_TABLE_STATS Procedure
的使用说明To invoke this procedure you must be owner of the table, or you need the ANALYZE ANY privilege.