技術ブログ
技術ブログ
THREADED_EXECUTION によるOracleインスタンスのマルチスレッド化では、すべての Oracleプロセスがマルチスレッド化されるわけではありません。バックグラウンドプロセスDBWn、 PMON、 PSP、 VKTMや、リモート接続により生成されたサーバープロセスはマルチスレッド化されません。
[oracle@l63x64a ~]$ sqlplus sys/password as sysdba : SYS@c101##c101> SELECT s.username, 2 s.sid, 3 s.serial#, 4 p.program, 5 p.spid, 6 ps.command, 7 p.stid 8 FROM v$session s, 9 v$process p, ps 10 WHERE s.paddr = p.addr 11 AND ps.pid = spid 12 AND s.sid = (SELECT distinct sid FROM V$MYSTAT); USERNAME SID SERIAL# PROGRAM SPID COMMAND STID ---------------- ---------- ---------- ------------------------ ------------------------ ------------------------ ------------------------ SYS 64 339 oracle@l63x64a.domain 13524 ora_u005_c101 19333 [oracle@l63x64a ~]$ sqlplus sys/oracle@c101 as sysdba : SYS@c101##c101> SELECT s.username, 2 s.sid, 3 s.serial#, 4 p.program, 5 p.spid, 6 ps.command, 7 p.stid 8 FROM v$session s, 9 v$process p, ps 10 WHERE s.paddr = p.addr 11 AND ps.pid = spid 12 AND s.sid = (SELECT distinct sid FROM V$MYSTAT); USERNAME SID SERIAL# PROGRAM SPID COMMAND STID ---------------- ---------- ---------- ------------------------ ------------------------ ------------------------ ------------------------ SYS 64 357 oracle@l63x64a.domain 20108 oraclec101 20108
listener.oraに DEDICATED_THROUGH_BROKER_[リスナー名]=on を指定することで、リモート接続により生成されたサーバープロセスをマルチスレッド化できます。
[oracle@l63x64a ~]$ vi $ORACLE_HOME/network/admin/listener.ora
[oracle@l63x64a ~]$ diff $ORACLE_HOME/network/admin/listener.ora{,.BK}
11d10
< DEDICATED_THROUGH_BROKER_LISTENER=on
[oracle@l63x64a ~]$ lsnrctl reload
LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 05-8月 -2013 03:24:38
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=l63x64a.domain)(PORT=12101)))に接続中
コマンドは正常に終了しました。
[oracle@l63x64a ~]$ sqlplus sys/oracle@c101 as sysdba
  : 
SYS@c101##c101> SELECT s.username,
  2         s.sid,
  3         s.serial#,
  4         p.program,
  5         p.spid,
  6         ps.command,
  7         p.stid
  8  FROM   v$session s,
  9         v$process p, ps
 10  WHERE  s.paddr = p.addr
 11    AND  ps.pid = spid
 12    AND  s.sid = (SELECT distinct sid FROM V$MYSTAT);
USERNAME                SID    SERIAL# PROGRAM                  SPID                     COMMAND                  STID
---------------- ---------- ---------- ------------------------ ------------------------ ------------------------ ------------------------
SYS                      64        361 oracle@l63x64a.domain    13524                    ora_u005_c101            20420
リスナーを再起動せずに設定を反映できるようです。