暂无图片
19.4 row cache mutex / pin S wait on X 大量CPU阻塞
我来答
分享
张冲
2020-07-01
19.4 row cache mutex / pin S wait on X 大量CPU阻塞
暂无图片 10M

19.4 rac 出现大量等待事件:row cache mutex / pin S wait on X ,awr在附件

现环境参数 session_cached_cursors 为50,且每个instance 使用率为 100%

image.png

请问有大佬有好的方法解决问题吗

我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新
张冲
暂无图片 评论
暂无图片 有用 0
打赏 0
张冲
上传附件:awr.html
暂无图片 评论
暂无图片 有用 0
打赏 0
Moone

1、你这个库硬解析较高,和session_cached_cursors没关系(66.3/s)
2、主要blocking_session是220,等待事件为cursor: pin S wait on X
image.png
从ash参数看:
image.png
SQL> SELECT decode(trunc(&&P3/4294967296),
2 0,trunc(&&P3/65536),
3 trunc(&&P3/4294967296)) LOCATION_ID
4 FROM dual;
Enter value for p3: 21474836480
old 1: SELECT decode(trunc(&&P3/4294967296),
new 1: SELECT decode(trunc(21474836480/4294967296),
old 2: 0,trunc(&&P3/65536),
new 2: 0,trunc(21474836480/65536),
old 3: trunc(&&P3/4294967296)) LOCATION_ID
new 3: trunc(21474836480/4294967296)) LOCATION_ID

LOCATION_ID

      5
复制

SQL> SELECT MUTEX_TYPE, LOCATION
2 FROM x$mutex_sleep
3 WHERE mutex_type like ‘Cursor Pin%’
4 and location_id=&&LOCATION_ID;
Enter value for location_id: 5
old 4: and location_id=&&LOCATION_ID
new 4: and location_id=5

MUTEX_TYPE

LOCATION

Cursor Pin
kkslce [KKSCHLPIN2]

SQL> SELECT decode(trunc(&&P2/4294967296),
2 0,trunc(&&P2/65536),
3 trunc(&&P2/4294967296)) SID_HOLDING_MUTEX
4 FROM dual;
Enter value for p2: 944892805120
old 1: SELECT decode(trunc(&&P2/4294967296),
new 1: SELECT decode(trunc(944892805120/4294967296),
old 2: 0,trunc(&&P2/65536),
new 2: 0,trunc(944892805120/65536),
old 3: trunc(&&P2/4294967296)) SID_HOLDING_MUTEX
new 3: trunc(944892805120/4294967296)) SID_HOLDING_MUTEX

SID_HOLDING_MUTEX

          220
复制

大量session是220阻塞的,所以要通过ash裸数据看220会话的cursor: pin S wait on X参数是什么?如果也是220,则可能是死锁了!

3、等待row cache mutex的参数
cachid:10,dc_users
image.png
kqrpre - kernel query dictionary/row cache read a parent cache object
kqrGetClusterLock - kernel query dictionary/row cache get a row cache lock in cluster mode (cluster version of kqrget)
kqreqd - kernel query dictionary/row cache enqueue delete

这个等待可能是cursor: pin S wait on X阻塞的。

建议:
1、通过ash裸数据分析最终阻塞源
2、降低sql硬解析数量。

暂无图片 评论
暂无图片 有用 0
打赏 0
weizhao.zhang (anbob)

Bug 30623138

暂无图片 评论
暂无图片 有用 0
打赏 0
张冲

谢谢各位大佬解答

暂无图片 评论
暂无图片 有用 0
打赏 0
Uncopyrightable

有得解释是,21C以后版本解决游标问题,或者更新最新补丁试试;

https://www.modb.pro/doc/21113

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
AWR分析报告问题求助:version_count超过500,存在严重的高版本问题,请确认SQL是否使用过多绑定变量或者遇到BUG
回答 7
开始不知道可以下载AWR,没看到SQL
如何授权可以让普通用户执行dbms_spm 包, 不能授权dba角色?
回答 1
已采纳
GRANTADMINISTERSQLMANAGEMENTOBJECTtoUSER;
请教大神:两个oracle12c数据库,字符集不同,a库是we8mswin1252字符集,b库是al32utf8字符集,我想在b库中通过dblink往a库某表中插入或更新记录,插入后的记录要在a库中正常显示不乱码?应该如何处理呢?插入或更新的是中文字
回答 2
在插入时,将你的客户端的lang改为we8mswin1252字符集再插入即可。
Oracle 19c如何准确查出所有坏块是哪些对象
回答 2
1、根据V$DATABASEBLOCKCORRUPTION中的信息确定坏块类型SELECT tablespacename, segmenttype, owner,&nbs
非归档情况下如何强制online,被offline的数据文件
回答 1
应该没有强制online,你可以先recover一下,然后online试试能不能online上。如果online不上来,那应该只能通过bbed修改被下线数据文件的scn号的方式来上线数据文件了。
standby和主库正常同步后。关于standby shutdown immediate关闭的问题
回答 1
这个是正常现象,为了保证数据库的一致性,正常,数据库正常关闭,数据库会自己做ckpt,把控制文件,数据头文件中的school都更新成一致,非正常关闭,没有做ckpt,必须到redo里面读取数据进行re
多实例数据库,它们的sga是共享的还是分别独立的?
回答 3
已采纳
你的实例如果说是按照端口来划分的那种(也就是俗称的instance的)。那么每个是独立的。不过不推荐这样。你还不如用多个schema在一个数据库实例上。或者用PDB模式。如果说是PDB模式的话,每个P
dmfldr可以导出oracle数据吗?
回答 1
给你个示例:1、打开dmfldr软件并创建一个新项目。2、在“新建连接”对话框中,选择“Oracle”连接器类型,并输入连接信息,例如主机名、端口号、数据库名称、用户名和密码等。单击“测试连接”按钮以
查询当前和历史的IO 占用高sql
回答 1
已采纳
A:利用awr报告1、打一份awr报告2、找到topsql3、查看topsql中的orderbyread。B:利用sql语句selecta.sqlid,a.module,a.diskread,a.ex
oracle错误ERROR ORA-12162,这是怎么回事?
回答 2
已采纳
我看你这个意思是想将SELECTfroma;输出的值返回出来,可以试试这样写:sqlplusStapdata/tapdata<<EOFspoolselect.txtsetline222SE