暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 高解析执行比

ASKTOM 2019-08-16
347

问题描述

亲爱的团队,
在过去的几周中,我们的生产服务器运行缓慢。当我查询v $ sql时,它显示了很多sql,它被解析得比它的执行更多。另外,在某些情况下,sqls解析调用几乎等于其执行。我发现数据库执行的sql以及应用程序执行的sql。但是这两种类型的sql都使用绑定变量。

系统执行的sqls示例:

delete from dependency$ where d_obj#=:1
executions 2418720 parse_calls 2418734

SELECT SUBSTR(MLINK,2), TNAME, USLOG, SUBSTR(AUTO_FAST,1,1), BITAND(FLAG, :B4 ), BITAND(FLAG, :B3 ) 
FROM SYS.SNAP$ WHERE SOWNER = :B2 AND VNAME = :B1 AND INSTSITE = 0
executions 222683  parse_calls 222760

update sum$ set containerobj#=:2,containertype=:3,containernam=:4,fullrefreshtim=:5,increfreshtim=:6,lastrefreshscn=:7,lastrefreshdate=:8,refreshmode=:9,pflags=:10,mflags=:11,numdetailtab=:12,numaggregates=:13,numkeycolumns=:14,numjoins=:15,numinlines=:16,fromoffset=:19,fromlen=:20,objcount=:21,metaversion=:22, xpflags=:23,numwhrnodes=:24, numhavnodes=:25, numqbnodes=:26, qbcmarker=:27, markerdty=:28, rw_mode=:29, rw_name=:30, dest_stmt=NULL, src_stmt=NULL, spare1=:31, evaledition#=:33, unusablebefore#=:34, unusablebeginning#=:35 where obj#=:1

executions 637934  parse_calls 638641


还有许多其他人。

我发现有许多过程,函数和软件包正在经历高图书馆缓存等待事件或其他类型的锁存等待事件。我们有21 gb的sga和20 gb的pga_max_target。它是一个运行oracle版本12.1.0.2.0标准版的linux盒子。

是sga不足,正在老化sqls?

期待您的建议。
谢谢和问候。


专家解答

由于这些是系统SQL (数据库运行来处理您的语句),因此您对它们的解析/执行比率无能为力。除了找出哪个进程触发了它们。并停止这样做;)

所以四处挖掘,看看这些陈述是从哪里来的。

我的猜测: 编译PL/SQL时,您可以看到库缓存等待 & dependency $ 上的语句。所以也许有些事情使你的代码无效。

你在做任何会使你的程序/功能失效的事情吗?

例如,运行DDL?发行重新编译?

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论