“ulimit -a”コマンドで確認できる”stack size”の値が、インスタンス起動時、サーバープロセス起動時(ローカル接続)、リスナー起動時とで値が異なっている場合、ORA-27123等のリスナーとDB間の接続に問題が生じるという報告があります。
この問題は、各実行時における”stack size”の値を同じ値に揃えることで解決します。
LifeKeeper環境で、各”stack size” の値を揃えるには、以下の手法を参考としてください。
【インスタンス実行時のスタックサイズ設定】
インスタンス実行時のスタックサイズは、”/etc/default/LifeKeeper”ファイルに、”LK_DATABASE_STACKSIZE”パラメータを追記することで設定可能です。”LK_DATABASE_STACKSIZE”パラメータのデフォルト値は32768です。
/etc/default/LifeKeeper:
===================
LK_DATABASE_STACKSIZE=32768
===================
【リスナーとインスタンスのスタックサイズ設定】
リスナーとインスタンスに任意のスタックサイズを指定するには、oracle管理ユーザーの.bash_profile内でulimitコマンドを実行してください。
oracle管理ユーザーの .bash_profile:
===================
ulimit -s 32768
===================
※Oracle ARKは、インスタンスやリスナーの起動処理を行う際に”su – oracl管理ユーザ名”を実行して、oracle管理ユーザに切り替えています。
.bash_profile内のulimitコマンドでstack sizeを指定する場合は、上記の”LK_DATABASE_STACKSIZE”で指定した値と同じ値を指定して下さい。
なお、Oracle ARK v6.3.1以降ではインスタンスとリスナーが別のリソースとして管理されており、その影響でインスタンス起動時とリスナー起動時に異なるスタックサイズが適用されます。
v6.3.1以前のOracle ARKでは、インスタンスとリスナーは一つのリソースとして処理され、両者には同じスタックサイズが適用されていましたので、この問題は発生いたしません。
また、上記内容と同様の処理が Oracle ARK v6.4.2 から実装されました。従って、対処が必要なバージョンは、Oracle ARK v6.3.1 から Oracle ARK v6.3.2 迄となります。