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