ヘッダーをスキップ
Oracle Fusion Middleware Oracle HTTP Server管理者ガイド
11g リリース1 (11.1.1)
B55928-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

3 Oracle HTTP Serverモジュールの理解

モジュール(mod)は、Oracle HTTP Serverの基本機能を拡張し、Oracle HTTP Serverとその他のOracle Fusion Middlewareコンポーネントとの統合をサポートします。


注意:

このドキュメントの情報は、Oracle HTTP ServerがOracle WebLogic ServerおよびOracle Fusion Middleware Controlにインストールされている場合に適用できます。このドキュメントの対象読者は、『Oracle Fusion Middlewareコンセプト・ガイド』および『Oracle Fusion Middleware管理者ガイド』の説明に従ってOracle Fusion Middlewareの主要概念を十分に理解しておく必要があります。

スタンドアロン・モードでのOracle HTTP Serverのインストールについては、『Oracle Fusion Middleware Oracle Web Tierインストレーション・ガイド』のスタンドアロン・モードでのOracle Web Tierのインストールに関する項を参照してください。


この章では、オラクル社により特にOracle HTTP Server向けに開発されたモジュールについて説明します。この章の内容は、次のとおりです。

3.1 含まれるモジュールのリスト

この項では、Oracle HTTP Serverにバンドルされているすべてのモジュールを示します。

オラクル社が開発したOracle HTTP Server用のモジュール

次のモジュールは、オラクル社により特にOracle HTTP Server向けに開発されたものです。

Oracle HTTP Server内のApache HTTP Serverおよびサード・パーティのモジュール

Oracle HTTP Serverには、次のApache HTTP Serverおよびサード・パーティのモジュールも即時利用できるように組み込まれています。これらのモジュールは、オラクル社が開発したものではありません


関連項目:

Apache HTTP Serverモジュールの詳細は、Apacheドキュメントを参照してください。

3.2 mod_certheaders

mod_certheadersモジュールは、Oracle HTTP Serverの前でSecure Sockets Layer(SSL)接続が終了するリバース・プロキシが、SSL接続に関する情報(SSLクライアント証明書情報など)を、Oracle HTTP ServerおよびOracle HTTP Serverを介して動作しているアプリケーションに送信できるようにします。この情報は、HTTPヘッダーを使用してリバース・プロキシからOracle HTTP Serverに送信されます。その後、情報はヘッダーから標準CGI環境変数に送信されます。SSL接続がOracle HTTP Serverによって終了される場合は、mod_osslモジュールまたはmod_sslモジュールがこの環境変数に値を移入します。

mod_certheadersモジュールでは、特定のリクエストがHTTP経由で受信される場合も、HTTPSリクエストとして扱うことができます。これは、SimulateHttpsディレクティブを使用して実行されます。

SimulateHttpsは、自身が含まれるコンテナ(<VirtualHost><Location>など)を使用し、受信されたこのコンテナに対するすべてのリクエストを、リクエストで使用された実際のプロトコルに関係なく、HTTPS経由で受信されたものとして扱います。

3.3 mod_dms

mod_dmsモジュールでは、Oracle Dynamic Monitoring Service(DMS)を使用してサイト・コンポーネントのパフォーマンスを監視できます。

3.4 mod_onsint

mod_onsintモジュールは、Oracle Notification Service(ONS)およびOracle Process Manager and Notification Server(OPMN)を使用した統合サポートを提供します。これはOracleモジュールであり、次の機能を提供します。

mod_onsintは、UNIXではOracle HTTP Server親プロセス内のスレッドとして、Windowsでは子プロセス内のスレッドとして実行されます。このスレッドは、ONSメッセージの送受信を担当します。

mod_onsintに対して構成できるOpmnHostPortというオプションのディレクティブがあります。このディレクティブを使用すると、 mod_onsint が動作中のOracle HTTP Serverインスタンスをpingするため、OPMNが使用するホスト名とポートを指定できます。OpmnHostPortが指定されていないと、mod_onsintはHTTPポートを自動的に選択します。状況によっては、OPMNがリスナーのpingに使用するHTTPポートとホスト名に特定のものを選択する場合があります。

OpmnHostPortの構文形式は次のとおりで、OPMNに渡す値を指定します。

