Home  >  Article  >  Database  >  单实例非ASM中 CSS initialization等待事件解决

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

WBOY
WBOYOriginal
2016-06-07 15:53:561133browse

CSS initialization 代表有进程在向CSS进行注册。但数据库是单实例,且数据库也没有使用ASM,那么为什么会出现CSS initializatio

环境描述:Oracle 11.2.0.4  单实例

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

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

Total Wait Time (sec)Wait Avg(ms)% DB timeWait Class

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

如何将ASM中的数据文件复制到操作系统中

Oracle 11g RAC ASM磁盘全部丢失后的恢复

Oracle 11g从入门到精通 PDF+光盘源代码

RHEL6 ASM方式安装Oracle 11g R2

Oracle 10g 手工创建ASM数据库

Oracle 10g R2创建ASM实例Step By Step

本文永久更新链接地址

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn