弁財天

ゴフマン「専門家を信じるのではなく、自分自身で考えて判断せよ」

同一ホストでIPアドレスとポート番号が同じソケットができる

opmnctl: opmn start failed ? from ONS port conflict

6103ポートが使われているためONSが起動しない

ONS server initiated
BIND (Address already in use)
127.0.0.1:6103 - listener BIND failed

論点は、同一アドレスとポートでESTABLISHEDになったソケットに問題があるのか、ないのか?

$ netstat -an |grep 6103
tcp        0      0 127.0.0.1:6103              127.0.0.1:6103              ESTABLISHED

一時的な状態なら問題ない
Socket getting created with same IP and port on local host.

When multi-threaded server software accepts connection, it usually creates another socket, which communicates with newly connected client in separate thread, while original server socket is still listening for new clients in original thread. In such cases ports of both sockets are equal. So, there's no any problem.
マルチスレッド実装のListenしているサーバソケットにクライアントが接続
別スレッドを起こす前のオリジナルスレッドの状態ではIPアドレスとポート番号は同じ

一瞬、同じポートの状態になることはあっても
いつまでも同一ポート番号のままのソケットは異常だとも言える

socket()	(1)ソケット生成	
↓	
bind()		(2)ソケット登録	
↓	
listen()	(3)ソケット接続準備	
↓	
accept()	(4)ソケット接続待機	←接続要求
↓	
read()/write()	(5)受信/送信		←データ→クライアント側プログラム

bindに失敗していたのでONS以外のプロセスが6103ポートを占有していた

起動時のプロセス群のレースコンディション
ONSが6103ポートのソケット作成して6103ポートをbindする前に
java -jar oc4j.jarプロセスが6103をどういうわけかbind/listen
自分自身に接続してハングアップ
ハチャメチャな状態

ONSのLISTENポートとoc4jのポートが競合
同じ製品内のポート番号が競合

[oracle@hoge3 ~]$ netstat -pantu|grep 6103
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:6103              0.0.0.0:*                   LISTEN      24337/opmn
tcp        0      0 127.0.0.1:6103              127.0.0.1:7687              ESTABLISHED 24337/opmn
tcp        0      0 127.0.0.1:6103              127.0.0.1:7684              ESTABLISHED 24337/opmn
tcp        0      0 192.168.1.6:19368        192.168.1.6:61035        ESTABLISHED 24378/java
tcp        0      0 127.0.0.1:6103              127.0.0.1:21302             ESTABLISHED 24337/opmn
tcp        0      0 192.168.1.6:61035        192.168.1.6:19368        ESTABLISHED 1064/java
tcp        0      0 127.0.0.1:6103              127.0.0.1:24443             ESTABLISHED 24337/opmn
tcp        0      0 127.0.0.1:21302             127.0.0.1:6103              ESTABLISHED 24378/java
tcp        0      0 127.0.0.1:24443             127.0.0.1:6103              ESTABLISHED 24377/java
tcp        0      0 127.0.0.1:7687              127.0.0.1:6103              ESTABLISHED 12621/tnslsnr
tcp        0      0 127.0.0.1:7684              127.0.0.1:6103              ESTABLISHED 24408/httpd
[oracle@hoge3 ~]$


