Oracleインスタンスとリスナの接続の関係

Oracle起動中 かつ リスナ起動中 に 接続中のクライアントが、ある、とする。
このとき、リスナーを落としても、クライアントの接続は切れない。
というのは、ざっくりと流れを説明すると

  1. クライアントからリスナへ1521番へ接続要求を出す
  2. リスナはインスタンスから接続用の新しいサーバプロセスを作る(Windowsの場合はスレッドを作る)
  3. 新しく作られたサーバプロセスはランダムなTCPのポート番号で起動する
  4. インスタンスは起動したポート番号をリスナに教える
  5. リスナは起動したポート番号をクライアントに教える(最初の接続要求の返事)
  6. クライアントはリスナとの接続を切り、新しく起動したポート番号へ接続しなおす

という流れを踏む。


つまり、リスナは最初の一瞬しか接続しない。
なので、インスタンス接続中にnetstat を見れば1521番への接続はない。


とある、プログラムの動作検証をやることになり、
では、逆に、リスナ起動中にインスタンスを落としたら、どうなるか、というテストを延々とやる。。
クライアント接続。shutdown immediate.....
当然、disconnectになるんだけど。。。というのを繰り返す。。めんどくさかった。。