【问题标题】:Getting Actual Execution Plan in Oracle 11g在 Oracle 11g 中获取实际执行计划
【发布时间】:2013-01-30 03:14:45
【问题描述】:

我已经阅读了这篇postthis 的优秀文章

我的问题是,如何在 Oracle 11g 中获得 acutual 执行计划

没有 sys 权限和 DBA 权限。 (您可以将我的案例视为只读用户)

我可以使用SYS.PLAN_TABLE$TOAD中的CTRL+E 获得解释计划

但我的理解是解释计划=仅估计执行计划?

在 Oracle 的文档中找到

执行计划可能因以下原因而有所不同:

  • 不同的模式

  • 不同的成本

请给我任何你能提供的帮助来清除我的概念。

【问题讨论】:

    标签: sql oracle oracle11g toad


    【解决方案1】:

    如果你想使用dbms_xplan.display_cursor,你需要at least these grants

    grant select on sys.v_$sql_plan to larry;
    grant select on sys.v_$session to larry;
    grant select on sys.v_$sql_plan_statistics_all to larry;
    

    您可能还需要V$SQL 才能找到SQL_ID

    grant select on sys.v_$sql to larry;
    

    【讨论】:

    • 感谢您的提示,所以我必须从 DBA 获得对 SYS 表的这些权限?
    • 还有一个问题。 dbms_xplan.display_cursor 的结果是查询中使用的实际执行计划?
    • 是的。它可以显示几个“实际”列,让您可以将估计值与实际值进行比较。
    • 如果 2 天内没有其他解决方法,我会接受这个答案。
    • 我会选择这个答案,因为似乎没有其他解决方法,我希望获得最低权限。
    【解决方案2】:

    如果您是开发人员,也许我可以请求授予您 SELECT_CATALOG_ROLE。在 11g 中授予它是无害的。这将允许对 DBA 拥有的大多数信息进行只读访问。

    这将使您可以访问 v$sql_plan*、v$session_longops、V$lock、V$SQL_BIND_CAPTURE 和其他性能相关数据。

    【讨论】:

    • 这比授予单个表更方便。但我不认为你总是可以说它是无害的。这取决于组织。例如,许多组织不希望开发人员运行select password from dba_users;,即使密码已加密。如果用户在查询中包含敏感信息,即使 V$SQL 也可能存在问题。
    • 是的,你是对的。我所说的“无害”是指在 9i 上具有此角色的用户可以看到 DBLINK 的明文密码。这不再是真的了。
    猜你喜欢
    • 2013-09-08
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2021-09-30
    • 1970-01-01
    • 2011-11-07
    • 2019-11-30
    相关资源
    最近更新 更多