OpmnHostPort [<http> | <https>://]<host>:<port>

たとえば、次の行は、OPMNがこのリスナーをpingするときにHTTP、localhostインタフェースおよびポート7778を使用することを指定しています。

OpmnHostPort http://localhost:7778

3.5 mod_oradav

mod_oradavモジュールは、mod_davの実装を拡張するC言語で記述されたOracle Call Interface(OCI)アプリケーションです。mod_oradavディレクティブでは、ローカル・ファイルまたはOracle Databaseに対する読取りと書込みができます。Oracle Databaseには、mod_oradavモジュールがWebDAVアクティビティをデータベース・アクティビティにマップするためのOraDAVドライバ(ストアド・プロシージャ・パッケージ)が必要です。実際には、WebDAVクライアントはmod_oradavモジュールによりOracle Databaseに接続し、内容の読取りと書込み、および各種スキーマ内のドキュメントの問合せとロックを実行できます。

Oracle HTTP Serverの標準ディレクティブを使用して、mod_oradavモジュールを構成できます。mod_oradavモジュールを構成するには、Fusion Middleware Controlの「詳細構成」ページを使用します。mod_oradavディレクティブでは、コンテンツ管理タスクを実行するために、他のモジュール・コード(mime_magicなど)をすぐに活用できます。ほとんどのOraDAV処理アクティビティでは、コンテンツ・プロバイダとの間でコンテンツをストリーム化する必要があります。mod_oradavディレクティブでは、Oracle HTTP Server内でOCIストリーム・ロジックが直接使用されます。


関連項目:

  • 第9章「mod_oradavの構成」

  • 『Oracle Portal Administrator's Guide』

  • mod_oradavモジュールを使用してデータベース・スキーマにアクセスし、サード・パーティ・ツール(Adobe GoLiveやMacromedia Dreamweaverなど)とOracle interMediaからのアクセスを可能にする方法は、次のOTNで入手可能なOraDAV情報を参照してください。

    http://otn.oracle.co.jp/


3.6 mod_ossl

mod_osslモジュールは、Oracle HTTP Serverに対して厳密な暗号化を有効にします。このOracleモジュールは、サーバーでSSLを使用できるようにするOracle HTTP Serverへのプラグインです。これは、OpenSSLモジュールのmod_sslと非常によく似ています。mod_osslモジュールは、SSLバージョン3およびTLSバージョン1をサポートするOracleのSSL実装を基盤とし、CerticomおよびRSAセキュリティ・テクノロジに基づいています。


関連項目:

詳細は、『Oracle Fusion Middleware管理者ガイド』のWeb層のSSLの構成に関する項を参照してください。詳細は、http://download.oracle.com/docs/cd/E21764_01/core.1111/b60984/toc.htmを参照してください。

3.7 mod_osso

mod_ossoモジュールは、受信リクエストを検査して、リクエストされたリソースが保護されているかどうかを判断することで、Oracle HTTP Serverのシングル・サインオンを有効化します。保護されている場合、Oracle HTTP ServerのCookieを取得します。

デフォルトでは、モジュールは無効です。mod_ossoモジュールを有効化するには、4.4.5項「mod_ossoモジュールの有効化」の手順に従ってください。


関連項目:

強制認証の詳細は、『Oracle Fusion Middleware Oracle Identity Managementアプリケーション開発者ガイド』を参照してください。

シングル・サインオンの詳細は、『Oracle Fusion Middlewareセキュリティ・ガイド』を参照してください。


3.8 mod_perl

mod_perlモジュールは、Oracle HTTP ServerにPerlインタプリタを埋め込みます。これにより、起動時のオーバーヘッドが排除され、モジュールをPerlで記述できます。Oracle Fusion Middlewareでは、Perlバージョン5.10を使用します。

デフォルトでは、モジュールは無効です。mod_perlモジュールを有効化するには、4.4.3項「mod_perlモジュールの構成」の手順に従ってください。


関連項目:

『mod_perl Guide』

3.8.1 データベースでのmod_perlの使用

この項では、データベースを使用するmod_perlユーザー向けの情報を提供します。また、ローカル・データベース接続をテストし、文字構成を設定する方法についても説明します。

3.8.1.1 Perlを使用したデータベース・アクセス

Perlスクリプトは、Oracle用のDBI/DBDドライバを使用してデータベースにアクセスします。DBI/DBDドライバはOracle Fusion Middlewareに含まれています。このドライバは、Oracle Call Interface(OCI)をコールしてデータベースにアクセスします。

mod_perlを有効化した後、機能させるためにはmod_perl.confファイル内のDBIを有効化する必要があります。DBIを有効化するには、次の手順を実行します。

  1. mod_perl.confファイルを編集します。

    1. Fusion Middleware Controlで、Oracle HTTP Serverの「詳細構成」ページに移動します。

    2. メニューからmod_perl.confファイルを選択し、「実行」をクリックします。

    3. mod_perl.confファイルに次の行を追加します。

      PerlModule Apache::DBI

  2. 「適用」をクリックして、ファイルを保存します。

  3. Fusion Middleware Controlを使用してOracle HTTP Serverを再起動します。

実行するPerlスクリプトをORACLE_INSTANCE/config/OHS/<ohs_name>/cgi-binディレクトリに配置します。

例3-1 Perlスクリプトを使用したデータベース・アクセス

#!ORACLE_HOME/perl/bin/perl -w 
  use DBI; 
  my $dataSource = "host=hostname.domain;sid=orclsid;port=1521";
  my $userName = "userid";
  my $password = "password";
  my $dbhandle = DBI->connect("dbi:Oracle:$dataSource", $userName, $password)
    or die "Can't connect to the Oracle Database: $DBI::errstr\n";
  print "Content-type: text/plain\n\n";
  print "Database connection successful.\n";
  ### Now disconnect from the database
  $dbhandle->disconnect
    or warn "Database disconnect failed; $DBI::errstr\n";
  exit;

DBIスクリプトを実行する場合、URLは次のようになります。

http://hostname.domain:port/cgi-bin/scriptname
http://hostname.domain:port/perl/scriptname

スクリプトにuse DBIではなくuse Apache::DBIと指定されている場合、このスクリプトを実行できるのは、http://hostname.domain:port/perl/scriptnameというURLからのみです。

3.8.1.2 データベース接続のテスト

例3-2は、データベース接続をテストするためのサンプルPerlスクリプトを示しています。connect文のインスタンス名、ユーザーIDおよびパスワードは、ターゲット・データベースの適切な値で置き換えてください。

例3-2 ローカル・シード・データベースの接続テスト用サンプルPerlスクリプト

use DBI;
print "Content-type: text/plain\n\n"; 
$dbh = DBI->connect("dbi:Oracle:instance_name", userid/password, "") ||
            die $DBI::errstr;
$stmt = $dbh->prepare("select * from emp order by empno")|| die $DBI::errstr;
$rc = $stmt->execute() || die $DBI::errstr;
while (($empno, $name) = $stmt->fetchrow()) {
   print "$empno $name\n";
}
warn $DBI::errstr if $DBI::err;
die "fetch error: " . $DBI::errstr if $DBI::err;
$stmt->finish() || die "can't close cursor";
$dbh->disconnect() || die "cant't log off Oracle";

3.8.1.3 SQL NCHARデータ型の使用

SQL NCHARデータ型(NCHAR、NVARCHAR2およびNCLOB)は、信頼性の高いUnicodeデータ型です。SQL NCHARデータ型を使用すると、Unicode文字をデータベースのキャラクタ・セットに関係なく格納できます。これらのデータ型のキャラクタ・セットは、各国語キャラクタ・セット、つまりAL16UTF-16またはUTF8で指定します。

例3-3は、SQL NCHARデータにアクセスする場合の例を示しています。

例3-3 SQL NCHARデータにアクセスするためのサンプル・スクリプト

# declare to use the constants for character forms
use DBD::Oracle qw(:ora_forms);
# connect to the database and get the database handle
$dbh = DBI->connect( ... );

# prepare the statement and get the statement handle
$sth = $dbh->prepare( 'SELECT * FROM TABLE_N WHERE NCOL1 = :nchar1' );

# bind the parameter of a NCHAR type
$sth->bind_param( ':nchar1', $param_1 );
# set the character form to NCHAR
$sth->func( { ':nchar1' => ORA_NCHAR } , 'set_form' );

$sth->execute;

例3-3に示したとおり、標準のDBI funcメソッドで起動できるプライベート・ファンクションとして、set_formファンクションが提供されています。set_formファンクションでは、パラメータの文字構成を設定できる匿名ハッシュを使用します。

文字構成の有効値は、ORA_IMPLICITまたはORA_NCHARのいずれかです。文字構成をORA_IMPLICITに設定すると、アプリケーションのバインド・データはデータベースのキャラクタ・セットに変換され、ORA_NCHARに設定すると各国語キャラクタ・セットに変換されます。デフォルトはORA_IMPLICITです。

DBD::Oracleでは、ora_formsとして定数を使用できます。

set_default_formでは、データベース・ハンドルのデフォルトの文字構成を設定します。次の例では、その構文を示しています。

# specify the default form to be NCHAR
$dbh->func( ORA_NCHAR, 'set_default_form' );

set_formコールで特に指定しないかぎり、この構文によりすべてのパラメータの構成がORA_NCHARになります。set_formファンクションとは異なり、set_default_formはデータベース・ハンドルのファンクションであるため、データベース・ハンドルの各文は任意に選択した構成になります。

例3-4 set_formのサンプル

# a declaration example for the constants ORA_IMPLICIT and ORA_NCHAR
use DBD::Oracle qw(:ora_forms);

# set the character form for the placeholder :nchar1 to NCHAR
$sth->func( { ':nchar1' => ORA_NCHAR } , 'set_form' );

# set the character form using the positional index
$sth->func( { 2 => ORA_NCHAR } , 'set_form' );

# set the character form for multiple placeholders at once
$sth->func( { 1 => ORA_NCHAR, 2 => ORA_NCHAR } , 'set_form' );

3.9 mod_reqtimeout

mod_reqtimeoutは、リクエストを受信するためのタイムアウトおよび最小データ率を設定します。mod_reqtimeoutモジュールはDOS攻撃および関連する問題に対する保護を提供します。詳細は、次の資料を参照してください。

http://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html

3.10 mod_plsql

mod_plsqlモジュールにより、Oracle HTTP ServerはOracle Databaseに接続され、Oracleストアド・プロシージャを使用してWebアプリケーションを作成できるようになります。

Web対応のPL/SQLアプリケーションにアクセスするには、mod_plsqlモジュール用PL/SQLデータベース・アクセス・ディスクリプタ(DAD)を構成します。DADは、このモジュールがデータベース・サーバーに接続してHTTPリクエストを実行する方法を指定する値のセットです。DADには、接続詳細の他、データベースでの各種操作およびmod_plsqlモジュール全般にとって重要な構成パラメータが含まれています。PL/SQL Web Toolkitを使用するWeb対応のPL/SQLアプリケーションでは、そのアプリケーションを起動するDADを作成する必要があります。

3.10.1 DADの作成

DADを作成するには、次の手順を実行します。

  1. dads.conf構成ファイルを編集します。

    mod_plsql構成ファイルの場所については、表3-1を参照してください。

  2. 次の形式のDADを追加します。

    1. PL/SQL Webアプリケーションへのアクセスに使用する仮想パスを定義するOracle HTTP Serverの<Location>ディレクティブ。このディレクティブは、Locationに適用されるディレクティブのセットをグループ化します。

      たとえば、<Location /myapp>ディレクティブは、http://host:port/myapp/のようなURLを介してPL/SQL Webアプリケーションを起動するために使用する、/myappという仮想パスを定義します。


      注意:

      以前のリリースのmod_plsqlモジュールでは、常に接頭辞/plsを付けて仮想パスにマウントしていました。新しいリリースではこの制限は削除されましたが、以前のPL/SQLアプリケーションによって制限されてしまう場合もあります。

    2. Oracle HTTP Serverに対して、Locationで定義された仮想パスに対するリクエストをmod_plsqlモジュールが処理できるように指示するOracle HTTP ServerのSetHandlerディレクティブ。

      SetHandler pls_handler
      
    3. <Location>ディレクティブのコンテキストで許可されるその他のOracle HTTP Serverのディレクティブ。通常は、次のディレクティブが使用されます。

      Order deny,allow
      Allow from all
      
    4. 1つ以上の特定のmod_plsqlディレクティブ。例:

      PlsqlDatabaseUsername        scott
      PlsqlDatabasePassword        tiger
      PlsqlDatabaseConnectString   orcl
      PlsqlAuthenticationMode      Basic
      
    5. Locationのディレクティブのグループをクローズして、1つのDADを定義するOracle HTTP Serverの</Location>ディレクティブ。

  3. 編集内容を保存します。

  4. ORACLE_HOME/binディレクトリにあるdadTool.plスクリプトを実行することで、DADパスワードを不明瞭化します。


    関連項目:

    不明瞭化を実行するための手順は、「PlsqlDatabasePassword」を参照してください。

  5. Fusion Middleware Controlを使用してOracle HTTP Serverを再起動します。

dads.confに一意の名前を持つ他のLocationを定義することで、追加のDADを作成することもできます。

DADの例

次のDADは特定のユーザーとして接続し、デフォルトのホームページを持ちます。

<Location /pls/mydad>
SetHandler pls_handler
Order allow,deny
Allow from All
PlsqlDatabaseUsername scott
PlsqlDatabasePassword tiger
PlsqlDatabaseConnectString prod_db
PlsqlDefaultPage scott.myapp.home
</Location>

次のDADはHTTP Basic認証を使用し、ドキュメントのアップロードおよびダウンロード操作をサポートします。

<Location /pls/mydad2>
SetHandler pls_handler
Order allow,deny
Allow from All
PlsqlDatabaseConnectString prod_db2
PlsqlDefaultPage scott.myapp.my_home
PlsqlDocumentTablename scott.my_documents
PlsqlDocumentPath docs
PlsqlDocumentProcedure scott.docpkg.process_download
</Location>

3.10.2 mod_plsqlの構成ファイル

表3-1に示すように、mod_plsql構成パラメータは、ORACLE_INSTANCEディレクトリ内の構成ファイルに含まれています。

表3-1 Oracleインスタンス内のmod_plsql構成ファイル

ディレクトリ名 目次

config/OHS/<ohs_name>/moduleconf

plsql.conf構成ファイル。

config/OHS/<ohs_name>/mod_plsql

dads.confおよびcache.conf構成ファイル。


次の各項で、mod_plsql構成パラメータについて説明します。

3.10.2.1 plsql.conf

plsql.confファイルは、ORACLE_INSTANCE/config/OHS/<ohs_name>/moduleconfディレクトリ内にあります。Oracle HTTP Serverでは、すべての.confファイルが自動的にこのディレクトリ内にロードされます。plsql.confファイルには、mod_plsqlモジュールをOracle HTTP ServerにロードするLoadModuleディレクティブ、mod_plsqlモジュールのグローバル設定、およびdads.confcache.confのインクルード・ディレクティブが含まれています。


関連項目:

plsql.confの詳細は、ORACLE_HOME/ohs/mod_plsqlにあるplsql.READMEファイルを参照してください。

plsql.confファイルでは、次のパラメータを使用します。

PlsqlDMSEnable

mod_plsqlモジュールのDynamic Monitoring Service(DMS)を有効にします。

カテゴリ
構文 PlsqlDMSEnable {On | Off}
デフォルト On
PlsqlDMSEnable On

PlsqlLogEnable

mod_plsqlモジュールのデバッグ・レベル・ログを有効にします。デバッグ・レベル・ログは、デバッグ専用に使用されます。

ロギングが有効になると、Oracle HTTP Serverログ・ファイルは通常、ORACLE_INSTANCE/diagnostics/logs/OHS/<ohs_name>ディレクトリ内に作成されます。ただし、最終的な場所はPlsqlLogDirectory内に指定された場所によって決まります。

このパラメータは、Oracleサポート・サービスよりmod_plsqlモジュール問題のデバッグ指示がないかぎり、Offに設定しておきます。

mod_plsqlモジュールの内部処理の詳細を表示する場合は、このディレクティブをOnに設定します。Onに設定すると、mod_plsqlモジュールは処理されるすべてのリクエストのロギングを開始します。ログ・ファイルは、PlsqlLogDirectoryディレクティブで指定された場所に生成されます。

カテゴリ
構文 PlsqlLogEnable {On | Off}
デフォルト Off
PlsqlLogEnable Off

PlsqlLogDirectory

デバッグ・レベル・ログが書き出されるディレクトリを指定します。

ロギングが有効なときにログ・ファイルが生成される場所のディレクトリ名を設定します。このディレクトリの場所について混乱が生じないように、絶対パスの使用をお薦めします。

UNIXでは、httpd子プロセスの所有者がこのディレクトリに対する書込み権限を持っている必要があります。

カテゴリ
構文 PlsqlLogDirectory directory
デフォルト なし
PlsqlLogDirectory ORACLE_INSTANCE/diagnostics/logs/OHS/<ohs_name>

PlsqlIdleSessionCleanupInterval

アイドル・データベース・セッションがmod_plsqlモジュールによりクローズされてクリーンアップされるまでの時間(分数)を指定します。

このディレクティブは、mod_plsqlモジュール内でデータベース接続とセッションの接続プーリングとともに使用されます。セッションがある一定の期間使用されないと、そのセッションはクローズされて解放されます。これは、使用されていないセッションをクリーンアップし、データベース側でメモリーが解放されるようにするためです。

この時間を小さい値に設定すると、使用されていないデータベース・セッションのクリーンアップが高速になります。ただし、極端に小さい値に設定すると、mod_plsqlモジュール内の接続プーリングが提供するパフォーマンスに悪影響を及ぼすことがあります。

オープンされているデータベース・セッションの数が重要でない場合は、最大のパフォーマンスが得られるように、このパラメータの値を大きくすることができます。その場合、アクセス頻度が高く、セッション・クリーンアップ間隔に達することがないサイトについては、プーリングされたデータベース・セッションが確実に定期的にリサイクルされるように、DAD構成パラメータPlsqlMaxRequestsPerSessionを調整できます。

ほとんどのインストールでは、デフォルト値で十分です。

カテゴリ
構文 PlsqlIdleSessionCleanupInterval number
デフォルト 15(分)
PlsqlIdleSessionCleanupInterval 10

3.10.2.2 dads.conf

dads.confファイルには、PL/SQLのデータベース・アクセス・ディスクリプタの構成パラメータが含まれています。(ファイルの場所については、表3-1を参照してください。)DADは、mod_plsqlモジュールがデータベース・サーバーに接続してHTTPリクエストを実行する方法を指定する値のセットです。

dads.confファイルでは、次のパラメータを使用します。

PlsqlAfterProcedure

リクエストされたプロシージャのコール後に起動するプロシージャを指定します。これにより、リクエストされたプロシージャがコールされた後にフック・ポイントを置くことができます。これは、リクエストされたプロシージャ内の問題のデバッグ中に、SQLトレース/SQLプロファイルを実行する場合に役立ちます。また、各プロシージャの実行後に特定のコールを確実に行う必要がある場合にも役立ちます。

カテゴリ
構文 PlsqlAfterProcedure string
デフォルト なし
PlsqlAfterProcedure portal.mypkg.myafterproc

  • このパラメータは、デバッグ目的にのみ使用してください。また、このパラメータを使用すると、SQLトレース/SQLプロファイルを停止できます。

PlsqlAlwaysDescribeProcedure

mod_plsqlモジュールでプロシージャを実行する前に記述する必要があるかどうかを指定します。このパラメータをOnに設定すると、mod_plsqlモジュールではプロシージャを起動する前に常に記述します。それ以外の場合は、mod_plsqlモジュールが内部的な経験則によりパラメータ・タイプを不正に解析した場合にのみ、プロシージャを記述します。

カテゴリ
構文 PlsqlAlwaysDescribeProcedure {On | Off}
デフォルト Off
PlsqlAlwaysDescribeProcedure On

  • このパラメータは、デバッグ目的にのみ使用してください。

PlsqlAuthenticationMode

DAD経由でアクセスできるように、使用する認証モードを指定します。

カテゴリ
構文 PlsqlAuthenticationMode {Basic | SingleSignOn | GlobalOwa | CustomOwa | PerPackageOwa}
デフォルト Basic
PlsqlAuthenticationMode CustomOwa

  • DADでBasic認証を使用しない場合は、DAD構成に有効なユーザー名とパスワードを含める必要があります。Basicモードで動的認証を実行する場合は、DADのusernameおよびpasswordパラメータを省略できます。

  • SingleSignOnモードがサポートされるのは、Oracle Fusion Middlewareのリリースのみで、Oracle PortalおよびOracle Single Sign-Onで使用されます。ほとんどの顧客アプリケーションでは、Basic認証を使用します。カスタム認証モード(GlobalOwa、CustomOwaおよびPerPackageOwa)を使用するPL/SQLアプリケーションは、ごく少数です。

PlsqlBeforeProcedure

リクエストされたプロシージャのコール前に起動するプロシージャを指定します。これにより、リクエストされたプロシージャがコールされる前にフック・ポイントを置くことができます。これは、リクエストされたプロシージャ内の問題のデバッグ中に、SQLトレース/SQLプロファイルを実行する場合に役立ちます。また、各プロシージャの実行前に特定のコールを確実に行う必要がある場合にも役立ちます。

カテゴリ
構文 PlsqlBeforeProcedure string
デフォルト なし
PlsqlBeforeProcedure portal.mypkg.mybeforeproc

  • このパラメータは、デバッグ目的にのみ使用してください。また、このパラメータを使用すると、SQLトレース/SQLプロファイルを起動できます。

PlsqlBindBucketLengths


注意:

この構成プロパティが変更されることはほとんどないため、たいていの場合はシステムのデフォルトで間に合います。

コレクション・バインド内の要素数のバインド中に使用する丸めサイズを指定します。PL/SQL文の実行中は、Oracle Databaseにより共有SQL領域内でPL/SQL文のキャッシュがメンテナンスされ、同じ文が再び実行される場合はキャッシュされた文が再利用されます。Oracleの一致条件では、文のテキストが同一で、バインド変数のデータ型が一致する必要があります。文字列の型が一致するには正確なバイト・サイズを指定する必要があり、コレクション・バインドの場合もコレクション内の要素数が重要になります。mod_plsqlモジュールでは文が動的にバインドされるため、共有キャッシュのヒット率は低く、ほぼ重複する値で満杯になって、共有領域でラッチの競合が発生する傾向があります。このパラメータでは、バインド長を最も近いレベルにバケット化して、このような影響を軽減します。

すべての数値は昇順で指定する必要があります。最後に指定したサイズに続くバケット・サイズは、最後のサイズの2倍とみなされます。

カテゴリ
構文 PlsqlBindBucketLengths number multiline
デフォルト 4,20,100,400
PlsqlBindBucketLengths 4

PlsqlBindBucketLengths 25

PlsqlBindBucketLengths 125


  • このパラメータが関連するのは、配列パラメータを持つプロシージャを使用し、可変個のパラメータをプロシージャに渡す場合のみです。

  • ほとんどのPL/SQLアプリケーションの場合は、デフォルトで十分です。

  • このパラメータの変更が必要かどうかを調べるには、SQL領域内でSQL文のバージョン番号をチェックします。

  • より大きい構成値の後は、mod_plsqlが必要に応じて最後の値を2倍にすることによって、さらに大きな値のバケット・サイズの自動生成を開始します。したがって、400の次のバケット値は800、その次は1600、のように続いていきます。

  • 問題を軽減するために、パラメータの受渡しを柔軟にすることを考慮してください。

PlsqlBindBucketWidths


注意:

この構成プロパティが変更されることはほとんどないため、たいていの場合はシステムのデフォルトで間に合います。

コレクション・バインド内の要素数のバインド中に使用する丸めサイズを指定します。PL/SQL文の実行中は、Oracle Databaseにより共有SQL領域内でPL/SQL文のキャッシュがメンテナンスされ、同じ文が再び実行される場合はキャッシュされた文が再利用されます。Oracleの一致条件では、文のテキストが同一で、バインド変数のデータ型が一致する必要があります。文字列の型が一致するには正確なバイト・サイズを指定する必要があり、コレクション・バインドの場合もコレクション内の要素数が重要になります。mod_plsqlモジュールでは文が動的にバインドされるため、共有キャッシュのヒット率は低く、ほぼ重複する値で満杯になって、共有領域でラッチの競合が発生する傾向があります。このパラメータでは、バインド幅を最も近いレベルにバケット化して、このような影響を軽減します。

すべての数値は昇順で指定する必要があります。最後に指定したサイズに続くバケット・サイズは、最後のサイズの2倍とみなされます。

最後のバケット幅は4000以下にする必要があります。これは、配列のバインド幅を4000以下にするというOCIの制限によるものです。

カテゴリ
構文 PlsqlBindBucketWidths number multiline
デフォルト 32,128,1450,2048,4000
PlsqlBindBucketWidths 40

PlsqlBindBucketWidths 400

PlsqlBindBucketWidths 2000


  • このパラメータが関連するのは、配列パラメータを持つプロシージャを使用し、可変個のパラメータをプロシージャに渡す場合のみです。

  • ほとんどのPL/SQLアプリケーションの場合は、デフォルトで十分です。

  • このパラメータの変更が必要かどうかを調べるには、SQL領域内でSQL文のバージョン番号をチェックします。

  • より大きい構成値の後は、mod_plsqlが必要に応じて最後の値を2倍にすることによって、さらに大きな値のバケット・サイズの自動生成を開始します。したがって、400の次のバケット値は800、その次は1600、のように続いていきます。

  • 問題を軽減するために、パラメータの受渡しを柔軟にすることを考慮してください。

PlsqlCGIEnvironmentList

PL/SQLプロシージャに渡される環境変数のデフォルト・セットに、CGI環境変数のオーバーライドおよび追加を実行するように指定します。これは、追加、オーバーライドまたは削除する名前/値ペアの複数行からなるディレクティブです。1つのディレクティブに指定できる環境変数は1つのみです。

変数名を指定して、Oracle HTTP Server環境からCGI環境変数を追加できます。CGI環境変数を削除するには、空白に設定します。固有の名前/値ペアを追加するには、構文myname=myvalueを使用します。

カテゴリ
構文 PlsqlCGIEnvironmentList string multiline
デフォルト なし
  • Oracle HTTP Server環境から新しい環境変数を追加するには、次のように設定します。

    PlsqlCGIEnvironmentList DOCUMENT_ROOT

  • 環境変数を削除するには、次のように設定します。

    PlsqlCGIEnvironmentList MYENVAR2=

  • Oracle HTTP Server環境からオーバーライドするには、次のように設定します。

    PlsqlCGIEnvironmentList REQUEST_PROTOCOL=HTTPS

  • 独自の環境変数を追加するには、次のように設定します。

    PlsqlCGIEnvironmentList MY_VARNAME=MY_VALUE


  • ここで追加した環境変数は、ファンクションowa_util.get_cgi_envを介してPL/SQLアプリケーションで使用できます。

PlsqlConnectionTimeout

mod_plsqlモジュールの接続プールをテストするためのタイムアウトをミリ秒単位で指定します。

PlsqlConnectionValidationAutomaticまたはAlwaysValidateに設定されていると、mod_plsqlモジュールはプーリングされたデータベース接続をテストしようとします。このパラメータは、mod_plsqlモジュールが接続は使用できないと判断する前に、テスト・リクエストの完了を待機する最大時間を指定します。

カテゴリ
構文 PlsqlConnectionTimeout number
デフォルト 10000(ミリ秒)
PlsqlConnectionTimeout 5000

PlsqlConnectionValidation

mod_plsqlモジュールが接続プールで終了済接続を検出するために使用するメカニズムを指定します。


注意:

この構成プロパティが変更されることはほとんどないため、たいていの場合はシステムのデフォルトで間に合います。

パフォーマンス上の理由で、mod_plsqlモジュールはデータベース接続をプーリングします。データベース・インスタンスが停止し、mod_plsqlモジュールがそのインスタンスに対する接続プールを保持していた場合、プーリングされた各データベース接続は、次回リクエストの処理に使用される際にエラーとなります。これは、あるノードが停止しても、他のデータベース処理を実行しているノードではリクエストを正常に処理できる、RACなどの高可用性の構成で問題となります。mod_plsqlモジュールでは、データベース・ノードの停止による障害を検出した後に自己修正するためのメカニズムを提供しています。この自己修正メカニズムは、PlsqlConnectionValidationパラメータによって制御されます。

次に、PlsqlConnectionValidationの有効な値を示します。

  • Automatic: mod_plsqlモジュールは、障害(インスタンスの障害)の検出前に作成され、プーリングされたすべてのデータベース接続をテストします。

  • ThrowAwayOnFailure: mod_plsqlモジュールは、障害(インスタンスの障害)の検出前に作成され、プーリングされたすべてのデータベース接続を放棄します。

  • AlwaysValidate: mod_plsqlモジュールは、リクエストの発行前に作成され、プーリングされたすべてのデータベース接続を常にテストします。このオプションは、各リクエストのパフォーマンス・オーバーヘッドと関連しているため、注意して使用する必要があります。

  • NeverValidate: mod_plsqlモジュールは、プーリングされたデータベース接続を一切pingしません。

カテゴリ
構文 PlsqlConnectionValidation {Automatic | ThrowAwayOnFailure | AlwaysValidate | NeverValidate}
デフォルト Automatic
PlsqlConnectionValidation ThrowAwayOnFailure

mod_plsqlモジュールでは、次のいずれかのエラーが発生すると、データベースは停止していると判断します。

  • 00443 — バックグラウンド・プロセス<string>が起動しませんでした

  • 00444 — バックグラウンド・プロセス<string>の起動中に障害が発生しました。

  • 00445 — バックグラウンド・プロセスが<x>秒後に起動しませんでした。

  • 00447 — バックグラウンド・プロセスに致命的なエラーが発生しました。

  • 00448 — バックグラウンド・プロセスが正常終了しました。

  • 00449 — バックグラウンド・プロセス<string>がエラーで予期せず終了しました

  • 00470 — LGWRプロセスはエラーで終了しました。

  • 00471 — DBWRプロセスはエラーで終了しました。

  • 00472 — PMONプロセスはエラーで終了しました。

  • 00473 — ARCHプロセスはエラーで終了しました。

  • 00474 — SMONプロセスはエラーで終了しました。

  • 00475 — TRWRプロセスはエラーで終了しました。

  • 00476 — RECOプロセスはエラーで終了しました。

  • 00480 — LCK*プロセスはエラーで終了しました。

  • 00481 — LMONプロセスはエラーで終了しました。

  • 00482 — LMD*プロセスはエラーで終了しました。

  • 00484 — LMS*プロセスはエラーで終了しました

  • 00485 — DIAGプロセスはエラーで終了しました

  • 01014 — Oracleのシャットダウン処理中です。

  • 01033 — Oracleの初期化またはシャットダウン中です。

  • 01034 — Oracleは使用できません。

  • 01041 — 内部エラーが発生しました。hostdefエクステンションが存在しません。

  • 01077 — バックグラウンド・プロセス初期化に失敗しました

  • 01089 — 即時シャットダウン処理中 - 操作はできません

  • 01090 — シャットダウン処理中 - 接続はできません

  • 01091 — 強制起動時にエラーが発生しました。

  • 01092 - Oracleインスタンスが終了しました。強制的に切断されます

  • 03106 — 致命的な2タスク通信プロトコル・エラーが発生しました

  • 03113 — 通信チャネルでend-of-fileが検出されました

  • 03114 — Oracleに接続されていません。

  • 12570 — TNS: パケット・リーダーに障害が発生しました。

  • 12571 — TNS: パケット・ライターに障害が発生しました

PlsqlDatabaseConnectString

Oracle Databaseへの接続を指定します。

カテゴリ
構文 PlsqlDatabaseConnectString string {ServiceNameFormat | SIDFormat | TNSFormat | NetServiceNameFormat}

stringパラメータは、2番目の引数に応じて次のように変化します。

  • 2番目の引数がServiceNameFormatの場合、stringHOST:PORT:SERVICE_NAMEになります。ここで、HOSTはデータベースを実行中のホスト名、PORTはTNSリスナーがリスニングしているポート番号、SERVICE_NAMEはデータベース・サービス名です。

    IPv6アドレスを指定するには、[IPv6_ADDRESS]:PORT:SERVICE_NAMEという書式を使用します。

  • 2番目の引数がSIDFormatの場合、stringHOST:PORT:SIDになります。ここで、HOSTはデータベースを実行中のホスト名、PORTはTNSリスナーがリスニングしているポート番号、SIDはデータベースSIDです。

    IPv6アドレスを指定するには、[IPv6_ADDRESS]:PORT:SIDという書式を使用します。

  • 2番目の引数がTNSFormatの場合、stringは、tnspingなどのNet8ユーティリティとSQL*Plusを使用して解決できる有効なTNS別名になります。

  • 2番目の引数がNetServiceNameFormatの場合、stringは、接続ディスクリプタに解決できる有効なネット・サービス名になります。接続ディスクリプタは、ネットワーク接続の宛先を特殊なフォーマットで記述したものです。接続ディスクリプタには、宛先サービスとネットワーク経路情報が含まれます。

フォーマット引数を指定しない場合、mod_plsqlモジュールでは、stringがHOST:PORT:SID形式であるか、Oracle Netで解決可能であると想定します。この2つは、指定された文字列にコロンがあるかどうかにより区別されます。

新しいDADではSIDFormat構文を使用しないことをお薦めします。この構文は、下位互換性を保つためにのみ設けられています。新しく作成するDADには、新しいフォーマット引数を使用してください。

デフォルト なし
  • PlsqlDatabaseConnectString example.com:1521:myhost.iasdb.inst ServiceNameFormat
  • PlsqlDatabaseConnectString [2001:DB8:f1ff:f1ff]:1521:myhost.iasdb.inst ServiceNameFormat

  • PlsqlDatabaseConnectString example.com:1521:iasdb SIDFormat

  • PlsqlDatabaseConnectString [2001:DB8:ff1ff:f1ff]:1521:iasdb SIDFormat

  • PlsqlDatabaseConnectString myhost_tns TNSFormat

  • PlsqlDatabaseConnectString cn=oracle,cn=iasdb NetServiceNameFormat

  • PlsqlDatabaseConnectString (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=example.com)(Port= 1521))(CONNECT_DATA=(SID=iasdb))) TNSFormat

  • PlsqlDatabaseConnectString myhost_tns

  • PlsqlDatabaseConnectString example.com:1521:iasdb


  • データベースが同じOracleホームで稼働している場合、あるいは環境変数TWO_TASKが設定されている場合は、このパラメータを指定する必要はありません。

  • データベースが別々のOracleホームで稼働している場合、このパラメータは必須です。

  • データベースに接続できない場合は、次のことを確認します。

    • DADのユーザー名およびパスワード情報を確認します。

    • tnsping db_connect_stringを実行し、次のようなコマンドを実行します。

      sqlplus DADUsername/DADPassword@db_connect_string
      
    • TNS_ADMINが適切に構成されているかどうかを確認します。

    • HOST:PORT:SERVICE_NAME形式で正しく動作するかどうかを確認します。

    • TNSリスナーとデータベースが起動され実行されているかどうかを確認します。

    • このマシンからホストをpingできるかどうかを確認します。

  • mod_plsqlモジュールの観点からは、TNSFormatNetServiceNameFormatは類似しており、Net8により解決される接続記述子を意味します。TNSFormatが便宜上提供されているため、エンド・ユーザーはこれを使用して、名前解決がローカルのtnsnames.oraを介して行われることを示します。sqlnet.oraに構成されているLDAP参照を使用して解決が行われる場合は、NetServiceNameFormatフォーマット指定子の使用をお薦めします。

    高可用性をサポートするデータベース(たとえば、Oracle Real Application Clustersデータベースなど)の場合は、ネット・サービス名の解決がLDAPを使用して行われるように、NetServiceNameFormatの使用をお薦めします。これにより、新規ノードまたは削除されたノードの情報を使用してOracle Internet Directoryを変更することで、mod_plsqlモジュール経由でアクセス可能なRACノードを追加または削除できます。その場合は、データベース・リスナーのHOST:PORT情報をdads.confまたはローカルtnsnames.oraにハードコードしないことをお薦めします。

