【发布时间】:2013-01-30 03:14:45
【问题描述】:
我的问题是,如何在 Oracle 11g 中获得 acutual 执行计划
没有 sys 权限和 DBA 权限。 (您可以将我的案例视为只读用户)
我可以使用SYS.PLAN_TABLE$ 或TOAD中的CTRL+E 获得解释计划
但我的理解是解释计划=仅估计执行计划?
在 Oracle 的文档中找到
执行计划可能因以下原因而有所不同:
不同的模式
不同的成本
请给我任何你能提供的帮助来清除我的概念。
【问题讨论】:
我的问题是,如何在 Oracle 11g 中获得 acutual 执行计划
没有 sys 权限和 DBA 权限。 (您可以将我的案例视为只读用户)
我可以使用SYS.PLAN_TABLE$ 或TOAD中的CTRL+E 获得解释计划
但我的理解是解释计划=仅估计执行计划?
在 Oracle 的文档中找到
执行计划可能因以下原因而有所不同:
不同的模式
不同的成本
请给我任何你能提供的帮助来清除我的概念。
【问题讨论】:
如果你想使用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;
【讨论】:
dbms_xplan.display_cursor 的结果是查询中使用的实际执行计划?
如果您是开发人员,也许我可以请求授予您 SELECT_CATALOG_ROLE。在 11g 中授予它是无害的。这将允许对 DBA 拥有的大多数信息进行只读访问。
这将使您可以访问 v$sql_plan*、v$session_longops、V$lock、V$SQL_BIND_CAPTURE 和其他性能相关数据。
【讨论】:
select password from dba_users;,即使密码已加密。如果用户在查询中包含敏感信息,即使 V$SQL 也可能存在问题。