oracle sql执行计划图片,Oracle SQL优化与调优之显示执行计划(下)

DISPLAY_AWR

DISPLAY_AWR 函数显示存储在 AWR 历史数据的执行计划。

提示:要正常调用 DISPLAY_AWR 参数,必须要有对视图 DBA_HIST_SQL_PLAN 和

DBA_HIST_SQLTEXT 的 SELECT 权限。

参数描述:

oSQL_ID:需要被显示执行计划的 SQL 语句的 ID。该 ID 可以从 DBA_HIST_SQL_PLAN.SQL_ID

或 DBA_HIST_SQLTEXT.SQL_ID 获得,该参数必须指定非空值,没有默认值;

oPLAN_HASH_VALUE:执行计划的哈希值。我们之前提到,每个执行计划都有一个哈希。通过该值,可以显示 SQL 语句的特定的执行计划。如果未指定或为 NULL,则会显示语句的所有执行计划;

oDB_ID:指定显示哪个数据库的执行计划,默认为本地数据库 ID。

提示:我们可以将其他数据库的 AWR 数据导入本地数据库进行分析。

oFORMAT:格式化控制字符串。DISPLAY_AWR 函数的格式化选项与 DISPLAY 的选项相同。

示例:

c29e8092ca7eedcea343a25fea7ee916.png

d28e95bbf77060f153f8a7f1545e2e13.png

DISPLAY_SQLSET

DISPLAY_SQLSET 函数显示存储在一个 SQL 调优集中的语句的执行计划。

提示:DBMS_SQLTUNE 是 Oracle 10g 中提供的一个自动调优的工具包,它可以对单条语句进行调优, 也可对一组 SQL 集进行调优,我们在后面章节会做详细介绍。

参数描述:

oSQLSET_NAME:SQL 集的名称。每个 SQL 集都有一个单独的名称(可以是创建时用户指定的,也可以是系统自动生成的),我们需要指定从哪个 SQL 集中读取和显示语句的执行计划,该参数没有默认值,必须指定;

oSQL_ID:需要被显示执行计划的 SQL 语句的 ID。该 ID 可以从

USER/DBA/ALL_SQLSET_PLANS.SQL_ID 获得,该参数必须指定非空值,没有默认值;

oPLAN_HASH_VALUE:执行计划的哈希值。如果未指定或为 NULL,则会显示语句的所有执行计划;

oFORMAT:格式化控制字符串。DISPLAY_SQLSET 函数的格式化选项与 DISPLAY 的选项相同。

oSQLSET_OWNER:SQL 集的所有者,默认为当前用户名。

示例:

a80a040813e1e41061dec7993f2879e8.png

1654643eef82a83665a202fb4880be49.png

DISPLAY_SQL_PLAN_BASELINE

DISPLAY_SQL_PLAN_BASELINE 函数显示存储在数据字典当中的 SQL 执行计划基线的计划。

提示:SQL 执行计划管理是 Oracle 11g 中提供的一个管理 SQL 语句的一组执行计划(执行计划基线,

Plan Baseline)、保证语句运行性能稳定性的特性。

参数描述:

oSQL_HANDLE:执行计划基线所属 SQL 的句柄名称,它由 Oracle 在创建或载入执行计划到基线当中时自动生成,可以通过视图 dba_sql_plan_baselines 查询,默认为 NULL;

oPLAN_NAME:执行计划基线某个执行计划的名称,它由 Oracle 在创建或载入执行计划到基线当中时自动生成,可以通过视图 dba_sql_plan_baselines 查询,默认为 NULL;

oFORMAT:格式化控制字符串。DISPLAY_SQLSET 函数的格式化选项与 DISPLAY 的选项相同。

当 SQL_HANDLE 和 PLAN_NAME 都为空时,显示所有基线数据中的全部执行计划。

示例:

8b4e716841d04bcfaa00baf67c8777c5.png

72094f115f4bba9f9420b80f49d83517.png

AUTOTRACE

AUTOTRACE 是 Oracle 自带的客户端工具 SQLPlus 的一个特性。启用 AutoTrace 后,SQLPLus

会自动收集执行过的语句的执行计划、性能统计数据等,并在语句执行结束后显示在 SQL*Plus 中。要使用 AUTOTRACE,我们需要先做以下准备。

用 DBA 用户创建角色 PLUSTRCE,并将该角色赋予用户。

在执行语句之前,在 SQL*Plus 中打开自动跟踪选项。你可以在打开 AUTOTRACE 时选择不同选项,以控制输出的内容。

•SET AUTOTRACE ON

打开 AUTOTRACE,并输出所有内容,包括语句本身的查询结果,执行计划,以及性能统计

数据。

•SET AUTOTRACE ON EXPLAIN

打开 AUTOTRACE,并输出语句本身的查询结果和执行计划,不输出性能统计数据。

•SET AUTOTRACE ON STATISTICS

打开 AUTOTRACE,并输出语句本身的查询结果和性能统计数据,不输出执行计划。

•SET AUTOTRACE TRACE

打开 AUTOTRACE,并输出执行计划和性能统计数据,不输出语句本身的查询结果。

•SET AUTOTRACE TRACE EXPLAIN

打开 AUTOTRACE,并输出执行计划,不输出语句本身的查询结果和性能统计数据。

•SET AUTOTRACE TRACE STATISTICS

打开 AUTOTRACE,并输出性能统计数据,不输出语句本身的查询结果和执行计划。

•SET AUTOTRACE OFF

关闭 AUTOTRACE

94e590dbc45781443a52889737ab8365.png

SQL_TRACE(或者 10046 跟踪事件)

SQL_TRACE 跟踪的内容由三个部分组成:执行语句时造成的等待事件(Waits);执行语句时产生的性能统计数据;以及语句的执行计划和绑定变量信息。这里仅介绍执行计划相关部分。

在会话或者系统中启动 SQL 跟踪后,会话结束或者关闭 SQL 跟踪之前,会话(或系统)中所有 运行的语句的性能统计数据都会记录到 UDUMP 目录(user_dump_dest 参数指定)下一个根据文件中(未指定标识字符串 tracefile_identifier 的情况下,文件名格式为ORA.trc), 从跟踪文件中,我们可以找到语句的执行计划。

1281b2584e9530f2c098b8186ff111c4.png

4aea2105065cad0490bfdf87fa99f8f1.png

OPTIMIZER_TRACE(或者跟踪 10053 事件)

OPTIMIZER_TRACE(10053 事件可以跟踪优化器生成语句执行计划的整个过程,并且,在 11g 中还可以通过设置事件来指定仅跟踪一个或多个组件的信息。同样,其跟踪内容都会写入 UDMP 目录下的一个跟踪文件中,文件的命名方式和 SQL_TRACE 产生的跟踪文件的命名方式相同。

a56fdd72129500da25d5f562fd1160c6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值