PlsqlDatabasePassword

データベースへのログインに使用するパスワードを指定します。

カテゴリ
構文 PlsqlDatabasePassword string
デフォルト なし
PlsqlDatabasePassword tiger

注意:

  • PlsqlAuthenticationModeをBasicに設定して動的認証を使用するDADの場合を除き、これは必須パラメータです。

  • SingleSignOn認証を使用するDADの場合、このパラメータではスキーマの所有者名を使用します。

DADパスワードを手動で構成変更した後に、ORACLE_HOME/binにあるdadTool.plスクリプトを実行して、DADパスワードを不明瞭化することをお薦めします。

DADパスワードを不明瞭化するには、次の手順を実行します。

  1. 必要に応じて、次のコマンドを使用して、ユーザーをOracleソフトウェアの所有者ユーザー(通常はoracle)に変更します。

    $ su - oracle
    
  2. 現行リリースのOracleホーム・ディレクトリへのパスを指定するようにORACLE_HOME環境変数を設定して、Perl実行可能ファイルおよびdadTool.plスクリプトの場所を含むディレクトリを含むようにPATH環境変数を設定します。

    Bourne、BashまたはKornシェルの場合:

    $ ORACLE_HOME=new_ORACLE_HOME_path;export ORACLE_HOME
    $ PATH=ORACLE_HOME/bin:ORACLE_HOME/perl/bin:$PATH;export PATH
    

    Cまたはtcshシェルの場合:

    % setenv ORACLE_HOME new_ORACLE_HOME_PATH
    % setenv PATH ORACLE_HOME/bin:ORACLE_HOME/perl/bin:PATH
    

    Microsoft Windowsでは、PATHおよびPERL5LIB環境変数を設定します。

    set PATH=ORACLE_HOME\bin;ORACLE_HOME\perl\bin;%PATH%
    set PERL5LIB=ORACLE_HOME\perl\lib
    
  3. UNIXプラットフォームでは、共有ライブラリ・パス環境変数を設定します。

    ORACLE_HOME/libまたはlib32ディレクトリを共有ライブラリ・パスに含めます。表3-2に、各プラットフォームに適したディレクトリおよび環境変数を示します。

    表3-2 共有ライブラリ・パスの環境変数

    プラットフォーム 環境変数 含めるディレクトリ

    AIX Based Systems

    LIBPATH

    ORACLE_HOME/lib

    HP-UX PA-RISC

    SHLIB_PATH

    ORACLE_HOME/lib

    Solaris Operating System

    LD_LIBRARY_PATH

    ORACLE_HOME/lib32

    その他のUNIXプラットフォーム(Linux、HP Tru64 UNIXなど)

    LD_LIBRARY_PATH

    ORACLE_HOME/lib


    たとえば、HP-UX PA-RISCシステムの場合、次のようにORACLE_HOME/libディレクトリを含めるようにSHLIB_PATH環境変数を設定します。

    $SHLIB_PATH=$ORACLE_HOME/lib:$SHLIB_PATH;export SHLIB_PATH
    
  4. ディレクトリを、Oracle HTTP Serverの現行リリースのmod_plsql構成ディレクトリに変更します。

    cd ORACLE_HOME/bin
    
  5. 次のPerlスクリプトを起動して、DADパスワードを不明瞭化します。

    perl dadTool.pl -f dadfilename
    

    dadfilenamedads.confのファイル名で、DADファイルへのフルパスが含まれます。

    例:

    perl dadTool.pl -f /u01/app/oracle/as11gr1/ORACLE_INSTANCE/config/OHS/<ohs_name>/mod_plsql/dads.conf
    