[oracle@hoge3 ~]$ ps auxww|grep 24337
oracle   16270  0.0  0.0  65368   856 pts/1    S+   16:41   0:00 grep 24337
oracle   24337  0.0  0.0 235736  3132 ?        Sl   10:45   0:02 /opt/oracle/HogeHome/opmn/bin/opmn -d
[oracle@hoge3 ~]$ ps auxww|grep 24378
oracle   16481  0.0  0.0  65368   860 pts/1    S+   16:42   0:00 grep 24378
oracle   24378  1.0  1.9 1434992 99256 ?       Sl   10:45   3:51 /opt/oracle/HogeHome/jdk/bin/java -server -Djava.security.policy=/opt/oracle/HogeHome/j2ee/OC4J_BI_Forms/config/java2.policy -Djava.awt.headless=true -Xmx512M -Xms128M -Doracle.ons.oraclehome=/opt/oracle/HogeHome -Doracle.home=/opt/oracle/HogeHome -Doracle.ons.oracleconfighome=/opt/oracle/HogeHome -Doracle.ons.clustername=C_192.168.1.6.910040.127d2492ced.-8000 -Doracle.ons.instancename=bi_2.hoge3.localdomain -Dopmn.compatible=904 -Doracle.ons.indexid=OC4J_BI_Forms.default_island.1 -Doracle.ons.uid=684263166 -Doracle.oc4j.instancename=OC4J_BI_Forms -Doracle.oc4j.islandname=default_island -DOPMN=true -jar oc4j.jar -config /opt/oracle/HogeHome/j2ee/OC4J_BI_Forms/config/server.xml -properties -properties -userThreads -ports ajp:12504,rmi:12404,jms:12604
[oracle@hoge3 ~]$ ps auxww|grep 1064
oracle    1064  0.0  0.4 545480 21740 ?        Sl   15:49   0:00 /opt/oracle/HogeHome/jdk/jre/bin/java -server -cp /opt/oracle/HogeHome/j2ee/home/lib/ojsp.jar:/opt/oracle/HogeHome/reports/jlib/rwrun.jar:/opt/oracle/HogeHome/jlib/zrclient.jar -Duser.language=en -Duser.region=US -Xmx256M oracle.reports.engine.RWEngine name=rwURLEng-0 server=rep_hoge3_oraclebi2 ORACLE_HOME=/opt/oracle/HogeHome engineimplclass=oracle.reports.urlengine.URLEngineImpl cacheDir=/opt/oracle/HogeHome/reports/cache server_ior="rep_hoge3_oraclebi2_5602395_1291186143433"
oracle   17089  0.0  0.0  65372   872 pts/1    S+   16:42   0:00 grep 1064
[oracle@hoge3 ~]$ ps auxww|grep 24377
oracle   17601  0.0  0.0  65368   864 pts/1    S+   16:42   0:00 grep 24377
oracle   24377  0.0  0.3 328212 20004 ?        Sl   10:45   0:03 /opt/oracle/HogeHome/jdk/bin/java -server -Djava.security.policy=/opt/oracle/HogeHome/j2ee/home/config/java2.policy -Djava.awt.headless=true -Doracle.ons.oraclehome=/opt/oracle/HogeHome -Doracle.home=/opt/oracle/HogeHome -Doracle.ons.oracleconfighome=/opt/oracle/HogeHome -Doracle.ons.clustername=C_192.168.1.6.910040.127d2492ced.-8000 -Doracle.ons.instancename=bi_2.hoge3.localdomain -Dopmn.compatible=904 -Doracle.ons.indexid=home.default_island.1 -Doracle.ons.uid=684263165 -Doracle.oc4j.instancename=home -Doracle.oc4j.islandname=default_island -DOPMN=true -jar oc4j.jar -config /opt/oracle/HogeHome/j2ee/home/config/server.xml -properties -ports ajp:12503,rmi:12403,jms:12603
[oracle@hoge3 ~]$ ps auxww|grep 24378
oracle   17638  0.0  0.0  65368   860 pts/1    S+   16:42   0:00 grep 24378
oracle   24378  1.0  1.9 1438604 99444 ?       Sl   10:45   3:52 /opt/oracle/HogeHome/jdk/bin/java -server -Djava.security.policy=/opt/oracle/HogeHome/j2ee/OC4J_BI_Forms/config/java2.policy -Djava.awt.headless=true -Xmx512M -Xms128M -Doracle.ons.oraclehome=/opt/oracle/HogeHome -Doracle.home=/opt/oracle/HogeHome -Doracle.ons.oracleconfighome=/opt/oracle/HogeHome -Doracle.ons.clustername=C_192.168.1.6.910040.127d2492ced.-8000 -Doracle.ons.instancename=bi_2.hoge3.localdomain -Dopmn.compatible=904 -Doracle.ons.indexid=OC4J_BI_Forms.default_island.1 -Doracle.ons.uid=684263166 -Doracle.oc4j.instancename=OC4J_BI_Forms -Doracle.oc4j.islandname=default_island -DOPMN=true -jar oc4j.jar -config /opt/oracle/HogeHome/j2ee/OC4J_BI_Forms/config/server.xml -properties -properties -userThreads -ports ajp:12504,rmi:12404,jms:12604
[oracle@hoge3 ~]$ ps auxww|grep 12621
oracle   12621  0.0  0.0  37364  2496 ?        Ssl  Nov26   0:23 /opt/oracle/HogeHome/bin/tnslsnr LISTENER -inherit
oracle   18243  0.0  0.0  65372   872 pts/1    S+   16:43   0:00 grep 12621
[oracle@hoge3 ~]$ ps auxww|grep 24408
oracle   18520  0.0  0.0  65368   860 pts/1    S+   16:43   0:00 grep 24408
oracle   24408  0.0  0.0  54876  3452 ?        Sl   10:45   0:06 /opt/oracle/HogeHome/Apache/Apache/bin/httpd -d /opt/oracle/HogeHome/Apache/Apache -U 684263167
[oracle@hoge3 ~]$

関連プロセスの状況確認のため何本もONSと接続
タイミングによってソケットが糞詰まる

Opmnctl Start Fails with "Address Already In Use" "Listener bind failed", no Matter what the ONS Ports are Changed to [ID 444411.1]

すべてのOracle製品の

$ORACLE_HOME/opmn/conf/opmn.xml
$ORACLE_HOME/opmn/opmn/conf/ons.config
を調べて

$ORACLE_HOME/opmn/opmn/conf/ons.configのポートを変えるのなら

localport=6102
remoteport=6201
などと変えるのだとか

いやーこりゃ大変だ

投稿されたコメント:

コメント
コメントは無効になっています。