單一實例非ASM中 CSS initialization等待事件解決

來源:互聯網
上載者:User

單一實例非ASM中 CSS initialization等待事件解決

環境描述:Oracle 11.2.0.4  單一實例

作業系統:Microsoft(R) Windows(R) Server 2003 Enterprise x64 Edition

以下是資料庫AWR中的TOP等待事件:

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<to_date('201507081420','yyyymmddhh24mi')

    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

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.