PlsqlDatabaseUserName

データベースへのログインに使用するユーザー名を指定します。

カテゴリ
構文 PlsqlDatabaseUsername string
デフォルト なし
PlsqlDatabaseUsername scott

  • PlsqlAuthenticationModeをBasicに設定して動的認証を使用するDADの場合を除き、これは必須パラメータです。

  • SingleSignOn認証を使用するDADの場合、このパラメータはスキーマの所有者名です。

PlsqlDefaultPage

URLに何も指定されていない場合にコールするデフォルトのプロシージャを指定します。

カテゴリ
構文 PlsqlDefaultPage string
デフォルト なし
PlsqlDefaultPage myschema.mypackage.home

  • Oracle HTTP Serverリライト規則を使用しても、この構成パラメータを設定した場合と同じ結果になります。

PlsqlDocumentPath

これは、ドキュメント表からのドキュメントのダウンロードを開始する、URL内の仮想パスです。たとえば、このパラメータをdocsに設定すると、次のURLによってこの形式のURLでドキュメントのダウンロード・プロセスが開始されます。

/pls/dad/docs
/pls/plsqlapp/docs
カテゴリ
構文 PlsqlDocumentPath string
デフォルト docs
PlsqlDocumentPath docs

  • ドキュメントのアップロードまたはダウンロードを実行しないアプリケーションの場合は、このパラメータを省略します。

