oracle wait event:cursor: pin S wait on X
cursor: pin S wait on X等待事件的处理过程
http://database.ctocio.com.cn/tips/114/8263614_1.shtml
cursor: pin S wait on X等待!
http://www.itpub.net/viewthread.php?tid=1003340
解决cursor: pin S wait on X 有什么好办法:
http://www.itpub.net/thread-1163543-1-8.html
cursor: pin S wait on X:
http://space.itpub.net/756652/viewspace-348176
cursor: pin S:
http://yumianfeilong.com/html/2008/11/01/254.html
OTN的解释,
cursor: pin SA session waits on this event when it wants to update a shared mutex pin and another session is currently in the process of updating a shared mutex pin for the same cursor object. This wait event should rarely be seen because a shared mutex pin update is very fast.(Wait Time: Microseconds)
Parameter Description
- P1 Hash value of cursor
- P2 Mutex value (top 2 bytes contains SID holding mutex in exclusive mode, and bottom two bytes usually hold the value 0)
- P3 Mutex where (an internal code locator) OR’d with Mutex Sleeps
Oracle10g中引用的mutexes机制一定程度的替代了library cache pin,其结构更简单,get&set的原子操作更快捷。
它相当于,每个child cursor下面都有一个mutexes这样的简单内存结构,当有session要执行该SQL而需要pin cursor操作的时候,session只需要以shared模式set这个内存位+1,表示session获得该mutex的shared mode lock.可以有很多session同时具有这个mutex的shared mode lock;但在同一时间,只能有一个session在操作这个mutext +1或者-1。+1 -1的操作是排它性的原子操作。如果因为session并行太多,而导致某个session在等待其他session的mutext +1/-1操作,则该session要等待cursor: pin S等待事件。
当看到系统有很多session等待cursor: pin S事件的时候,要么是CPU不够快,要么是某个SQL的并行执行次数太多了而导致在child cursor上的mutex操作争用。如果是Capacity的问题,则可以升级硬件。如果是因为SQL的并行太多,则要么想办法降低该SQL执行次数,要么将该SQL复制成N个其它的SQL。
- select /*SQL 1*/object_name from t where object_id=?
- select /*SQL 2*/object_name from t where object_id=?
- select /*SQL …*/object_name from t where object_id=?
- select /*SQL N*/object_name from t where object_id=?
这样就有了N个SQL Cursor,N个Mutex内存结构,就将争用分散开来,类似partition的作用了。
实际测试效果很明显,当仅一个SQL Cursor的时候,并行执行等待cursor: pin S较高。
Top 5 Timed Events Avg %Total
~~~~~~~~~~~~~~~~~~ wait Call
Event Waits Time (s) (ms) Time
—————————————–
cursor: pin S 460,124 223 0 63.9
CPU time 121 34.6
latch free 173 5 29 1.5
db file sequential read 54 0 2 .0
control file parallel write 27 0 2 .0
——————————————
当分解为5个SQL再次测试同样的压力,cursor: pin S 等待大大减少。
Top 5 Timed Events Avg %Total
~~~~~~~~~~~~~~~~~~ wait Call
Event Waits Time (s) (ms) Time
——————————–
CPU time 75 60.4
cursor: pin S 115,159 33 0 26.2
latch free 175 16 90 12.7
cursor: pin S wait on X 25 1 29 .6
db file parallel write 38 0 2 .0
——————————–
如果使用SQLPLUS测试,则无上述效果。拆分SQL后仍然要等待很多cursor: pin S。因为sqlplus在返回纪录的时候默认调用BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES); END;而导致在该SQL上的mutex 竞争。
如果配合上cursor_space_for_time,则效果更好。
Same work load, same parallel degree, cursor_space_for_time=TRUE and only 1 SQL statement
Top 5 Timed Events Avg %Total
~~~~~~~~~~~~~~~~~~ wait Call
Event Waits Time (s) (ms) Time
—————————————– ———— ———– —— ——
CPU time 62 75.5
latch free 171 9 54 11.4
cursor: pin S wait on X 162 4 23 4.6
db file sequential read 1,184 3 2 3.5
os thread startup 2 1 584 1.4
————————————————————-
Same work load, same parallel degree, cursor_space_for_time=TRUE and 5 different SQL statement
Top 5 Timed Events Avg %Total
~~~~~~~~~~~~~~~~~~ wait Call
Event Waits Time (s) (ms) Time
—————————————– ———— ———– —— ——
CPU time 58 99.4
latch free 145 0 2 .4
db file sequential read 11 0 4 .1
control file parallel write 20 0 2 .1
log file sync 1 0 9 .0
————————————————————-
可见mutex和cursor_space_for_time有互补性,在execution特别高的系统中或许值得考虑。
如上为10.2.0.3中的测试
<!-- Start of add bookmark buttons created by wp_addbookmarks. Plugin by http://www.thinkagain.cn/ -->
分享到:
相关推荐
Oracle Wait Interface性能诊断与调整实践指南 oracle press
### Oracle Wait Interface (OWI)性能诊断与调整实践指南 #### 一、Oracle Wait Interface (OWI)概述 Oracle Wait Interface(简称OWI)是Oracle数据库管理系统中的一个重要组成部分,主要用于监控和诊断数据库...
Oracle 9i, 10g, 11g编程艺术:深入数据库体系结构(第二版)源码 Expert Oracle Database Architecture: Oracle Database Programming 9i, 10g, and 11g Techniques and Solutions, Second Edition
oracle常见等待事件,很详细,html格式。
Oracle Wait Interface是Oracle数据库性能优化的关键概念之一,它是一个强大的工具,帮助数据库管理员和开发人员理解数据库系统的运行状况。在Oracle数据库中,等待事件(Wait Events)是衡量系统性能的重要指标,...
2013 Oracle技术嘉年华:What-is-new-on-12c-short_Francisco.pdf 2013 Oracle技术嘉年华:甲方运维经验-暨Oracle DBA优化最佳实践_侯圣文.pdf 2013 Oracle技术嘉年华:设计高效的SQL_Jonathan(英文版).pdf 2013 ...
Oracle内部资料: Oracle RAC 培训资料汇集(3个PPT) 1.Oracle真正应用集群_(RAC)_10g的新特性.ppt 2.Oracle真正应用集群_(RAC)_最佳实践.ppt 3.Oracle真正应用集群的成功:可扩展性、低成本和高可用性.ppt
标题中的“Oracle Wait Interface性能诊断与调整实践指南-中文版”指的是这本书是关于Oracle数据库性能优化的实用手册,尤其侧重于使用等待界面(Wait Interface)进行诊断和调整。Oracle Wait Interface(OWI)是...
大话Oracle RAC:集群、高可用性、备份与恢复(带目录清晰中文完整版)
《Oracle性能优化绝版好书:高级OWI与ORACLE性能调整》这本书深入探讨了Oracle数据库性能优化的关键技术和策略,特别关注了Oracle Wait Interface (OWI)和性能调整的实践应用。OWI是Oracle数据库中用于监控和诊断...
在Oracle数据库系统中,"pkg_XXX.rar_oracle_oracle record cursor" 提供了一个学习和参考的案例,涉及到了存储过程、游标(cursor)、记录(record)以及动态SQL和临时表的使用。这些概念是Oracle数据库编程的核心...
在Oracle数据库管理与优化的过程中,`v$session`与`v$session_wait`视图扮演着至关重要的角色,它们提供了关于当前活动会话及其等待事件的详细信息,这对于诊断性能问题、理解数据库行为以及进行有效的资源管理至关...
大话Oracle RAC:集群、高可用性、备份与恢复。 此书被认为不可多得的好资料之一:大话Oracle RAC(PDF经典),看完之后深有感触,发出来共享一下。
Oracle游标是数据库管理系统中非常重要的一个概念,它在处理SQL查询时扮演着核心角色,尤其是在需要逐行处理结果集的场景下。Oracle游标允许我们动态地控制和操作查询的结果,使得我们可以按需处理每一行数据,而不...
String url = "jdbc:oracle:thin:@hostname:port/service_name"; String username = "your_username"; String password = "your_password"; Connection conn = DriverManager.getConnection(url, username, password...
在本案例中,"cursor: pin S wait on X"事件的频繁发生导致了sysaux表空间的膨胀,这通常与数据库的游标管理有关。wrh$_active_session_history表存储了这些事件的详细信息,它是由AWR创建并维护的。 1. **AWR的...
private static String DB_CONNECT_STR = "jdbc:oracle:thin:@10.25.18.29:1593:test"; private static String DB_USER = "scott"; private static String DB_PASS = "tiger"; public static DBUtil dbUtil = ...