[20200416]可怕的防水墙产品.txt --//上午想跟踪特定sql语句执行,当我检查转储文件时发现,里面大量如下: ===================== PARSING IN CURSOR #139709865332328 len=52 dep=1 uid=131 oct=47 lid=131 tim=1586923154761667 hv=3354287527 ad='257135c60' sqlid='190q1sz3ywrd7' begin :con := "TASSETACL"."QUERYACL"(:sn, :on); end; END OF STMT PARSE #139709865332328:c=0,e=15,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=0,tim=1586923154761663 BINDS #139709865332328: Bind#0 oacdty=01 mxl=4000(4000) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=0001 frm=01 csi=852 siz=4000 off=0 kxsbbbfp=7f10bcbbffa8 bln=4000 avl=00 flg=05 Bind#1 oacdty=01 mxl=32(10) mxlc=00 mal=00 scl=00 pre=00 oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0 kxsbbbfp=7fff3a251b5e bln=32 avl=10 flg=09 value="xxxxxx_yyy" Bind#2 oacdty=01 mxl=32(07) mxlc=00 mal=00 scl=00 pre=00 oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0 kxsbbbfp=7fff3a251b92 bln=32 avl=07 flg=09 value="ZZZZZZ" EXEC #139709865332328:c=0,e=356,p=0,cr=0,cu=0,mis=0,r=1,dep=1,og=1,plh=0,tim=1586923154762116 CLOSE #139709865332328:c=0,e=9,dep=1,type=3,tim=1586923154762194 PARSE #139709865332328:c=0,e=16,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=0,tim=1586923154762258 BINDS #139709865332328: Bind#0 oacdty=01 mxl=4000(4000) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=0001 frm=01 csi=852 siz=4000 off=0 kxsbbbfp=7f10bcbbffa8 bln=4000 avl=00 flg=05 Bind#1 oacdty=01 mxl=32(10) mxlc=00 mal=00 scl=00 pre=00 oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0 kxsbbbfp=7fff3a251b5e bln=32 avl=10 flg=09 value="xxxxxx_yyy" Bind#2 oacdty=01 mxl=32(07) mxlc=00 mal=00 scl=00 pre=00 oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0 kxsbbbfp=7fff3a251b92 bln=32 avl=07 flg=09 value="YYYYYY" --//一般如果跟踪特定的sql语句,可能看到一些递归的sql语句,我跟踪到的大量执行。 begin :con := "TASSETACL"."QUERYACL"(:sn, :on); end; --//在执行的语句前里面涉及到的每个表都要调用1次"TASSETACL"."QUERYACL"(:sn, :on);。参数1是shcema,参数2是表名。 --//你可以想像每次执行语句前都要进行这样的检查,是一个非常恐怖的操作。 --//看看awr报表的情况: SQL ordered by Executions %CPU - CPU Time as a percentage of Elapsed Time %IO - User I/O Time as a percentage of Elapsed Time Total Executions: 23,199,582 Captured SQL account for 34.2% of Total Executions Rows Processed Rows per Exec Elapsed Time (s)%CPU %IO SQL Id SQL Module SQL Text 6,522,522 6,521,177 1.00 1,660.15 99.4 0 190q1sz3ywrd7 xxxxxx.eee begin :con := "TASSETACL".QUE... 2,228,287 2,228,115 1.00 107.98 99.5 0 g7ytdh9mxt1s0 xxxxxx.eee select count ( :"SYS_B_0" ) fr... --//一个小时消耗1,660.15秒。6522522/3600 = 1811,每秒相当于1811次。 > set numw 13 > @ d_buffer 190q1sz3ywrd7 60 EXECUTIONS1 BUFFER_GETS1 ELAPSED_TIME1 ROWS_PROCESSED1 ------------- ------------- ------------- --------------- 412766619 48108 7039402462143 408223884 ... sleep 60 , waiting .... EXECUTIONS2 BUFFER_GETS2 ELAPSED_TIME2 ROWS_PROCESSED2 ------------- ------------- ------------- --------------- 412864987 48108 7039427092606 408322243 总buffer_gets 每次buffer_gets 执行次数 总执行时间 每次执行时间 总处理记录数 平均处理记录数 ------------- --------------- ------------- ------------- ------------- ------------- -------------- 0 0 98368 24630463 250.391011304 98359 .999908506831 --//现在还是疫情期间,根本没有达到业务高峰,大约现在60%的业务量。 --//想像一下如果服务器CPU能力不强肯定无法处理这样大量的语句,而且由于执行的语句相同导致cursor muetux的争用。 select * from V$MUTEX_SLEEP_HISTORY where mutex_identifier=3354287527 order by sleep_timestamp desc; --//结果我不贴出来了。 > @ tpt/ash/ash_wait_chains event2 sql_id='190q1sz3ywrd7' trunc(sysdate) sysdate %This SECONDS AAS WAIT_CHAIN ------ ---------- ---------- -------------------------- 99% 67 0 -> ON CPU 1% 1 0 -> library cache: mutex X --//注:这样看会存在一些误导,参考链接:http://blog.itpub.net/267265/viewspace-2685107/=>[20200408]优化的困惑6.txt --//实际上执行时间远不止67秒。 --//我仅仅提醒一些要使用这类产品的用户,如果你业务已经很忙,上线前仔细测试。 Report Summary Load Profile Per Second Per Transaction Per Exec Per Call ... Executes (SQL): 6,486.6 90.9 --//每秒的执行次数已经达到了64XX次。而上线前最多也就是30xx次上下。db time至少增加40%。 --//我看了疫情前业务高峰可以达到95XX次,如果在加上国内的应用系统大部分是豆腐渣中的豆腐渣工程,这样的问题会更加严重。 Snap Id Snap Time Sessions Cursors/Session Instances Begin Snap: 45498 06-Jan-20 10:00:32 4379 2.2 2 End Snap: 45499 06-Jan-20 11:00:49 4625 2.3 2 Elapsed: 60.28 (mins) DB Time: 434.29 (mins)
[20200416]可怕的防水墙产品.txt
来源:这里教程网
时间:2026-03-03 15:32:07
作者:
编辑推荐:
- [20200416]可怕的防水墙产品.txt03-03
- Oracle 19C Data Guard基础运维-03 Failovers(物理)03-03
- [20200417]跟踪特定sql语句以及v$open_cursor视图.txt03-03
- Oracle 19C Data Guard基础运维-04 Failovers疑问?03-03
- [20200417]跟踪特定sql语句以及v$open_cursor视图2.txt03-03
- Oracle 19C Data Guard基础运维-05Failovers (GAP)03-03
- update表中index索引列对原索引条目做什么操作?03-03
- 使用SQLBooster工具分析Oracle性能问题03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle 19C Data Guard基础运维-03 Failovers(物理)
- Oracle 19C Data Guard基础运维-04 Failovers疑问?
- Oracle 19C Data Guard基础运维-05Failovers (GAP)
- 使用SQLBooster工具分析Oracle性能问题
使用SQLBooster工具分析Oracle性能问题
26-03-03 - Oracle 20C 多租户_1.2 数据库与实例介绍
Oracle 20C 多租户_1.2 数据库与实例介绍
26-03-03 - Oracle 19C Data Guard基础运维-07 failover后闪回恢复dg架构
- Oracle 19C Data Guard基础运维-08 DML重定向
Oracle 19C Data Guard基础运维-08 DML重定向
26-03-03 - [20200420]V$SES_OPTIMIZER_ENV 查不到刚修改的隐含参数.txt
- oracle如何查看执行计划
oracle如何查看执行计划
26-03-03 - Oracle 20C 多租户_体系结构介绍
Oracle 20C 多租户_体系结构介绍
26-03-03
