Oracle 統合データベースで Mobile Link を使用するときのカーソルの最大数の決定方法

Oracle データベースに対して Mobile Link を使用するときに使用するカーソルの数を決定するのが難しい場合があり
ます。この技術ドキュメントでは、最適な開始値の決定方法について説明します。

必要なソフトウェア

1. Mobile Link 9.0.x
2. Oracle バックエンド

注意

このドキュメントは、以下のエラーが表示されていることを想定しています。

“[-10002] ODBC: [DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-01000:
maximum open cursors exceeded(最大オープン・カーソル数を超えました。)”

このプロセスを実稼働環境に適用する前に、テストを行うことを強くおすすめします。デフォルトでは、Oracle での初期カーソル値には 300 が設定されています。

ヒント:テストによりパフォーマンスへの影響がごくわずかであることがわかっているため、準備文のキャッシュを無効にすることをおすすめします。Mobile Link のバージョン 10.0.x では、準備文のキャッシュが無効になっています。Mobile Link のコマンド・ラインで -ps 0 を指定してもこの機能を無効にできます。無効にすれば、カーソルの最大数に関する問題が起きなくなります。

イントロダクション

最大カーソル値は、アプリケーションが使用する ODBC 準備文の数と一致します。デフォルトでは、バージョン 9.0.2 の Mobile Link サーバは、準備文をキャッシュします。準備文のキャッシュを続けて使用したい場合は、Mobile Link サーバが使用する準備文の最大数を求める必要があります。この数は、以下の 2 つの要素によって決まります。

  1. 同期において使用される準備文の総数 (TPS)。これには、スクリプト・バージョンで定義するスクリプトと、Mobile Link サーバが使用する内部スクリプトの両方が含まれます。
  2. Mobile Link サーバによってキャッシュされた使用中の ODBC 接続の最大数。これは、-cn値 (CN) です。-cn が指定されていない場合は -w です。

以下の計算式により、最大カーソル値を求めることができます。

Max Cursor = TPS x CN

例:

  1. コマンド・ラインの -w オプションを確認します (-w 20 など。-cn が指定されていない場合)。
  2. イベントが 4 個のテーブルが 3 個あるとします。最低 12 個の準備文が必要です。この数は、テーブル数にイベント数を掛け、それに Mobile Link が使用する内部文用の定数値を足して求めます。この例では、定数値 8 を使用します。つまり、20 個の準備文が必要です。したがって、最大カーソルの開始値は 20 x 20 = 400 になります。

これは、まず最初に行う計算にすぎません。この設定をテストする必要があります。テストしたら、値を増やす必要があることがわかる場合があります。スクリプト・バージョン内のスクリプト数を求めるには、Mobile Link システム・テーブルを照会します。

SELECT COUNT( script_id ) FROM ml_script;

ヒント:デフォルトでは、Oracle でのオープン・カーソルには 300 が設定されています。この値を超えないようにするために、-ps の値に open_cursors パラメータよりも小さい値を設定してください。そうすれば、Mobile Link が、Oracle データベースが対応できる最大数のオープン・カーソルを使用するのを防ぐことができます。