GoldenGate11g長交易造成CPU負載高

lpwebnet發表於2014-02-08
       使用Quest PA監控,發現資料庫伺服器CPU資源消耗很大,原先CPU的負載差不多30%多,但最近一段,高達60%。從監控資訊可以看出是Goldgate使用者等待事件SQL*NET more data to/from client等待消耗CPU資源非常大。
      首先想到一點是檢
查是否存在僵死程式:
SQL>select spid from v$process where addr not in (select paddr from v$session)
      輸出結果中,我們發現存在兩個僵死程式,透過kill -9將其程式清除。
      然後將GG中extract程式重啟:
ggsic>info all;
ggsci
>stop extract *
     
輸出結果發現兩個抽取程式存在長交易無法正常停止程式,需要進一步定位是什麼長交易session:
GGSCI> send extract EXTXXXX, showtrans thread 1
Sending showtrans request to EXTRACT EXTDXXXX ...
Oldest redo log files necessary to restart Extract are:
Redo Thread 1, Redo Log Sequence Number 31144, SCN 3108.3631174241 (13352389530209), RBA 123683344
Redo Thread 2, Redo Log Sequence Number 28782, SCN 3193.2127650774 (13715958226902), RBA 332887056
------------------------------------------------------------
XID:                  24.0.4087185
Items:                0        
Extract:              EXTDXXXX
Redo Thread:          1      
Start Time:           2013-11-14:21:27:12  
SCN:                  3108.3631174241 (13352389530209)  
Redo Seq:             31144
Redo RBA:             123683344           
Status:               Running             
------------------------------------------------------------
XID:                  27.20.3177181
Items:                0        
Extract:              EXTXXXX
Redo Thread:          1      
Start Time:           2013-11-14:21:30:31  
SCN:                  3108.3631249907 (13352389605875)  
Redo Seq:             31144
Redo RBA:             130199568           
Status:               Running            

     
    從輸出結果可以看出有兩個交易啟動時間已經長達2個多月,很明顯處於不正常狀況,需要進一步確認執行語句:
SQL>select addr, start_time from v$transaction where xidusn=27; (透過以上輸出XID獲取第一位數值)
  ADDR                    START_TIME
-------------------------- --------------------
0700000E998CE528 11/14/13 21:30:30

SQL>select sid, command,sql_id from v$session where taddr in (select addr from v$transaction where xidusn=27)
        SID    COMMAND SQL_ID
---------- ---------- -------------
      4202          2 dd2jh9ht3h4fy

SQL> select sql_text from v$sqlarea where sql_id='dd2jh9ht3h4fy'
insert into xxx@dblink values xxxxxxxxxxxxx

SQL> select spid from v$process where addr in (select paddr from v$session where sid=4202);
SPID
------------------------
24183256

     從以上執行結果可以看出,長連線交易的SQL語句是透過dblink插入一張表的資料,而恰好給session造成SQL*NET more data to/from client等待時間很長,消耗大量CPU等待時間。透過作業系統命令,將該程式kill。
  

 

        

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17172228/viewspace-1077913/,如需轉載,請註明出處,否則將追究法律責任。

相關文章