PlsqlDocumentProcedure

ドキュメントのダウンロード開始時にコールするプロシージャを指定します。このプロシージャは、ダウンロード処理用にコールされます。

カテゴリ
構文 PlsqlDocumentProcedure string
デフォルト なし
PlsqlDocumentProcedure portal.wwdoc_process.process_download

  • ドキュメントのアップロードまたはダウンロードを実行しないアプリケーションの場合は、このパラメータを省略します。

PlsqlDocumentTablename

すべてのドキュメントのアップロード先となるデータベース内の表を指定します。

カテゴリ
構文 PlsqlDocumentTablename string
デフォルト なし
PlsqlDocumentTablename myschema.document_table

  • ドキュメントのアップロードまたはダウンロードを実行しないアプリケーションの場合は、このパラメータを省略します。

PlsqlErrorStyle

mod_plsqlエラーのエラー・レポート・モードを指定します。

カテゴリ
構文 PlsqlErrorStyle {ApacheStyle | ModplsqlStyle | DebugStyle}
  • ApacheStyle: mod_plsqlモジュールは発生したHTTPエラーをOracle HTTP Serverに示します。その後、Oracle HTTP Serverでエラー・ページが生成されます。これをOracle HTTP ServerのErrorDocumentディレクティブとともに使用すると、カスタマイズされたエラー・メッセージを生成できます。

  • ModplsqlStyle: mod_plsqlモジュールでエラー・ページが生成されます。通常、これは、発生したPL/SQLエラーと、PL/SQL例外スタック(存在する場合)を示す短いメッセージです。例:

    scott.foo PROCEDURE NOT FOUND
    
  • DebugStyle: このモードでは、ModplsqlStyleを指定した場合よりも詳細な情報が得られます。mod_plsqlモジュールによってURLとパラメータの詳細が提供され、サーバー構成情報も生成されます。このモードはデバッグ専用です。内部サーバー変数を表示するとセキュリティ上のリスクを伴うため、本番システムではこのモードを使用しないでください。

