ITPub博客

首页 > 数据库 > Oracle > [20240410]为什么一条sql语句在实例2执行要慢的分析((补充).txt

[20240410]为什么一条sql语句在实例2执行要慢的分析((补充).txt

原创 Oracle 作者:lfree 时间:2024-04-22 20:42:52 0 删除 编辑

[20240410]为什么一条sql语句在实例2执行要慢的分析((补充).txt

--//昨天的测试,链接:https://blog.itpub.net/267265/viewspace-3011962/
--//被别人问一些问题,既然从共享池清除,sqlhh.sql脚本应该查询不到,为什么有显示呢?

--//sqlhh.sql脚本调用的是Tanel Poder的tpt/awr/awr_sqlstats_per_exec.sql脚本.查询的是dba_hist_sqlstat视图.
--//里面并不是汇总,而是查询的是子光标的执行计划,视图dba_hist_sqlstat里面存在字段LOADED_VERSIONS,VERSION_COUNT .
--//我的猜测将plan_hash_value相同的值汇集起来,VERSION_COUNT记录是plan_hash_value相同的数量,
--//出现这种情况最大的可能是子光标的堆6被清除了,而且由于这个执行计划非常复杂,堆6占用空间也很大.

1.环境:
SYS@127.0.0.1:9015/ywdb> @ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.分析:
SYS@127.0.0.1:9015/ywdb> @ sharepool/shp4 af4692qv1f56q 0
TEXT                  KGLHDADR         KGLHDPAR         C40                                        KGLHDLMD   KGLHDPMD   KGLHDIVC KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16   N0_6_16        N20   KGLNAHSH KGLOBT03        KGLOBT09
--------------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
child handle address  000000061217AEB8 00000005D3B15850   SELECT D.constraint_type as CONSTRAINT          0          0          0 00000005B4D48C50 00000005EC52B5D8       8600     705720       4617    718937     718937 3054965974 af4692qv1f56q          0
child handle address  0000000612665E30 00000005D3B15850   SELECT D.constraint_type as CONSTRAINT          0          0          0 0000000612665D78 00000005EC52B9E0       8600     705736       4617    718953     718953 3054965974 af4692qv1f56q          1
parent handle address 00000005D3B15850 00000005D3B15850   SELECT D.constraint_type as CONSTRAINT          0          0          0 00000005D0E6FFC8 00                     5424          0          0      5424       5424 3054965974 af4692qv1f56q      65535

--//可以发现子光标的堆6占用空间很大,KGLOBHS6=7057XX,接近700K,在共享池内存不足的情况下,被踢出很正常.

--//而执行次数保持在父光标的堆0以及子光标的堆0中,这样能获得执行次数就很正常了.
--//参考链接:
--//https://blog.itpub.net/267265/viewspace-2936074/ => [20230220]探究v$session.SQL_EXEC_ID在共享池.txt
--//https://blog.itpub.net/267265/viewspace-2937262/ => [20230227]探究v$session.SQL_EXEC_ID在共享池(补充).txt

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3013374/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969544