ITPub博客

首页 > 数据库 > Oracle > 单实例非ASM中 CSS initialization等待事件解决

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

原创 Oracle 作者:Darren_Guo 时间:2015-07-10 15:08:16 0 删除 编辑
  环境描述: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日志,发现日志里面没有出现相关的错误;再到数据库里检查最近
一段时间内出现的该等待事件:

  1. SQL> select sql_id, count(*), sum(time_waited)
  2.      from dba_hist_active_sess_history
  3.      where sample_time>to_date('201507080000','yyyymmddhh24mi')
  4.      and sample_time<to_date('201507081420','yyyymmddhh24mi')
  5.      and event='CSS initialization'
  6.      group by sql_id;

  7. SQL_ID COUNT(*) SUM(TIME_WAITED)
  8. ------------- ---------- ----------------
  9. a6w8xy8jw0dpa 5 2026455
  10. 4ztfd8f5kk8jf 10 5463613
  11. 9jp5bc1p6dnfs 7 4367045


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

  1. SQL> select * from dba_hist_sqltext
  2.     where sql_id='a6w8xy8jw0dpa';

  3.       DBID SQL_ID SQL_TEXT COMMAND_TYPE
  4. ---------- ------------- -------------------------------------------------------------------------------- ------------
  5.  901678011 a6w8xy8jw0dpa select round(sum(FREE_MB)/1024,2) as d_asm_free from v$asm_diskgroup 3

  6. SQL> select * from dba_hist_sqltext
  7.     where sql_id='4ztfd8f5kk8jf';

  8.       DBID SQL_ID SQL_TEXT COMMAND_TYPE
  9. ---------- ------------- -------------------------------------------------------------------------------- ------------
  10.  901678011 4ztfd8f5kk8jf select round( 100-100*sum(FREE_MB)/sum(TOTAL_MB),2) as d_asm_usePer from v$asm 3

  11. SQL> select * from dba_hist_sqltext
  12.     where sql_id='9jp5bc1p6dnfs';

  13.       DBID SQL_ID SQL_TEXT COMMAND_TYPE
  14. ---------- ------------- -------------------------------------------------------------------------------- ------------
  15.  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执行的,接下来进行确认

  1. SQL> select u.user_id,u.username
  2.     from dba_users u,
  3.     v$sql s
  4.     where s.parsing_user_id=u.user_id
  5.     and s.sql_id='a6w8xy8jw0dpa';

  6.    USER_ID USERNAME
  7. ---------- ------------------------------
  8.         90 CQITJK
  9.          0 SYS

  10. SQL> select u.user_id,u.username
  11.     from dba_users u,
  12.     v$sql s
  13.     where s.parsing_user_id=u.user_id
  14.     and s.sql_id='4ztfd8f5kk8jf';

  15.    USER_ID USERNAME
  16. ---------- ------------------------------
  17.         90 CQITJK

  18. SQL> select u.user_id,u.username
  19.     from dba_users u,
  20.     v$sql s
  21.     where s.parsing_user_id=u.user_id
  22.     and s.sql_id='9jp5bc1p6dnfs';

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








来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29821678/viewspace-1728823/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-08-23

  • 博文量
    29
  • 访问量
    505844