单实例非ASM中 CSS initialization等待事件解决

2015-07-23 18:08:07 · 作者: · 浏览: 1

操作系统:Microsoft(R) Windows(R) Server 2003 Enterprise x64 Edition


以下是数据库AWR中的TOP等待事件:


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

? ? and event='CSS initialization'


? ? group by sql_id;


SQL_ID COUNT(*) SUM(TIME_WAITED)


------------- ---------- ----------------


?a6w8xy8jw0dpa 5 2026455


?4ztfd8f5kk8jf 10 5463613


?9jp5bc1p6dnfs 7 4367045


能观察到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 3


SQL> 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 3


?SQL> 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 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视图的查询,这里正好由于这个查询导致了问题。所以,开发人员还是应该对数据库的特性进行充分了解。