[20240328]为什么找不到执行计划.txt --//最近一直在优化生产系统监控sql语句,遇到一个无法解析的情况,记录下来. 1.环境: SYS@192.168.100.235:1521/orcl> @ pr ============================== PORT_STRING : x86_64/Linux 2.4.xx VERSION : 19.0.0.0.0 BANNER : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production BANNER_FULL : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 BANNER_LEGACY : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production CON_ID : 0 PL/SQL procedure successfully completed. 2.问题提出: SYS@192.168.100.235:1521/orcl> @ sqlhh 89u3urxj9zs1x .15 time unit : millisecond BEGIN_INTERVAL_TIME INST_ID SQL_ID PLAN_HASH_VALUE EXECUTIONS ELA_MS_PER_EXEC CPU_MS_PER_EXEC ROWS_PER_EXEC LIOS_PER_EXEC BLKRD_PER_EXEC IOW_MS_PER_EXEC AVG_IOW_MS CLW_MS_PER_EXEC APW_MS_PER_EXEC CCW_MS_PER_EXEC ------------------- ---------- ------------- --------------- ---------- --------------- --------------- ------------- ------------- -------------- --------------- ----------- --------------- --------------- --------------- 2024-03-25 07:00:34 1 89u3urxj9zs1x 2280867756 7 31 31 10.0 0 0 0 0.0 0 0 0 2024-03-25 07:00:34 1 89u3urxj9zs1x 4173261031 6 4069 4058 10.0 150592 0 0 0.0 0 0 0 2024-03-25 08:00:38 1 89u3urxj9zs1x 2280867756 7 34 34 10.0 0 0 0 0.0 0 0 0 2024-03-25 08:00:38 1 89u3urxj9zs1x 4173261031 8 4755 4743 10.0 212289 0 0 0.0 0 0 0 2024-03-25 09:00:40 1 89u3urxj9zs1x 2280867756 8 33 32 10.0 0 0 0 0.0 0 0 0 2024-03-25 09:00:40 1 89u3urxj9zs1x 4173261031 10 5036 5032 10.0 236710 0 0 0.0 0 0 0 6 rows selected. --//出现2个执行计划,从输出看可以发现其中1个执行很快,但是我看sql语句时出现疑惑,该语句不会执行很快,理论讲 --//PLAN_HASH_VALUE=2280867756不应该出现在dba_hist_sqlstat视图里面(LIOS_PER_EXEC=0) SYS@192.168.100.235:1521/orcl> @ sql_id 89u3urxj9zs1x --SQL_ID = 89u3urxj9zs1x SELECT 'DISK_READ' ROWINFO , disk_read.* FROM ( SELECT DISK_READS , EXECUTIONS , ROUND(disk_reads / decode(executions, 0, 1, executions), 2) READS_PER_EXEC , round(CPU_TIME/1000000, 2) CPU_TIME , PARSING_SCHEMA_NAME , LAST_ACTIVE_TIME , SQL_ID , SQL_FULLTEXT FROM v$sqlarea WHERE executions > 0 order by disk_reads desc) disk_read WHERE rownum < 11; --//这条语句不可能执行很快的. 3.分析: --//看看0点的执行情况. SYS@192.168.100.235:1521/orcl> @ ashtop to_char(sample_time,'hh24mi'),client_id,SQL_PLAN_HASH_VALUE sql_id='89u3urxj9zs1x' trunc(sysdate) trunc(sysdate)+1/24 Total Distinct Distinct Distinct Seconds AAS %This TO_C CLIENT_ID SQL_PLAN_HASH_VALUE FIRST_SEEN LAST_SEEN Execs Seen Tstamps Execs Seen1 --------- ------- ------- ---- --------------- ------------------- ------------------- ------------------- ---------- -------- ----------- 5 .0 17% | 0007 192.168.101.227 4173261031 2024-03-29 00:07:26 2024-03-29 00:07:30 1 5 1 5 .0 17% | 0057 192.168.101.217 4173261031 2024-03-29 00:57:39 2024-03-29 00:57:43 1 5 1 4 .0 13% | 0017 192.168.101.227 4173261031 2024-03-29 00:17:29 2024-03-29 00:17:32 1 4 1 4 .0 13% | 0027 192.168.101.227 4173261031 2024-03-29 00:27:30 2024-03-29 00:27:33 1 4 1 4 .0 13% | 0037 192.168.101.227 4173261031 2024-03-29 00:37:31 2024-03-29 00:37:34 1 4 1 4 .0 13% | 0047 192.168.101.227 4173261031 2024-03-29 00:47:34 2024-03-29 00:47:37 1 4 1 4 .0 13% | 0058 192.168.101.217 4173261031 2024-03-29 00:58:22 2024-03-29 00:58:25 1 4 1 7 rows selected. --//噢,有两台机器同时做这类监控,再次重申我的观点,这类监控就是没用的东西.而且执行计划PLAN_HASH_VALUE=4173261031. --//这就有点奇怪了.ashtop脚本查询来源是v$active_session_history视图.而前面的sqlhh查询来源 dba_hist_sqlstat视图. --//理论dba_hist_sqlstat记录信息来源v$active_session_history,怎么会在dba_hist_sqlstat视图里出现其它PLAN_HASH_VALUE值呢. SYS@192.168.100.235:1521/orcl> @ ashtop to_char(sample_time,'hh24mi'),client_id,SQL_PLAN_HASH_VALUE "sql_id='89u3urxj9zs1x' and client_id='192.168.101.217'" trunc(sysdate) trunc(sysdate)+1/24 Total Distinct Distinct Distinct Seconds AAS %This TO_C CLIENT_ID SQL_PLAN_HASH_VALUE FIRST_SEEN LAST_SEEN Execs Seen Tstamps Execs Seen1 --------- ------- ------- ---- --------------- ------------------- ------------------- ------------------- ---------- -------- ----------- 5 .0 56% | 0057 192.168.101.217 4173261031 2024-03-29 00:57:39 2024-03-29 00:57:43 1 5 1 4 .0 44% | 0058 192.168.101.217 4173261031 2024-03-29 00:58:22 2024-03-29 00:58:25 1 4 1 SYS@192.168.100.235:1521/orcl> @ ashtop to_char(sample_time,'hh24mi'),client_id,SQL_PLAN_HASH_VALUE "sql_id='89u3urxj9zs1x' and client_id='192.168.101.227'" trunc(sysdate) trunc(sysdate)+1/24 Total Distinct Distinct Distinct Seconds AAS %This TO_C CLIENT_ID SQL_PLAN_HASH_VALUE FIRST_SEEN LAST_SEEN Execs Seen Tstamps Execs Seen1 --------- ------- ------- ---- --------------- ------------------- ------------------- ------------------- ---------- -------- ----------- 5 .0 24% | 0007 192.168.101.227 4173261031 2024-03-29 00:07:26 2024-03-29 00:07:30 1 5 1 4 .0 19% | 0017 192.168.101.227 4173261031 2024-03-29 00:17:29 2024-03-29 00:17:32 1 4 1 4 .0 19% | 0027 192.168.101.227 4173261031 2024-03-29 00:27:30 2024-03-29 00:27:33 1 4 1 4 .0 19% | 0037 192.168.101.227 4173261031 2024-03-29 00:37:31 2024-03-29 00:37:34 1 4 1 4 .0 19% | 0047 192.168.101.227 4173261031 2024-03-29 00:47:34 2024-03-29 00:47:37 1 4 1 --//注:我看了一下两台IP的机器名都是localhost.localdomain,管理混乱,连机器起一个名字都没有做好. --//我怀疑这两个IP是同一台主机.从时间间隔看"感觉"应该是10分钟做一次这样的查询. SYS@192.168.100.235:1521/orcl> @ ashtop to_char(sample_time,'hh24:mi'),client_id,SQL_PLAN_HASH_VALUE "sql_id='89u3urxj9zs1x' " trunc(sysdate)+1/24 trunc(sysdate)+2/24 Total Distinct Distinct Distinct Seconds AAS %This TO_CH CLIENT_ID SQL_PLAN_HASH_VALUE FIRST_SEEN LAST_SEEN Execs Seen Tstamps Execs Seen1 --------- ------- ------- ----- --------------- ------------------- ------------------- ------------------- ---------- -------- ----------- 4 .0 11% | 01:08 192.168.101.227 4173261031 2024-03-29 01:08:16 2024-03-29 01:08:19 1 4 1 5 .0 14% | 01:18 192.168.101.227 4173261031 2024-03-29 01:18:16 2024-03-29 01:18:20 1 5 1 4 .0 11% | 01:28 192.168.101.217 4173261031 2024-03-29 01:28:24 2024-03-29 01:28:27 1 4 1 4 .0 11% | 01:29 192.168.101.217 4173261031 2024-03-29 01:29:07 2024-03-29 01:29:10 1 4 1 3 .0 8% | 01:38 192.168.101.217 4173261031 2024-03-29 01:38:27 2024-03-29 01:38:29 1 3 1 5 .0 14% | 01:39 192.168.101.217 4173261031 2024-03-29 01:39:08 2024-03-29 01:39:12 1 5 1 4 .0 11% | 01:48 192.168.101.217 4173261031 2024-03-29 01:48:29 2024-03-29 01:48:32 1 4 1 4 .0 11% | 01:49 192.168.101.217 4173261031 2024-03-29 01:49:10 2024-03-29 01:49:13 1 4 1 4 .0 11% | 01:58 192.168.101.227 4173261031 2024-03-29 01:58:32 2024-03-29 01:58:35 1 4 1 9 rows selected. --//注:重新按照时间排列,不知道为什么中间的时间出现执行2次的情况,但是执行计划的PLAN_HASH_VALUE=4173261031. --//不理解为什么执行次数会出现这样的情况. SYS@192.168.100.235:1521/orcl> @ sqlhh 89u3urxj9zs1x 1 time unit : millisecond BEGIN_INTERVAL_TIME INST_ID SQL_ID PLAN_HASH_VALUE EXECUTIONS ELA_MS_PER_EXEC CPU_MS_PER_EXEC ROWS_PER_EXEC LIOS_PER_EXEC BLKRD_PER_EXEC IOW_MS_PER_EXEC AVG_IOW_MS CLW_MS_PER_EXEC APW_MS_PER_EXEC CCW_MS_PER_EXEC ------------------- ---------- ------------- --------------- ---------- --------------- --------------- ------------- ------------- -------------- --------------- ----------- --------------- --------------- --------------- ... 2024-03-29 00:00:43 1 89u3urxj9zs1x 2280867756 8 38 37 10.0 0 0 0 0.0 0 0 0 2024-03-29 00:00:43 1 89u3urxj9zs1x 4173261031 7 4374 4367 10.0 195833 0 0 0.0 0 0 0 2024-03-29 01:00:46 1 89u3urxj9zs1x 2280867756 7 38 37 10.0 0 0 0 0.0 0 0 0 2024-03-29 01:00:46 1 89u3urxj9zs1x 4173261031 9 4174 4156 10.0 185793 0 0 0.0 0 0 0 2024-03-29 02:00:48 1 89u3urxj9zs1x 2280867756 7 39 37 10.0 0 0 0 0.0 0 0 0 2024-03-29 02:00:48 1 89u3urxj9zs1x 4173261031 9 4463 4455 10.0 195599 0 0 0.0 0 0 0 .... 2024-03-29 07:00:01 1 89u3urxj9zs1x 4173261031 8 4051 4026 8.8 179319 0 0 0.0 0 0 0 46 rows selected. --//0-1点记录8+7=15次,1-2点记录7+9=16次.是否可以理解执行快的v$active_session_history没有记录. SYS@192.168.100.235:1521/orcl> @ dpcawr 89u3urxj9zs1x '' 2280867756 no rows selected --//在awr里面根本没有相关记录,PLAN_HASH_VALUE=2280867756. SYS@192.168.100.235:1521/orcl> @ dpcawr 89u3urxj9zs1x adaptive 4173261031 PLAN_TABLE_OUTPUT -------------------- SQL_ID 89u3urxj9zs1x -------------------- select 'DISK_READ' ROWINFO, disk_read.* from (select DISK_READS,EXECUTIONS, ROUND(disk_reads / decode(executions, 0, 1, executions),2) READS_PER_EXEC,round(CPU_TIME/1000000,2) CPU_TIME,PARSING_SCHEMA_NAME,LAST_ACTIVE_TIME,SQL_ID,SQL_FULLTEXT from v$sqlarea where executions > 0 order by disk_reads desc) disk_read where rownum < 11 Plan hash value: 4173261031 ---------------------------------------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | ---------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 1 (100)| | | 1 | COUNT STOPKEY | | | | | | | 2 | VIEW | | 1 | 16519 | 1 (100)| 00:00:01 | | 3 | SORT ORDER BY STOPKEY| | 1 | 16532 | 1 (100)| 00:00:01 | | 4 | FIXED TABLE FULL | X$KGLCURSOR_CHILD_SQLID | 1 | 16532 | 0 (0)| | ---------------------------------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 2 - SEL$71D7A081 / DISK_READ@SEL$1 3 - SEL$71D7A081 4 - SEL$71D7A081 / X$KGLCURSOR_CHILD_SQLID@SEL$5 Note ----- - Warning: basic plan statistics not available. These are only collected when: * hint 'gather_plan_statistics' is used for the statement or * parameter 'statistics_level' is set to 'ALL', at session or system level --//仅仅存在PLAN_HASH_VALUE=4173261031的执行计划. --//为什么出现这样的情况我无法解析. --//顺便说一下这个版本的PLAN_HASH_VALUE计算与其它机器不同. --//参考链接: https://blog.itpub.net/267265/viewspace-2922082/ =>[20221104]执行计划一样Plan hash value不同.txt SYS@127.0.0.1:9015/ywdb> @ sqlhh 89u3urxj9zs1x .2 time unit : millisecond BEGIN_INTERVAL_TIME INST_ID SQL_ID PLAN_HASH_VALUE EXECUTIONS ELA_MS_PER_EXEC CPU_MS_PER_EXEC ROWS_PER_EXEC LIOS_PER_EXEC BLKRD_PER_EXEC IOW_MS_PER_EXEC AVG_IOW_MS CLW_MS_PER_EXEC APW_MS_PER_EXEC CCW_MS_PER_EXEC ------------------- ---------- ------------- --------------- ---------- --------------- --------------- ------------- ------------- -------------- --------------- ----------- --------------- --------------- --------------- 2024-03-29 05:00:05 2 89u3urxj9zs1x 2280867756 6 1500 1440 10.0 0 0 0 0.0 0 0 0 2024-03-29 06:00:16 2 89u3urxj9zs1x 2280867756 6 1345 1308 10.0 0 0 0 0.0 0 0 0 2024-03-29 07:00:33 2 89u3urxj9zs1x 2280867756 6 1314 1235 10.0 0 0 0 0.0 0 0 0 2024-03-29 08:00:47 2 89u3urxj9zs1x 2280867756 6 1285 1269 10.0 0 0 0 0.0 0 0 0 --//其它机器看到PLAN_HASH_VALUE=2280867756.顺便说一个这样的监控基本没用,看看6次执行在实例2.看到实例2的执行情况, --//根本没有考虑rac环境,这样的监控有什么用,拿来分析问题不是漏掉了实例1的情况吗? --//扫描是v$sqlarea,这样的产品拿来买不是欺骗用户吗? SYS@127.0.0.1:9014/ywdb> @ ashtop to_char(sample_time,'hh24:mi'),client_id sql_id='89u3urxj9zs1x' trunc(sysdate) trunc(sysdate)+1/24 Total Distinct Distinct Distinct Seconds AAS %This TO_CH CLIENT_ID FIRST_SEEN LAST_SEEN Execs Seen Tstamps Execs Seen1 --------- ------- ------- ----- -------------- ------------------- ------------------- ---------- -------- ----------- 2 .0 22% | 00:09 192.168.90.217 2024-03-29 00:09:14 2024-03-29 00:09:15 1 2 1 2 .0 22% | 00:19 192.168.90.217 2024-03-29 00:19:20 2024-03-29 00:19:21 1 2 1 2 .0 22% | 00:39 192.168.90.217 2024-03-29 00:39:15 2024-03-29 00:39:16 1 2 1 1 .0 11% | 00:29 192.168.90.217 2024-03-29 00:29:15 2024-03-29 00:29:15 1 1 1 1 .0 11% | 00:49 192.168.90.217 2024-03-29 00:49:16 2024-03-29 00:49:16 1 1 1 1 .0 11% | 00:59 192.168.90.217 2024-03-29 00:59:18 2024-03-29 00:59:18 1 1 1 6 rows selected. --//其它机器执行都是6次,也许上面的主机是一台虚拟机器192.168.100.235,还是许多现象无法解析.
[20240328]为什么找不到执行计划.txt
来源:这里教程网
时间:2026-03-03 19:51:21
作者:
编辑推荐:
- [20240328]为什么找不到执行计划.txt03-03
- [20240329]oracle replace与translate的区别.txt03-03
- oracle分布式事务异常处理方法03-03
- sqlhc的介绍和使用03-03
- Oracle 23C 新特征一JSON关系二元性03-03
- DBLINK的介绍和使用03-03
- Oracle 23C 新特征- True Cache03-03
- Oracle查看数据库执行SQL信息03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- [20240328]为什么找不到执行计划.txt
[20240328]为什么找不到执行计划.txt
26-03-03 - oracle分布式事务异常处理方法
oracle分布式事务异常处理方法
26-03-03 - sqlhc的介绍和使用
sqlhc的介绍和使用
26-03-03 - Oracle 23C 新特征一JSON关系二元性
Oracle 23C 新特征一JSON关系二元性
26-03-03 - Oracle 23C 新特征- True Cache
Oracle 23C 新特征- True Cache
26-03-03 - 30分钟速达的风,还是吹到了县城
30分钟速达的风,还是吹到了县城
26-03-03 - [20240409]为什么一条sql语句在实例2执行要慢的分析.txt
[20240409]为什么一条sql语句在实例2执行要慢的分析.txt
26-03-03 - Oracle 新特征-Read-Only Per-PDB Standby
Oracle 新特征-Read-Only Per-PDB Standby
26-03-03 - Oracle 数据库 [INS-30060]check for group existence failed. 报错解决
- 一次物化视图刷新问题排查
一次物化视图刷新问题排查
26-03-03
