<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/oci8.setup.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'oci8.configuration.php',
    1 => '実行時設定',
    2 => '実行時設定',
  ),
  'up' => 
  array (
    0 => 'oci8.setup.php',
    1 => 'インストール/設定',
  ),
  'prev' => 
  array (
    0 => 'oci8.test.php',
    1 => 'テスト',
  ),
  'next' => 
  array (
    0 => 'oci8.constants.php',
    1 => '定義済み定数',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/oci8/ini.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="oci8.configuration" class="section">
    <h2 class="title">実行時設定</h2>
    <p class="simpara">
<var class="filename">php.ini</var> の設定により動作が変化します。
</p>
    <p class="para">
     <table class="doctable table">
      <caption><strong>OCI8 設定オプション</strong></caption>
      
       <thead>
        <tr>
         <th>名前</th>
         <th>デフォルト</th>
         <th>変更可能</th>
         <th>変更履歴</th>
        </tr>

       </thead>

       <tbody class="tbody">
        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.connection-class" class="link">oci8.connection_class</a></td>
         <td>&quot;&quot;</td>
         <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
         <td class="empty">&nbsp;</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.default-prefetch" class="link">oci8.default_prefetch</a></td>
         <td>&quot;100&quot;</td>
         <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
         <td class="empty">&nbsp;</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.events" class="link">oci8.events</a></td>
         <td>Off</td>
         <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
         <td class="empty">&nbsp;</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.max-persistent" class="link">oci8.max_persistent</a></td>
         <td>&quot;-1&quot;</td>
         <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
         <td class="empty">&nbsp;</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.old-oci-close-semantics" class="link">oci8.old_oci_close_semantics</a></td>
         <td>Off</td>
         <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
         <td>PHP 8.1.0 以降は非推奨。</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.persistent-timeout" class="link">oci8.persistent_timeout</a></td>
         <td>&quot;-1&quot;</td>
         <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
         <td class="empty">&nbsp;</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.ping-interval" class="link">oci8.ping_interval</a></td>
         <td>&quot;60&quot;</td>
         <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
         <td class="empty">&nbsp;</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.prefetch-lob-size" class="link">oci8.prefetch_lob_size</a></td>
         <td>&quot;0&quot;</td>
         <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
         <td>PECL OCI8 3.2 以降で利用可能</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.privileged-connect" class="link">oci8.privileged_connect</a></td>
         <td>Off</td>
         <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
         <td class="empty">&nbsp;</td>
        </tr>

        <tr>
         <td><a href="oci8.configuration.php#ini.oci8.statement-cache-size" class="link">oci8.statement_cache_size</a></td>
         <td>&quot;20&quot;</td>
         <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
         <td class="empty">&nbsp;</td>
        </tr>

       </tbody>
      
     </table>

    </p>

    <p class="para">以下に設定ディレクティブに関する
簡単な説明を示します。</p>

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