デフォルト ApacheStyle
PlsqlErrorStyle ModplsqlStyle

PlsqlExclusionList

ブラウザから直接実行することが禁じられているプロシージャ、パッケージまたはスキーマ名のパターンを指定します。これは複数行からなるディレクティブで、各パターンを個別の行に指定します。パターンには大/小文字の区別がなく、アスタリスク(*)などのワイルドカードを使用できます。ダイレクトURLアクセスが禁じられるデフォルト・パターンは、次のとおりです。

  • sys.*

  • dbms_*

  • utl_*

  • owa_util*

  • owa.*

  • htp.*

  • htf.*

  • wpg_docload.*

このディレクティブを#NONE#に設定すると、すべての保護が無効になります。この設定は、アクティブなサイトには推奨されないため、指定しないでください。この設定は、デバッグ目的の場合に使用可能です。

このパラメータが上書きされても、デフォルトは有効です。つまり、除外されるパターンのリストにデフォルト・リストを明示的に追加する必要はありません。

カテゴリ
構文 PlsqlExclusionList {string | "#NONE#" multiline}
デフォルト sys.*

dbms_*

utl_*

owa_util*

owa.*

htp.*

htf.*

wpg_docload.*

PlsqlExclusionList myschema.private.*

PlsqlExclusionList myschema.private1.*

これらは、次のいずれかを含むURLにアクセスできません。

sys.*dbms_*utl_*owa_util*owa.*htp.*htf.*wpg_docload.*myschema.private.*myschema.private1.*

PlsqlExclusionList "#NONE#"

これは、すべての保護が無効になります。この使用方法は、アクティブなサイトには推奨されません。


  • mod_plsqlモジュールでは、このパラメータで指定したパターン以外に、次の特殊文字を含むプロシージャ名も使用できません。

    • タブ

    • 改行

    • 復帰

    • 一重引用符

    • 逆スラッシュ

    • 改ページ

    • 左カッコ

    • 右カッコ

    • 空白

    これは変更できません。

PlsqlFetchBufferSize

owa_util.get_pageまたはowa_util.get_page_rawを使用して、データベースからフェッチする内容のトリップごとの行数を指定します。

デフォルトで、mod_plsqlモジュールは各行が255バイトのレスポンス出力行を200行フェッチします。レスポンス・バイトがシングルバイトの場合、レスポンス・バッファは最大限まで移入され、1回のラウンドトリップに255×200=51000バイトをパックできます。マルチバイト・データを含むレスポンスの場合は、各行のバイトのパックが理想的にならない場合があり、ラウンドトリップごとに送信されるバイト数が少なくなります。アプリケーションで大きなページを頻繁に生成し、レスポンスが1回のラウンドトリップに収められない場合は、このパラメータを高めに設定することを考慮してください。mod_plsqlモジュールによるメモリー使用量は増加します。

