RAC CSS initialization等待事件处理

网友投稿 738 2022-09-27

RAC CSS initialization等待事件处理

RAC CSS initialization等待事件处理

环境描述:oracle 11.2.0.4  单实例  操作系统:Microsoft(R) Windows(R) Server 2003 Enterprise x64 Edition   以下是数据库AWR中的TOP等待事件:

Event

Waits

Total Wait Time (sec)

Wait Avg(ms)

% DB time

Wait Class

DB CPU

 

1546.9

 

42.7

 

log file sync

810,467

1440.1

2

39.7

Commit

db file sequential read

72,267

452.5

6

12.5

User I/O

direct path write temp

31,717

220.4

7

6.1

User I/O

CSS initialization

18

18

997

.5

Other

Disk file operations I/O

2,068

14.3

7

.4

User I/O

SQL*Net message to client

2,125,801

7.6

0

.2

Network

direct path read

716

5.9

8

.2

User I/O

control file sequential read

4,450

5.9

1

.2

System I/O

read by other session

236

5.3

23

.1

User I/O

CSS initialization 代表有进程在向CSS进行注册。但数据库是单实例,且数据库也没有使用ASM,那么为什么会出现CSS initialization?再进一步观察发现该等待事件虽然等待的次数不多,但是每次等待的事件却很长,对系统性能肯定会有影响,所以必须进行处理。接下来分析为什么会出现该等待事件。首先检查了数据库的alert日志,发现日志里面没有出现相关的错误;再到数据库里检查最近

一段时间内出现的该等待事件:

SQL> select sql_id, count(*), sum(time_waited) from dba_hist_active_sess_history where sample_time>to_date('201507080000','yyyymmddhh24mi') and sample_time

能观察到sql_id号,这样问题处理就容易多了,再继续把对应的sql找到:

SQL> select * from dba_hist_sqltext where sql_id='a6w8xy8jw0dpa'; DBID SQL_ID SQL_TEXT COMMAND_TYPE---------- ------------- -------------------------------------------------------------------------------- ------------ 901678011 a6w8xy8jw0dpa select round(sum(FREE_MB)/1024,2) as d_asm_free from v$asm_diskgroup 3SQL> select * from dba_hist_sqltext where sql_id='4ztfd8f5kk8jf'; DBID SQL_ID SQL_TEXT COMMAND_TYPE---------- ------------- -------------------------------------------------------------------------------- ------------ 901678011 4ztfd8f5kk8jf select round( 100-100*sum(FREE_MB)/sum(TOTAL_MB),2) as d_asm_usePer from v$asm 3SQL> select * from dba_hist_sqltext where sql_id='9jp5bc1p6dnfs'; DBID SQL_ID SQL_TEXT COMMAND_TYPE---------- ------------- -------------------------------------------------------------------------------- ------------ 901678011 9jp5bc1p6dnfs select round((sum(TOTAL_MB)-sum(FREE_MB))/1024,2) as d_asm_use from v$asm_disk 3

发现相关的sql都是对v$asm_diskgroup视图进行查询,因为查询针对系统视图的,怀疑可能是系统自带的job执行的,接下来进行确认

SQL> select u.user_id,u.username from dba_users u, v$sql s where s.parsing_user_id=u.user_id and s.sql_id='a6w8xy8jw0dpa'; USER_ID USERNAME---------- ------------------------------ 90 CQITJK 0 SYSSQL> select u.user_id,u.username from dba_users u, v$sql s where s.parsing_user_id=u.user_id and s.sql_id='4ztfd8f5kk8jf'; USER_ID USERNAME---------- ------------------------------ 90 CQITJKSQL> select u.user_id,u.username from dba_users u, v$sql s where s.parsing_user_id=u.user_id and s.sql_id='9jp5bc1p6dnfs'; USER_ID USERNAME---------- ------------------------------ 90 CQITJK

第一条语句的执行者包含SYS,这是由于我在排查问题是使用SYS用户执行过该语句,排除这个干扰后发现,问题sql是应用用户执行的。到此,问题基本清晰,由于应用对v$asm_diskgroup进行查询,产生了CSS initialization等待事件。数据库为单实例,且没有使用ASM,所以用户的这个查询是无意义的,只需要开发人员去掉这条sql即可。  再补充一点,单实例、非ASM数据库,应用为什么会对v$asm_diskgroup进行查询?其实可以猜测,这就是统一开发的系统,为保证通用性,其中涉及了对一些RAC及ASM视图的查询,这里正好由于这个查询导致了问题。所以,开发人员还是应该对数据库的特性进行充分了解

还有一则RAC下面大量CSS initialization等待事件,业务反应系统特别的卡,很多SQL都执行不了

select sql_id, count(*), sum(time_waited) from dba_hist_active_sess_history where sample_time>to_date('202004010000','yyyymmddhh24mi') and sample_time

可以看到业务执行的大量update操作达到13W次,而且等待时间特别长,要业务停止update语句执行然后再去看等待事件,发现CSS initialization消失了。系统也恢复正常了!还是业务原因导致的

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:装饰器与线程 有没有关系呢?
下一篇:一文详解Spring如何控制Bean注入的顺序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~