首页 » ORACLE » After remote_listener change to null, frequently getting message ‘* service_update * ‘ in listener.log, pmon spin

After remote_listener change to null, frequently getting message ‘* service_update * ‘ in listener.log, pmon spin

也是以前遇到的案例,今天有时间整理记录一下,一套10.2.0.5 RAC ON HPUX, 前做时间Disable LB 参数调整时把remote_listener=”, 随后几天发现listener.log 空间增速异常的快,当时看了下里面多是service_update的信息, 查看top进程,也发现了pmon 进程一直是top 1,使用 cpu 100%, 开始以为是用户新建连接多,负载高,pmon进程向listener 注册load信息频繁了些,但是后来发现一直保护这样的状态,而且有时tsnping 延时比较大,所以判断应该是pmon进程出了问题。

# alert log 中 记录不久前刚做的以下操作

SQL> ALTER SYSTEM SET remote_listener='' SCOPE=BOTH;

# listener log

#tail -f  anbob_anbobdbb.log
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:18 * service_update * anbob1 * 0
07-JAN-2015 14:51:19 * service_update * anbob1 * 0
07-JAN-2015 14:51:19 * service_update * anbob1 * 0
07-JAN-2015 14:51:19 * service_update * anbob1 * 0

# fgrep "07-JAN-2015 13:" anbob_anbobdbb.log |fgrep "service_update" |awk '{print $1 " " $2}' |awk -F: '{print $1 ":" $2 }' |sort |uniq -c
15735 07-JAN-2015 13:00
16233 07-JAN-2015 13:01
16401 07-JAN-2015 13:02
16632 07-JAN-2015 13:03
16674 07-JAN-2015 13:04
16506 07-JAN-2015 13:05
16632 07-JAN-2015 13:06
16632 07-JAN-2015 13:07
16603 07-JAN-2015 13:08
16620 07-JAN-2015 13:09
16400 07-JAN-2015 13:10
16842 07-JAN-2015 13:11
16779 07-JAN-2015 13:12
16758 07-JAN-2015 13:13
16821 07-JAN-2015 13:14
16653 07-JAN-2015 13:15
16548 07-JAN-2015 13:16
16548 07-JAN-2015 13:17
16527 07-JAN-2015 13:18
...

# fgrep "07-JAN-2015 13:" anbob_anbobdbb.log  |fgrep "establish" |awk '{print $1 " " $2}' |awk -F: '{print $1 ":" $2 }' |sort |uniq -c

  70 07-JAN-2015 13:00
  17 07-JAN-2015 13:01
  16 07-JAN-2015 13:02
  11 07-JAN-2015 13:03
  11 07-JAN-2015 13:04
  28 07-JAN-2015 13:05
  10 07-JAN-2015 13:06
   5 07-JAN-2015 13:07
  16 07-JAN-2015 13:08
  12 07-JAN-2015 13:09
  10 07-JAN-2015 13:10
  19 07-JAN-2015 13:11
  10 07-JAN-2015 13:12
  11 07-JAN-2015 13:13
  10 07-JAN-2015 13:14
  26 07-JAN-2015 13:15
  20 07-JAN-2015 13:16
...

TIP:
从监听日志中可以看到连接请求每份钟不过20左右, 但是service_update 每分钟高达16000左右, 当时忘记收集pmon 的信息。

MOS 中有note 记录非常的像,但是版本号是11.1, 不过也不排除10.2.0.5 上发生,因为这两版本发行的很近。
After REMOTE_LISTENER change, excessive CPU seen for TNS listener process (文档 ID 982068.1)
Symptoms
After altering the value of the parameter REMOTE_LISTENER, excessive CPU is seen for the TNS listener process (TNSLSNR) and the listener.log file grows rapidly.
Alert log confirms the REMOTE_LISTENER parameter in the SPFILE was altered.
Listener.log shows continuous service_update triggered from PMON to the TNS listener, 100’s per second.
REMOTE_LISTENER had been set to null twice

Cause
Bug 9235880Alter of REMOTE_LISTENER parameter causes service update spinn

Solution
Bug is being worked on by development.
Do not set REMOTE_LISTENER to Null if already Null
Workarounds
If REMOTE_LISTENER is required to by Null, set to value before setting to Null
ALTER SYSTEM SET remote_listener=’example.com’ SCOPE=BOTH;
ALTER SYSTEM SET remote_listener=” SCOPE=BOTH;
Or set to a false value
ALTER SYSTEM SET remote_listener=’example2.com’ SCOPE=BOTH;

Note:
那就尝试配置一个false value
1, 先在tnsnames.ora增加 test 别名 ,指向一个不存在的ip和服务名
2,修改remote_listener=test
ALTER SYSTEM SET remote_listener=’test’ SCOPE=BOTH sid=’anbob1′;
ALTER SYSTEM SET remote_listener=’test’ SCOPE=BOTH sid=’anbob2′;

随后发现listener.log里的service_update 立及恢复了正常,pmon 进程也从top 20 cpu 进程中消失, 问题得以解决。

打赏

对不起,这篇文章暂时关闭评论。