在另一个模式中刷新索引统计信息
Refresh index stats in another schema
我可以 运行 DBMS_STATS.gather_index_stats 在 oracle 中另一个模式中的索引上吗?
当我 运行 gather_index_stats 在另一个模式中的索引上时,它显示错误“权限丢失”。那么,这个工具在 Oracle 中可用吗?如果是,我该如何实现?
或者有什么我必须提供的特权吗?
谢谢
默认情况下,您不能对其他用户的对象执行任何操作 - 您需要有权限才能这样做。
我不是 DBA,也没有任何数据库来说明“解决方案”,所以 - 除非有人解释得更好 - 看看这是否有帮助。
为了能够处理其他人的对象,特权用户 - 例如 SYS(或任何其他具有 DBA 特权的用户) - 应该授予您 ANY
特权之一(例如 alter any table
). “任何”意味着“任何人拥有”,这也意味着您不能被授予仅为您正在谈论的“另一个”用户收集统计信息的特权,而是数据库中“任何用户”的收集统计信息。
系统权限非常强大 - 请三思是否应该将它们授予任何人。
我认为(因为我自己无法测试,也没有在文档中找到它)您需要的权限是ANALYZE ANY
。
特权用户 (SYS) 应该
grant analyze any to you;
连接为 you
,然后您将例如
exec dbms_stats.gather_index_stats('SCOTT', 'PK_EMP');
(其中 SCOTT
代表您所说的“其他用户”)
我可以 运行 DBMS_STATS.gather_index_stats 在 oracle 中另一个模式中的索引上吗?
当我 运行 gather_index_stats 在另一个模式中的索引上时,它显示错误“权限丢失”。那么,这个工具在 Oracle 中可用吗?如果是,我该如何实现? 或者有什么我必须提供的特权吗?
谢谢
默认情况下,您不能对其他用户的对象执行任何操作 - 您需要有权限才能这样做。
我不是 DBA,也没有任何数据库来说明“解决方案”,所以 - 除非有人解释得更好 - 看看这是否有帮助。
为了能够处理其他人的对象,特权用户 - 例如 SYS(或任何其他具有 DBA 特权的用户) - 应该授予您 ANY
特权之一(例如 alter any table
). “任何”意味着“任何人拥有”,这也意味着您不能被授予仅为您正在谈论的“另一个”用户收集统计信息的特权,而是数据库中“任何用户”的收集统计信息。
系统权限非常强大 - 请三思是否应该将它们授予任何人。
我认为(因为我自己无法测试,也没有在文档中找到它)您需要的权限是ANALYZE ANY
。
特权用户 (SYS) 应该
grant analyze any to you;
连接为
you
,然后您将例如exec dbms_stats.gather_index_stats('SCOTT', 'PK_EMP');
(其中
SCOTT
代表您所说的“其他用户”)