カテゴリ
構文 PlsqlFetchBufferSize number
デフォルト 200
PlsqlFetchBufferSize 256

  • このパラメータは、パフォーマンスに問題がある場合にのみ変更してください。このパラメータの最小値は28ですが、それより小さくなることはほとんどありません。

  • このパラメータは、次の場合にのみ変更してください。

    • 平均的なレスポンス・ページが大きく、mod_plsqlモジュールがレスポンスをフェッチするためにデータベースへラウンドトリップする回数を減らす必要がある場合。

    • 使用中のキャラクタ・セットがマルチバイトで、get_pageまたはget_page_rawで1行ごとにフェッチされるバイト数が少ないという問題に対処する必要がある場合。PL/SQL Web ToolKitでの計算は文字ベースであり、マルチバイト・キャラクタの場合、OWAパッケージでは文字の最小のバイト・サイズが想定されるため、各行のサイズが最大値まで変更されることはありません。

PlsqlInfoLogging

mod_plsqlモジュールが追加のパフォーマンス・ロギングを行うために使用するモードを指定します。

InfoDebugモード: より多くの情報がApacheのerror_logに記録されます。これは、Apacheのinfoロギング・レベルとともに使用されます。Apacheのロギング・レベルがこのレベル以上に設定されていない場合は、この設定が無視されます。

カテゴリ
構文 PlsqlInfoLogging InfoDebug
デフォルト 指定なし
PlsqlInfoLogging InfoDebug

このロギング設定は、PL/SQLアプリケーションでの問題のデバッグに役立ちます。

PlsqlMaxRequestsPerSession

プーリングされたデータベース接続がクローズされて再オープンされる前に処理する必要のある最大リクエスト数を指定します。

カテゴリ
構文 PlsqlMaxRequestsPerSession number
デフォルト 1000
PlsqlMaxRequestsPerSession 500

  • このパラメータを使用すると、PL/SQLアプリケーションによる長期間のセッション再利用により発生する、メモリーとリソースの問題を軽減できます。

  • このパラメータは変更しないでください。ほとんどの場合は、デフォルトで十分です。

  • このパラメータを小さい値に設定すると、パフォーマンスが低下することがあります。使用頻度が低くパフォーマンスが問題にならないDADや、リクエスト数が限られているDADの場合は、小さい値に設定するとメリットが得られることがあります。

PlsqlNLSLanguage

このDADの変数NLS_LANGを指定します。このパラメータにより、環境変数NLS_LANGがオーバーライドされます。このパラメータを設定すると、PL/SQL Gatewayは指定されているNLS_LANGを使用してデータベースに接続します。接続後は、指定の言語と地域に切り替えるためにalter sessionコマンドが発行されます。中間層のキャラクタ・セットがデータベースのキャラクタ・セットと一致する場合、mod_plsqlモジュールによりセッション変更コールは発行されません。

カテゴリ
構文 PlsqlNLSLanguage string
デフォルト なし
PlsqlNLSLanguage America_America.UTF8

  • ほとんどのアプリケーションでは、PlsqlTransferModeがCHARに設定されています。これは、PlsqlNLSLanguage内のキャラクタ・セットがデータベースのキャラクタ・セットと一致する必要があることを意味します。ただし、データベースとmod_plsqlモジュールのキャラクタ・セットがどちらも固定サイズで、幅が一致している場合は、キャラクタ・セットが一致していなくてもかまいません。レスポンスのキャラクタ・セットは、常にmod_plsqlモジュールのキャラクタ・セットです。

  • PlsqlTransferModeがRAWに設定されている場合は、このパラメータを無視できます。

PlsqlPathAlias

プロシージャ・コールにマップする仮想パスの別名を指定します。これはアプリケーション固有です。このディレクティブは、PlsqlPathAliasProcedureと組み合せて使用します。

カテゴリ
構文 PlsqlPathAlias string
デフォルト なし
PlsqlPathAlias url

  • パスの別名を使用しないアプリケーションの場合は、このパラメータを省略できます。

PlsqlPathAliasProcedure

URLの仮想パスが、PlsqlPathAliasで構成されたパス別名と一致した場合にコールするプロシージャを指定します。

カテゴリ
構文 PlsqlPathAliasProcedure string
デフォルト なし
PlsqlPathAliasProcedure portal.wwpth_api_alias.process_download

  • パスの別名を使用しないアプリケーションの場合は、このパラメータを省略できます。

PlsqlRequestValidationFunction

アプリケーション定義のPL/SQLファンクションを指定します。このファンクションにより、リクエストされたプロシージャのこれ以上の処理を許可および禁止できます。このファンクションは、DADからの実行を禁止されたパッケージおよびプロシージャ・コールをブロック・アウトして、PL/SQLアプリケーションについて厳重なセキュリティを実装する場合に役立ちます。

このパラメータによって定義されるファンクションには、次のプロトタイプが必要です。

boolean function_name (procedure_name IN varchar2)

procedure_nameパラメータには、リクエストで実行しようとしているプロシージャの名前が含まれます。

たとえば、ブラウザからコールできるすべてのPL/SQLアプリケーション・プロシージャがパッケージmypkg内にある場合、このファンクションの実装は次のようなものになります。

boolean my_validation_check (procedure_name varchar2)
is
begin
  if (upper (procedure_name) like upper ('myschema.mypkg%')) then
    return TRUE
  else
    return FALSE
  end if;
end;
カテゴリ
構文 PlsqlRequestValidationFunction string
デフォルト なし
PlsqlRequestValidationFunction myschema.mypkg.my_validation_check

  • デフォルトでは、すでにmod_plsqlモジュールは、特定のスキーマおよびパッケージへのダイレクトURLアクセスを禁止しています。詳細は、「PlsqlExclusionList」を参照してください。

  • アプリケーションに属し、ブラウザからコールできるリクエストのみを許可するように、このファンクションを実装することをお薦めします。

  • このファンクションは、すべてのリクエストについてコールされるため、できるだけ最適化してください。たとえば、次のようにすることをお薦めします。

    • 前述の例と同じようにこのファンクションが実装されるように、PL/SQLパッケージに名前を付けます。

    • 実装で表参照を実行し、許可するパッケージおよびプロシージャを決定する場合、共有プールにカーソルを固定すると、パフォーマンスが改善されることがあります。

PlsqlSessionCookieName

PlsqlAuthenticationModeがSingleSignOnに設定されている場合、Cookie名を指定します。このパラメータがサポートされるのは、Oracle Fusion Middlewareのリリースのみで、Oracle PortalおよびOracleシングル・サインオンで使用されます。

カテゴリ
構文 PlsqlSessionCookieName cookie_name
デフォルト DAD名と同じ
PlsqlSessionCookieName mycookie

  • DADでSingleSignOn認証を使用しない場合は、このパラメータを省略できます。他のほとんどの場合は、セッションのCookie名を省略する必要があります(また、このパラメータはデフォルトで自動的にDAD名に設定されます)。

  • セッションのCookie名を指定する必要があるのは、分散Oracle Portal環境に参加する必要があるOracle Portalインスタンスについてのみです。これらのOracle Portalノードを、統合されたクラスタとしてシームレスに参加する必要がある場合は、すべての参加ノードのセッションCookie名が同じであることを確認してください。

  • 独立したOracle Portalノードでは、別のセッションCookie名を使用する必要があります。

PlsqlSessionStateManagement

各mod_plsqlリクエストの終了時に、パッケージとセッションの状態をクリーンアップする方法を指定します。

  • StatelessWithResetPackageStateに設定すると、mod_plsqlモジュールは各mod_plsqlリクエストの終了時にdbms_session.reset_package_stateをコールします。これはデフォルト設定です。

  • StatelessWithPreservePackageStateに設定すると、mod_plsqlモジュールは各mod_plsqlリクエストの終了時にhtp.initをコールします。これにより、PL/SQL Web ToolKit内でセッション変数の状態がクリーンアップされます。PL/SQLアプリケーションは、そのアプリケーション固有のセッション状態のクリーンアップを行います。クリーンアップに失敗すると異常動作が発生し、リクエストは以前のリクエストで変更された状態の認識または操作を開始します。

  • StatelessWithFastResetPackageStateに設定すると、mod_plsqlモジュールは各mod_plsqlリクエストの終了時にdbms_session.modify_package_state(dbms_session.reinitialize)をコールします。このAPIはStatelessWithResetPackageStateモードより高速であり、一部のラッチ競合問題は回避されますが、このAPIが存在するのはリリース8.1.7.2以上のOracle Databaseのみです。このモードでは、メモリー使用量がデフォルト・モードよりやや多くなります。

