ITPub博客

首页 > 数据库 > Oracle > GoldenGate11g长交易造成CPU负载高

GoldenGate11g长交易造成CPU负载高

Oracle 作者:yrsniper 时间:2014-01-24 00:52:31 0 删除 编辑
       使用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/9514665/viewspace-1074765/,如需转载,请注明出处,否则将追究法律责任。

下一篇: GolgenGate原理说明
请登录后发表评论 登录
全部评论

注册时间:2014-01-24

  • 博文量
    11
  • 访问量
    13962