宕机问题排查

一、连接池爆满

问题现象:

weblogic.jdbc.extensions.PoolLimitSQLException: weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool zh_DS to allocate to applications, please increase the size of the pool and retry..

 

排查手段:

重启前使用以下脚本排查

--排查当前会话中正在执行次数最多的

select count(*),v.machine,v.SCHEMANAME, v.PREV_SQL_ADDR, v.PREV_HASH_VALUE

from v$session v

where v.SCHEMANAME = 'HSTA3'

group by v.PREV_SQL_ADDR, v.PREV_HASH_VALUE,v.machine,v.SCHEMANAME

order by count(*) desc;

--000007FF3B7368E0   1571443193

select s.* from v$sql s where s.ADDRESS='AA48B878' and s.HASH_VALUE='77069167';

 

根据SQL找对应的代码观察是否关闭连接

二、AWR报告分析SQL性能

1.首先需要进入oracle用户,linux命令:su oracle,可以看到从root用户改为oracle用户

https://files.jb51.net/file_images/article/201705/2017050817104449.png

2.然后进去sql命令行

sqlplus / as sysdba

https://files.jb51.net/file_images/article/201705/2017050817104450.png

3.可以再连接,或者再测试一下

conn /as sysdba

https://files.jb51.net/file_images/article/201705/2017050817104451.png

4.进入oracle报告选项中

@?/rdbms/admin/awrrpt.sql

https://files.jb51.net/file_images/article/201705/2017050817104452.png

5.Enter value for report_type: 这个显示的意思是打印一个报告是以什么格式打印的,要么输入html,要么输入text,如果直接默认回车,这里是html

这里直接默认回车,也就是直接采用默认的html

https://files.jb51.net/file_images/article/201705/2017050817104453.png

6.Enter value for num_days: 这里的提示是让我们输出几天的报告,如果写1就输出1天,如果2就是两天

https://files.jb51.net/file_images/article/201705/2017050817104454.png

7.Enter value for begin_snap: 出入起始的快照ID,这里指的是打印出来的snap id,后面有snap started开始的时间

输入一个起始的快照,输出一个结束的快照id(本处起始id3739,结束id3740,也就是从22:30-2240,中间10分钟的间隔),这样就将两个时间段内的oracle报告输出

(一般用法,性能测试时,先手工拍摄一张快照,或者调低自动快照的时间,然后执行压测脚本,再手工拍摄之类,取压测前后的快照id,这样既可导出压测期间的结果)

https://files.jb51.net/file_images/article/201705/2017050817104455.png

8.Enter value for report_name: 输入一个报告的名字

比如test.html,不输入就是默认的

https://files.jb51.net/file_images/article/201705/2017050817104456.png

9.再按exit退出命令行模式,就可以在该目录下生成一个目录报告

https://files.jb51.net/file_images/article/201705/2017050817104457.png

把这个html下载下来,用浏览器打开即可看到awr测试报告!

 

三、SQL执行计划

F5查看SQL执行计划

四、内存溢出

set JAVA_OPTIONS=%JAVA_OPTIONS%
后面加上-verbose:gc -Xloggc:log\gc.log -XX:+PrintGC

 

java -Xmx800m -jar ha422.jar  查看gc日志

 

五、网络检查

具体看是前端耗资源还是后端。

六、日志

日志是最有用的排查工具,需要学会看日志分析问题均要习惯从日志入手。

 

七、锁表

--查看数据库引起锁表的SQL语句:

Select a.Username,      

       a.Machine,    

       a.Program, 

       a.Sid,      

       a.Serial#,      

       a.Status,      

       c.Piece,      

       c.Sql_Text

  From V$session a,      

       V$sqltext c

 Where a.Sid In (Select Distinct T2.Sid                

                   From V$locked_Object T1,                       

                        V$session T2                

                  Where T1.Session_Id = T2.Sid)     

   And a.Sql_Address = c.Address(+)

 Order By c.Piece;

 

 

--查看被锁的表

SELECT P.SPID,

       A.SERIAL#,

       C.OBJECT_NAME,

       B.SESSION_ID,

       B.ORACLE_USERNAME,

       B.OS_USER_NAME

  FROM V$PROCESS P,

       V$SESSION A,

       V$LOCKED_OBJECT B,

       ALL_OBJECTS C

 WHERE     P.ADDR = A.PADDR

       AND A.PROCESS = B.PROCESS

       AND C.OBJECT_ID = B.OBJECT_ID;

 

八、表空间满

SELECT Upper(F.TABLESPACE_NAME)         "表空间名",

       D.TOT_GROOTTE_MB                 "表空间大小(M)",

       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",

       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')

       || '%'                           "使用比",

       F.TOTAL_BYTES                    "空闲空间(M)",

       F.MAX_BYTES                      "最大块(M)"

FROM   (SELECT TABLESPACE_NAME,

               Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,

               Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES

        FROM   SYS.DBA_FREE_SPACE

        GROUP  BY TABLESPACE_NAME) F,

       (SELECT DD.TABLESPACE_NAME,

               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB

        FROM   SYS.DBA_DATA_FILES DD

        GROUP  BY DD.TABLESPACE_NAME) D

WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME

ORDER  BY 1;

 

九、磁盘(应用)

检查web应用磁盘是否满了,也可能导致应用无法使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值