现象:
1. 主节点仍然是online
2. dbaccess dbanem - 无法访问
3. onstat -g ntt 可以看到监听
4.onmode -P 重启监听无效
5. onmode -ky关闭数据库无效
6. onclean -ky关闭数据库
7. 数据库上有几个 session在是running状态,有IO wait线程
我没有认真分析正在运行的会话,以为应该从会话的建立上入手分析。
后来onstat -g ses0发现
Current SQL statement (19) :
select sum(studytime) as sum from XXXX where auditsituation = 1 and
( userid = '24cd6e13307747978063498b75247e19' or userid =
'b729a001bac6432792394e8178d5df76' or userid =
'99e8881e526b4f0892d91020eceea9fc' or userid =
'93f10cec13ca453595eec06d07abaec6' or userid =
'34fa9573a7504f0e916509469b640024' or userid =
'df9f4c7d52aa4e908abc22c21d3c8efa' or userid =
'87fb4966fa7f4eb1b2dfdf8d6c15f2ab' or userid =
'27c4f9e2143b44fa9c65dac8f1471ca2' or userid =
'7b7bb589a4b8419c82599bb37cd7c368' or userid =
'e5ac906d14b947508be12b42bba85ed2' or userid
这个SQL大约有40万行。
明显是这样的SQL耗尽了所有的资源,应该是poll thread的资源。
关键是如何监控poll thread是否已经不能提供服务了呢???
============================================================================================
今日又遇到一个类似的SQL
select count(*) from XXX where state = ? and ( cardno
='yYm+9X82ZXJwlliYGnmVKucqpvGD+wB9oktwJkgKw6I=' or cardno
='K0WzcJr4JnmFXJWQ0/D+KEkNRLXJU8R/W/8kYGR1jfo=' or cardno
='/c8lUegg42Fhe+jPfrmtTBeVc0rxH5XiMKzrXVFp23A=' or cardno
='hydNLudBFVQy2ZolLL+za/e32h9wWV1f2dVDNj+KHBc=' or cardno
='VcTKHUzF63/wGIbgukLl8vdevxJVsPOpxQJf3/CijXY=' or cardno
='gIt5BVE2uW6LvTq/atK1/0cJxBoTtU5gZsfs/5y7cRc=' or cardno
='n5WuPKx5dJbAM41zJ6iDndLqEFsPDHuIiDJHIxWNoFM=' or cardno
='g0/3jDc3hVfBYfnnN6N5PPt20I97SPnaJP62akQREu4=' or cardno
='Aa+NSqYpMavq1E1fblpYPJqzWWTCwPfM5HtaKpcvL7w=' or cardno
='Eeo/mEBP/mOrhy5DkJeMiUkNRLXJU8R/W/8kYGR1jfo=' or cardno
='Bj0QSz5cRBSqakUhtN4Vol/0gY61W2DqThaZvCf5Q20=' or cardn
大约有27万+行,我就想知道这么长的SQL是如何生成的呢????