【问题标题】:Oracle & PL/SQL Developer - Access predicates and Filter predicates no longer shownOracle & PL/SQL Developer - 不再显示访问谓词和过滤谓词
【发布时间】:2011-04-27 15:59:52
【问题描述】:

我在 Oracle 10g 中使用 Allround Automation PL/SQL Developer,今天我注意到解释计划不再显示访问谓词或过滤谓词的任何内容。唯一改变的(据我所知)是昨天我尝试使用 Oracle Enterprise Manager 来解释查询计划,之后 PL/SQL Developer 不再填充这两列。

我不知道使用 OEM 是否会改变一些现在让 PL/SQL Developer 感到困惑的设置。有人有什么建议吗?

【问题讨论】:

    标签: oracle oracle10g sql-execution-plan plsqldeveloper


    【解决方案1】:

    可以吗

    SELECT owner, table_name
      FROM dba_tables
     WHERE table_name = 'PLAN_TABLE'
    

    我多次看到不同的 GUI 尝试“提供帮助”并在本地架构中创建 PLAN_TABLE(如果它不存在)而没有注意到共享 PLAN_TABLE 的同义词。而且,作为有用的 GUI,它们倾向于使用可能不支持报告访问和过滤谓词等内容的旧版本表来创建计划表。

    如果只有一个PLAN_TABLE,您能否使用安装中最新的utlxplan.sql 脚本重新创建PLAN_TABLE(或验证您是否拥有最新版本的表)?

    【讨论】:

    • 我可以从中选择,对于每一行,有 4 个有效模式名称之一为 OWNER(其中一个是我正在使用的),并且 table_name 始终是 PLAN_TABLE。 .. last_analyzed 日期是昨天早上,尽管我最近一直在运行计划。最后,我注意到 PL/SQL Developer 在数据库浏览器下显示了一个PLAN_TABLE,它归我的模式所有,并且没有 Access/Filter 谓词列。删除这个本地拥有的PLAN_TABLE 是否安全,并希望 PL/SQL Dev 下次能够聪明地查看共享表?
    • 假设共享PLAN_TABLE 有公共同义词,您应该能够安全地删除本地PLAN_TABLE。您还可以使用 utlxplan.sql 脚本重新创建本地 PLAN_TABLE
    • @Justin Cave:我尝试运行select * from all_synonyms where table_name = 'PLAN_TABLE';,但没有任何反应。这是否意味着没有公共同义词?顺便说一句,我在这台服务器上没有管理员,所以我认为我不能重新创建不在我的架构内的任何东西 - 但是 OEM 也不应该能够修改我的架构之外的任何东西(它不应该PLSQL Developer 拥有的任何额外权限),那么如果没有公共同义词,我之前如何获得完整的查询计划?
    • @Frustrated - 是的,这意味着没有公开的同义词。因此,如果您删除本地表,您可能需要使用 utlxplan.sql 脚本重新创建它。
    • @Justin Cave:等一下——我可能已经找到了。我运行select * from all_synonyms where table_name like '%PLAN_TABLE%'; 并找到了一个由SYS 拥有的表,其名称为PLAN_TABLE$(注意物理表名称中的$),其同义词为PLAN_TABLE,由PUBLIC 拥有。我想这就是我要找的东西?现在删除本地PLAN_TABLE 是否安全?
    猜你喜欢
    • 2010-11-30
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多