カテゴリ
構文 PlsqlSessionStateManagement {StatelessWithResetPackageState | StatelessWithFastResetPackageState | StatelessWithPreservePackageState}
デフォルト StatelessWithResetPackageState
PlsqlSessionStateManagement StatelessWithPreservePackageState

  • 旧リリースの値stateful=noまたはstateful=STATELESS_RESETは、StatelessWithResetPackageStateに対応しています。

  • 旧リリースの値stateful=STATELESS_FAST_RESETは、StatelessWithFastResetPackageStateに対応しています。

  • 旧リリースの値stateful=STATELESS_PRESERVEは、StatelessWithPreservePackageStateに対応しています。

mod_plsqlモジュールでは、ステートフル・モードの操作はサポートされません。PL/SQLアプリケーションでステートフル動作を可能にするには、状態をCookieまたはデータベース(あるいはその両方)に保存します。

PlsqlTransferMode

データベースからのデータをmod_plsqlモジュールに送信するためのモードを指定します。ほとんどのアプリケーションでは、デフォルト値CHARを使用します。

カテゴリ
構文 PlsqlTransferMode {CHAR | RAW}
デフォルト CHAR
PlsqlTransferMode CHAR

  • このパラメータを変更する必要があるのは、同一のDADからのレスポンスを異なるキャラクタ・セットで返送できるようにする場合のみです。このような場合にはCHARモードは使用できません。レスポンス・データが常にデータベースのキャラクタ・セットからmod_plsqlのキャラクタ・セットに変換されるためです。

PlsqlUploadAsLongRaw

デフォルトのBLOBデータ型を使用せずに、LONGRAWデータ型としてアップロードするファイルの拡張子を指定します。フィールドのファイル拡張子に複数行からなるディレクティブを指定することで、デフォルトを上書きできます。このフィールドにアスタリスク(*)の値を指定すると、すべてのドキュメントがLONGRAW型としてアップロードされます。

カテゴリ
構文 PlsqlUploadAsLongRaw string multiline
デフォルト なし
PlsqlUploadAsLongRaw jpg

PlsqlUploadAsLongRaw gif


  • ドキュメントをアップロードまたはダウンロードしないアプリケーションの場合は、このパラメータを省略できます。

3.10.2.3 cache.conf

cache.confファイルには、mod_plsqlモジュールに実装されたファイル・システム・キャッシュ機能の構成の設定が含まれています。この構成ファイルが関係するのは、PL/SQLアプリケーションがOWA_CACHEパッケージを使用して、ファイル・システム内の動的生成コンテンツをキャッシュする場合のみです。

次のパラメータは、cache.confファイルで指定されます。

PlsqlCacheCleanupTime

キャッシュ・ストレージのクリーンアップの開始時刻を指定します。

この設定は、クリーンアップが発生する正確な日と時刻を定義します。頻度は日次、週次および月次に設定できます。

  • 頻度を日次で定義するには、キーワードEverydayを使用します。クリーンアップは毎日定義された時刻に始まります。たとえば、Everyday 2:00と指定すると、クリーンアップが毎日午前2時(現地時間)に発生します。

  • 頻度を週次で定義するには、曜日(SundayMondayTuesdayWednesdayThursdayFridaySaturday)を使用します。たとえば、Wednesday 15:30と指定すると、クリーンアップが毎週水曜日の午後3時30分(現地時間)に発生します。

  • 頻度を月次で定義するには、キーワードEverymonthを使用します。クリーンアップは月の最初の土曜日の定義された時刻に始まります。たとえば、Saturday Everymonth 23:00と指定すると、クリーンアップが毎月最初の土曜日の午後11時(現地時間)に発生します。

    カテゴリ
    構文 PlsqlCacheCleanupTime {Sunday-Saturday | Everyday | Everymonth} {hh:mm}
    デフォルト Saturday 23:00
    PlsqlCacheCleanupTime Monday 20:00

PlsqlCacheDirectory

mod_plsqlモジュールによってキャッシュ・ファイルが書き出されるディレクトリを指定します。このディレクトリは存在している必要があります。存在しない場合、Oracle HTTP Serverは起動しません。

UNIXでは、httpd子プロセスの所有者がこのディレクトリに対する書込み権限を持っている必要があります。

カテゴリ
構文 PlsqlCacheDirectory directory
デフォルト なし
PlsqlCacheDirectory ORACLE_INSTANCE/OHS/<ohs_name>

PlsqlCacheEnable

mod_plsqlのキャッシュを有効にします。

カテゴリ
構文 PlsqlCacheEnable {On | Off}
デフォルト Off
PlsqlCacheEnable On

  • アプリケーションでPL/SQL Web ToolkitのOWA_CACHEパッケージを使用しない場合は、キャッシュを無効にできます。そのような場合は、パフォーマンス上のメリットはほとんどありません。

PlsqlCacheMaxAge

キャッシュ済ファイルを、キャッシュ・メンテナンスのために削除されるまで、ファイル・システム・キャッシュに置くことができる最大期間(日数)を指定します。

この設定は、キャッシュ・システムに古いコンテンツが含まれないようにするためです。この設定により、古いキャッシュ・ファイルが削除され、新しいファイル用のスペースが作成されます。

カテゴリ
構文 PlsqlCacheMaxAge number
デフォルト 30(日)
PlsqlCacheMaxAge 20

PlsqlCacheMaxSize

キャッシュ・ファイルの最大サイズを指定します。

この設定は、1つのファイルがキャッシュ全体を占有できないようにします。一般的には、この値は総キャッシュ・サイズ(PlsqlCacheTotalSizeで指定)の約1から3パーセントに設定することをお薦めします。

カテゴリ
構文 PlsqlCacheMaxSize number
デフォルト 1048576
PlsqlCacheMaxSize 1048576

PlsqlCacheTotalSize

キャッシュ・ディレクトリの合計サイズを指定します。デフォルトは20MBです。

この設定により、キャッシュで使用できる領域の量が制限されます。PL/SQLキャッシュとセッションCookieキャッシュがこのキャッシュ領域を共有します。この設定は厳密な制限ではありません。通常の処理中に、一時的にこの制限を超えることがあります。これは正常な動作です。

クリーンアップ・アルゴリズムでは、この設定を使用してキャッシュ・ファイルをどの程度削減するかを判断します。したがって、実際のスペース上限は、物理的なストレージの最大使用可能サイズです。

このパラメータは、次のように値としてバイト数を取ります。

  • 1MB=1048576バイト

  • 10MB=10485760バイト

カテゴリ
構文 PlsqlCacheTotalSize number
デフォルト 20971520(バイト)
PlsqlCacheTotalSize 20971520

3.10.3 構成ファイルとパラメータ

表3-3に、前述の各項で説明したmod_plsqlファイルとそれに対応する構成パラメータを示します。

構成パラメータに値を指定するときは、Oracle HTTP Serverの値を指定する規則に従ってください。たとえば、値の中にスペースが含まれている場合は、値を二重引用符で囲む必要があります。例:

PlsqlNLSLanguage "TRADITIONAL CHINESE_TAIWAN.UTF8"

複数行ディレクティブにより、同じディレクティブをDAD内に複数回指定できます。

3.11 mod_wl_ohs

このモジュールを使用すると、リクエストをOracle HTTP ServerからOracle WebLogic Serverにプロキシできます。mod_wl_ohsモジュールは、Apache HTTP Server用のOracle WebLogic Serverプラグイン(mod_weblogic)とほぼ同じ機能を提供しますが、次に説明するような微細な違いがあります。

Apache HTTP Server用のOracle WebLogic Serverプラグイン(mod_weblogic)の詳細は、『Using Web Server Plug-Ins with Oracle WebLogic Server』を参照してください。

3.11.1 Oracle HTTP Serverでのmod_wl_ohsモジュールの構成

mod_wl_ohsモジュールはOracle HTTP Serverとともに最初からインストールおよびロードされていますが、デフォルトでは構成されていません。したがって、mod_wl_ohsを構成して、このモジュールで処理するアプリケーション・リクエストを指定する必要があります。

4.4.4項「mod_wl_ohsモジュールの構成」を参照してください。

3.11.2 mod_wl_ohsでのSSLの使用

mod_wl_ohsモジュールに対するSSL構成の手順については、『Oracle Fusion Middleware管理者ガイド』のOracle HTTP Serverからのアウトバウンド・リクエストでのSSLの有効化に関する項を参照してください。

3.11.3 mod_wl_ohsに対するIPv6の構成

mod_wl_ohsモジュールは、IPv6を使用してOracle WebLogic Serverと通信するように構成できます。

mod_wl_ohsに対するIPv6の構成の詳細は、『Oracle Fusion Middleware管理者ガイド』のIPv6に対するOracle HTTP Serverの構成に関する項を参照してください。