查看真实执行计划 sqlmonitor

创建测试用表,及sql语句

create table t1020 as select * from dba_objects;

create table t1020_B as select * from dba_objects;

select /*+ use_nl(A,B) leading(A) */ count(b.object_id) from t1020 A,t1020_B B where A.object_name = B.object_name;

查看sqlmonitor方式

set linesize 500 pagesize 50000 long 999999 longchunksize 999999

select dbms_sqltune.report_sql_monitor(sql_id=>'6n307nzan357j') from dual;

select dbms_sqltune.report_sql_monitor(sql_id=>'6n307nzan357j',sql_exec_id=>16777216) from dual;  --执定对应的sql_exec_id

sqlmonitor输出示例

SYS@db11g> set linesize 500 pagesize 50000 long 999999 longchunksize 999999
SYS@db11g> select dbms_sqltune.report_sql_monitor(sql_id=>'6n307nzan357j') from dual;

DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_ID=>'6N307NZAN357J')
-----------------------------------------------------------------------------------------------------------------------------
SQL Monitoring Report

SQL Text
------------------------------
select /*+ use_nl(A,B) leading(A) */ count(b.object_id) from t1020 A,t1020_B B where A.object_name = B.object_name

Global Information
------------------------------
 Status              :  EXECUTING             --执行状态
 Instance ID         :  1
 Session             :  SYS (132:85)          --用户 会话情况
 SQL ID              :  6n307nzan357j
 SQL Execution ID    :  16777216
 Execution Started   :  10/20/2024 21:11:52
 First Refresh Time  :  10/20/2024 21:11:58
 Last Refresh Time   :  10/20/2024 21:15:02
 Duration            :  191s
 Module/Action       :  sqlplus@xingkw (TNS V1-V3)/-
 Service             :  SYS$USERS
 Program             :  sqlplus@xingkw (TNS V1-V3)


Global Stats
=========================================
| Elapsed |   Cpu   |  Other   | Buffer |
| Time(s) | Time(s) | Waits(s) |  Gets  |
=========================================
|     190 |     190 |     0.00 |    76M |
=========================================


SQL Plan Monitoring Details (Plan Hash Value=3931849298)
================================================================================================================================
| Id   |       Operation       |  Name   |  Rows   | Cost |   Time    | Start  | Execs |   Rows   | Activity | Activity Detail |
|      |                       |         | (Estim) |      | Active(s) | Active |       | (Actual) |   (%)    |   (# samples)   |
================================================================================================================================
|    0 | SELECT STATEMENT      |         |         |      |           |        |     1 |          |          |                 |
| -> 1 |   SORT AGGREGATE      |         |       1 |      |       185 |     +6 |     1 |        0 |          |                 |
| -> 2 |    NESTED LOOPS       |         |      1M |  30M |       185 |     +6 |     1 |     117K |     0.52 | Cpu (1)         |
| -> 3 |     TABLE ACCESS FULL | T1020   |   89813 |  337 |       185 |     +6 |     1 |    61415 |     0.52 | Cpu (1)         |
| -> 4 |     TABLE ACCESS FULL | T1020_B |      16 |  335 |       191 |     +0 | 61416 |     117K |    98.95 | Cpu (189)       |
================================================================================================================================

sqlmonitor输出解释

- **Id**: 每个执行计划步骤的唯一标识,通常用于引用执行计划的特定操作。

- **Operation**: 描述此步骤的操作类型,例如 SELECT STATEMENT、SORT AGGREGATE、NESTED LOOPS、TABLE ACCESS FULL 等。

- **Name**: 涉及的数据库对象名称(例如表名或索引名),如 T1020 或 T1020_B。

- **Rows (Estim)**: 优化器估计的步骤输出行数。

- **Cost**: 优化器评估的执行代价,这个值用于优化器决定使用哪个计划。

- **Time Active(s)**: 指示该步骤活动时间(以秒为单位),显示精确的执行时间。

- **Start Active**: 相对执行开始的步骤启动时间(秒)。

- **Execs**: 该步骤实际执行的次数。

- **Rows (Actual)**: 该步骤实际处理的输出行数。

- **Activity (%)**: 该步骤在整个 SQL 执行中的活动时间百分比,帮助识别时间消耗较多的步骤。

- **Activity Detail (# samples)**: 活动样本中与步骤相关的详细信息,等待事件及时间消耗。`Cpu (1)` 或 `Cpu (189)` 表示在监控期间该操作所获取的 CPU 采样数。

你可能感兴趣的:(SQL优化,sql,性能优化,运维,数据库,java,oracle)