2009年11月7日星期六

V$PROCESS 参数过小导致tuxedo服务xa_open returned XAER_RMERR错误

问题现象:
tuxedo 启动多个服务,一部分服务启动成功,一部分启动失败。

关键词:
tpopen TPERMERR xa_open returned XAER_RMERR
ORA-12520: TNS:listener could not find available handler for requested
type of server

调查发现
tuxlog中 FOO_SOMSERICE01 启动成功, FOO_SOMESERVICE02 启动失败, 日志如下

161610.foobar!FOO_SOMESERVICE01.16772.1.0: 11-07-2009: Tuxedo Version
9.1, 64-bit
161610.foobar!FOO_SOMESERVICE01.16772.1.0: LIBTUX_CAT:262: INFO:
Standard main starting
161610.foobar!FOO_SOMESERVICE02.16775.1.0: 11-07-2009: Tuxedo Version
9.1, 64-bit
161610.foobar!FOO_SOMESERVICE02.16775.1.0: LIBTUX_CAT:262: INFO:
Standard main starting
161610.foobar!FOO_SOMESERVICE02.16778.1.0: 11-07-2009: Tuxedo Version
9.1, 64-bit
161610.foobar!FOO_SOMESERVICE02.16778.1.0: LIBTUX_CAT:262: INFO:
Standard main starting
161610.foobar!FOO_SOMESERVICE02.16778.1.0: LIBTUX_CAT:466: ERROR:
tpopen TPERMERR xa_open returned XAER_RMERR
161610.foobar!FOO_SOMESERVICE02.16778.1.0: tpopen failed
161610.foobar!FOO_SOMESERVICE02.16778.1.0: LIBTUX_CAT:250: ERROR:
tpsvrinit() failed
161610.foobar!tmboot.16684.1.-2: 11-07-2009: Tuxedo Version 9.1, 64-bit
161610.foobar!tmboot.16684.1.-2: CMDTUX_CAT:825: ERROR: Process
FOO_SOMESERVICE02 at TUXNODENAME failed with /T tperrno (TPERMERR -
resource manager error)

调查 ~/bin下面的xa_NULLmmddyyyy.trc 格式的当期文件发现:

161610.16778.0:
ORA-12520: TNS:listener could not find available handler for requested
type of server

161610.16778.0:
xaolgn_help: XAER_RMERR; OCIServerAttach failed. ORA-12520.

ORACLE XA: Version 10.2.0.1.0. RM name = 'Oracle_XA'.

由此确定,应该是oracle 用户设置的 V$PROCESS参数过小的原因导致 无法连接更多。

select count(1) from V$PROCESS;

结论:

用以下语句修改数据库的processes值
alter system set processes=500 scope=spfile

(由于processes是静态参数,scope只能为spfile,在v$sgastate条件为'procesees'中可以看到会每个process会点4个字节),
重新启动数据库使新改的processes生效

没有评论: