-
oci8.connection_class
string
-
このユーザー定義テキストは、接続プールの下位区画への Oracle
データベース常駐接続プーリング (DRCP) 接続によって使用されます。
これにより、DRCP コネクションプールのサブパーティショニングが可能になり、
アプリケーションによる OCI8 持続的接続で、
前の PHP スクリプト由来のデータベース・セッションを再利用できます。
その結果、より良い拡張性が得られます。
異なる接続クラスで以前に使用された処理をプールしたデータベースをアプリケーションで使用する際に、
既定の Oracle 日付フォーマットのようなセッション設定はリセットされます。
これにより、異なるアプリケーションの間で情報を思いがけずに共有することを防ぎます。
接続する前に、 ini_set で実行時に
値を設定できます。
DRCP を使用するには、 OCI8 は Oracle 11g (またはそれ以降の) ライブラリとリンクされ、
データベースは Oracle 11g (またはそれ以降)でなければいけません。
接続プールはデータベース内で有効にしなければいけません。
oci8.connection_class
は、
同一のアプリケーションを稼動する web サーバーの全てで同じ文字列を設定しなければいけません。
そして、 OCI8 接続文字列 はプールされたサーバーを使用することを指定しなければいけません。
アプリケーションは持続的接続を使うべきです。
-
oci8.default_prefetch
int
-
このオプションは、データベースからのデータに対する低レベルの
要求が作成されたときにいつでも自動的にフェッチされ、キャッシュ
されるデフォルトの追加行数を設定します。
プリフェッチを無効にするには、値を 0
に
設定します。
プリフェッチ値は、 oci_fetch_array
のような関数がユーザーに返す行数を変えません。
行のプリフェッチ及びキャッシングは OCI8 の内部で取り扱われます。
その値は、ステートメント実行の前に oci_set_prefetch
でステートメントごとに設定できます。
Oracle Database 12c (またはそれ以降)では、PHP で設定したプリフェッチの値を
Oracle のクライアント設定ファイル oraaccess.xml
で上書きできます。
詳細は、Oracle のドキュメントを参照ください。
注意:
プリフェッチをより大きくすると、メモリ使用量の増加と引き替えに
パフォーマンスの改善につながります。
大量のデータを返す照会に対しては、パフォーマンスの利点は重要な意義を持てます。
-
oci8.events
bool
-
On
を使うと、 PHP でデータベースの
Fast Application Notification (FAN) イベントが通知されます。
FAN 無しでは、データベース・インスタンスやマシン・ノードが予期せず故障した際、
PHP アプリケーションは、 TCP タイムアウトの満期になるまでデータペースのレスポンスを待って
ブロックされてしまうかもしれません。
FAN イベントにより、確立したデータベース接続に影響する故障が
PHP アプリケーションに素早く通知されます。
OCI8 拡張モジュールでは、
持続的接続キャッシュ内の利用されていない接続をクリーンアップします。
On
を使う際は、 FAN イベントをポストするように
データベースも構成しなければいけません。
FAN サポートは、 OCI8 が Oracle 10gR2 以降のライブラリとリンクされ、
Oracle データベース 10gR2 以降に接続する場合に利用できます。
-
oci8.max_persistent
int
-
PHP プロセスあたりの持続的な OCI8 接続の最大値を指定します。
このオプションを -1 に設定することは、制限なしを意味します。
-
oci8.old_oci_close_semantics
bool
-
このオプションは oci_close
の動作を制御します。有効にすると、oci_close
は何も行いません。接続はスクリプトの終了まで閉じられません。
これは後方互換性のためのみに存在しています。
この設定を有効にする必要があると判明した場合、
このオプションを有効にする代わりに、
アプリケーションで oci_close を調整することが
強く推奨されます。
-
oci8.persistent_timeout
int
-
アイドル状態の持続的接続を PHP プロセスが開いたままにする最大秒数
を指定します。
このオプションを -1 に設定すると、 PHP 処理が終了するか、または
接続が oci_close で明示的に終了されるまで、
アイドル状態の持続的接続が保持されます。
注意:
PHP では、アイドル状態のリソースの消滅は、警報ベースではありません。
PHP がスクリプト処理を終了して、リソースの最終使用タイムスタンプをチェックする際に発生します。
そのため、 (OCI8 関係に限らず) PHP 処理内で何らかの活動がある場合にのみ、
アイドル状態の接続が閉じられるというパラドックスがあります。
PHP のプロセスが複数ある場合は、
それぞれを個別にアクティブにしないと
アイドル状態のリソースを消すことができません。
Oracle 11g でデータベース常駐接続プーリング (DRCP) が導入されたことにより、
oci8.max_persistent
や oci8.persistent_timeout
が以前に克服しようとしたメモリ及びリソースの問題が解決されます。
-
oci8.ping_interval
int
-
oci_pconnect の間、ping
を発行するまでに経過させる秒数を指定します。
ping はデータベース接続が有効か確認します。
0 に設定した場合、持続的接続は oci_pconnect が
呼び出される度に ping を発行します。
ping を完全に無効にするためには、このオプションを -1 に設定します。
注意:
ping を無効にすることにより oci_pconnect
は最高の効率で処理できますが、ネットワークの脱落や
PHP が接続した後に Oracle データベースがダウンした場合、
その後のスクリプトで接続が使われるまで
利用できない接続を PHP は検出できないでしょう。
詳細な情報は oci_pconnect を参照ください。
-
oci8.prefetch_lob_size
int
-
これは、LOB データの内部バッファに影響するチューニングパラメータです。
この値を増やすと、PHP とデータベース間の小さな LOB
データの読み書きに掛かる時間が減り、パフォーマンスが向上します。
メモリ使用量も変化します。
この値は、OCILob のインスタンスが返す LOB や、
OCI_RETURN_LOBS
を使って返される
LOB に影響します。
この値は、ステートメントを実行する前に、
oci_set_prefetch_lob を使ってステートメント単位で設定できます。
注意:
Oracle Database 12.2 以降で利用可能です。
-
oci8.privileged_connect
bool
-
このオプションにより特権のある外部の信用
(OCI_SYSOPER
, OCI_SYSDBA
)
を利用して接続できます。
注意:
これを On
に設定することにより、
適切な OS ユーザー権限で稼動している Web サーバー上のスクリプトで
データベースのパスワードを必要とせずに、
特権を持つデータベース・ユーザーとして接続できます。
これはセキュリティーのリスクになりえます。
-
oci8.statement_cache_size
int
-
このオプションはステートメントキャッシュを有効にします。
また、キャッシュするステートメントの数を指定します。
ステートメントキャッシュを無効にする場合、このオプションを 0
に設定してください。
ステートメントキャッシングにより、
ステートメント・テキストをデータベースに渡したり、
ステートメントに関するあらゆるメタデータを PHP に戻したりする必要性がなくなります。
これにより、接続の有効期間中、ステートメントを再利用するアプリケーションで、
全体的なシステム・パフォーマンスを大幅に向上させられます。
一部の特別なデータベース "カーソル" では、
ステートメントが再利用されるであろうという仮定の下に、
開いたまま保たれるかもしれません。
アプリケーションで使用されるステートメントのワーキングセットのサイズに
この値を設定します。小さすぎる値を設定すると、
それらが再利用される前にキャッシュからステートメントがフラッシュされる結果になります。
このオプションは、持続的接続の利用の多くの場合に役立ちます。
Oracle Database 12c (またはそれ以降) では、
この値はOracle クライアントの oraaccess.xml
で自動的に設定されます。
詳細は、Oracle のドキュメントを参照ください。