在另一个模式中刷新索引统计信息

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 代表您所说的“其他用户”)