モジュール(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向けに開発されたモジュールについて説明します。この章の内容は、次のとおりです。
この項では、Oracle HTTP Serverにバンドルされているすべてのモジュールを示します。
オラクル社が開発したOracle HTTP Server用のモジュール
次のモジュールは、オラクル社により特にOracle HTTP Server向けに開発されたものです。
Oracle HTTP Server内のApacheおよびサード・パーティのベース・モジュール
Oracle HTTP Serverには、Apacheおよびサード・パーティのベース・モジュールも即時利用できるように組み込まれています。これらのモジュールは、オラクル社が開発したものではありません。
mod_access
mod_actions
mod_alias
mod_asis
mod_auth
mod_auth_anon
mod_auth_dbm
mod_autoindex
mod_cern_meta
mod_cgi
mod_define
mod_digest
mod_dir
mod_env
mod_example
mod_expires
mod_fastcgi
mod_headers
mod_imap
mod_include
mod_info
mod_log_agent
mod_log_config
mod_log_referer
mod_mime
mod_mime_magic
mod_mmap_static
mod_negotiation
mod_proxy
mod_rewrite
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経由で受信されたものとして扱います。
mod_onsintモジュールは、Oracle Notification Service(ONS)およびOracle Process Manager and Notification Server(OPMN)を使用した統合サポートを提供します。これはOracleモジュールであり、次の機能を提供します。
Oracle HTTP Server内でのONS通知にサブスクリプション・メカニズムを提供します。mod_insintは、Oracle HTTP Serverインスタンス内のすべてのモジュールに対する通知を受信します。
リスナーが起動され使用可能であることをOPMNが認識できるように、PROC_READY ONS
通知をパブリッシュします。また、DMSメトリックなどの情報や、リスナーへの接続方法に関する情報も提供します。これらの通知は、Oracle HTTP Serverインスタンスが実行されているかぎり、mod_onsintにより定期的に送信されます。
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
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ストリーム・ロジックが直接使用されます。
関連項目:
|
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セキュリティ・ガイド』 『Oracle Fusion Middleware管理者ガイド』のWeb層のSSLの構成に関する項 |
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セキュリティ・ガイド』を参照してください。 |
mod_perlモジュールは、Oracle HTTP ServerにPerlインタプリタを埋め込みます。これにより、起動時のオーバーヘッドが排除され、モジュールをPerlで記述できます。Oracle Fusion Middlewareでは、Perlバージョン5.10を使用します。
デフォルトでは、モジュールは無効です。mod_perlモジュールを有効化するには、4.4.3項「mod_perlモジュールの構成」の手順に従ってください。
この項では、データベースを使用するmod_perlユーザー向けの情報を提供します。また、ローカル・データベース接続をテストし、文字構成を設定する方法についても説明します。
Perlスクリプトは、Oracle用のDBI/DBDドライバを使用してデータベースにアクセスします。DBI/DBDドライバはOracle Fusion Middlewareに含まれています。このドライバは、Oracle Call Interface(OCI)をコールしてデータベースにアクセスします。
mod_perlを有効化した後、機能させるためにはmod_perl.conf
ファイル内のDBIを有効化する必要があります。DBIを有効化するには、次の手順を実行します。
mod_perl.conf
ファイルを編集します。
Fusion Middleware Controlで、Oracle HTTP Serverの「詳細構成」ページに移動します。
メニューからmod_perl.conf
ファイルを選択し、「実行」をクリックします。
mod_perl.conf
ファイルに次の行を追加します。
PerlModule Apache::DBI
「適用」をクリックして、ファイルを保存します。
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-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";
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' );
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を作成する必要があります。
DADを作成するには、次の手順を実行します。
dads.conf
構成ファイルを編集します。
mod_plsql構成ファイルの場所については、表3-1を参照してください。
次の形式のDADを追加します。
PL/SQL Webアプリケーションへのアクセスに使用する仮想パスを定義するOracle HTTP Serverの<Location>
ディレクティブ。このディレクティブは、Locationに適用されるディレクティブのセットをグループ化します。
たとえば、<Location /myapp>
ディレクティブは、http://host:port/myapp/
のようなURLを介してPL/SQL Webアプリケーションを起動するために使用する、/myapp
という仮想パスを定義します。
注意: 以前のリリースのmod_plsqlモジュールでは、常に接頭辞/pls を付けて仮想パスにマウントしていました。新しいリリースではこの制限は削除されましたが、以前のPL/SQLアプリケーションによって制限されてしまう場合もあります。 |
Oracle HTTP Serverに対して、Locationで定義された仮想パスに対するリクエストをmod_plsqlモジュールが処理できるように指示するOracle HTTP ServerのSetHandler
ディレクティブ。
SetHandler pls_handler
<Location>
ディレクティブのコンテキストで許可されるその他のOracle HTTP Serverのディレクティブ。通常は、次のディレクティブが使用されます。
Order deny,allow Allow from all
1つ以上の特定のmod_plsqlディレクティブ。例:
PlsqlDatabaseUsername scott PlsqlDatabasePassword tiger PlsqlDatabaseConnectString orcl PlsqlAuthenticationMode Basic
Locationのディレクティブのグループをクローズして、1つのDADを定義するOracle HTTP Serverの</Location>
ディレクティブ。
編集内容を保存します。
ORACLE_HOME/bin
ディレクトリにあるdadTool.pl
スクリプトを実行することで、DADパスワードを不明瞭化します。
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-1に示すように、mod_plsql構成パラメータは、ORACLE_INSTANCE
ディレクトリ内の構成ファイルに含まれています。
表3-1 Oracleインスタンス内のmod_plsql構成ファイル
ディレクトリ名 | 目次 |
---|---|
|
|
|
|
次の各項で、mod_plsql構成パラメータについて説明します。
plsql.conf
ファイルは、ORACLE_INSTANCE
/config/OHS/<ohs_name>/moduleconf
ディレクトリ内にあります。Oracle HTTP Serverでは、すべての.conf
ファイルが自動的にこのディレクトリ内にロードされます。plsql.conf
ファイルには、mod_plsqlモジュールをOracle HTTP ServerにロードするLoadModule
ディレクティブ、mod_plsqlモジュールのグローバル設定、およびdads.conf
とcache.conf
のインクルード・ディレクティブが含まれています。
関連項目: plsql.conf の詳細は、ORACLE_HOME/ohs/mod_plsql にあるplsql.README ファイルを参照してください。 |
plsql.conf
ファイルでは、次のパラメータを使用します。
mod_plsqlモジュールのDynamic Monitoring Service(DMS)を有効にします。
カテゴリ | 値 |
---|---|
構文 | PlsqlDMSEnable {On | Off} |
デフォルト | On |
例 | PlsqlDMSEnable On |
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 |
デバッグ・レベル・ログが書き出されるディレクトリを指定します。
ロギングが有効なときにログ・ファイルが生成される場所のディレクトリ名を設定します。このディレクトリの場所について混乱が生じないように、絶対パスの使用をお薦めします。
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 |
dads.conf
ファイルには、PL/SQLのデータベース・アクセス・ディスクリプタの構成パラメータが含まれています。(ファイルの場所については、表3-1を参照してください。) DADは、mod_plsqlモジュールがデータベース・サーバーに接続してHTTPリクエストを実行する方法を指定する値のセットです。
dads.conf
ファイルでは、次のパラメータを使用します。
リクエストされたプロシージャのコール後に起動するプロシージャを指定します。これにより、リクエストされたプロシージャがコールされた後にフック・ポイントを置くことができます。これは、リクエストされたプロシージャ内の問題のデバッグ中に、SQLトレース/SQLプロファイルを実行する場合に役立ちます。また、各プロシージャの実行後に特定のコールを確実に行う必要がある場合にも役立ちます。
カテゴリ | 値 |
---|---|
構文 | PlsqlAfterProcedure string |
デフォルト | なし |
例 | PlsqlAfterProcedure portal.mypkg.myafterproc |
このパラメータは、デバッグ目的にのみ使用してください。また、このパラメータを使用すると、SQLトレース/SQLプロファイルを停止できます。
mod_plsqlモジュールでプロシージャを実行する前に記述する必要があるかどうかを指定します。このパラメータをOn
に設定すると、mod_plsqlモジュールではプロシージャを起動する前に常に記述します。それ以外の場合は、mod_plsqlモジュールが内部的な経験則によりパラメータ・タイプを不正に解析した場合にのみ、プロシージャを記述します。
カテゴリ | 値 |
---|---|
構文 | PlsqlAlwaysDescribeProcedure {On | Off} |
デフォルト | Off |
例 | PlsqlAlwaysDescribeProcedure On |
このパラメータは、デバッグ目的にのみ使用してください。
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アプリケーションは、ごく少数です。
リクエストされたプロシージャのコール前に起動するプロシージャを指定します。これにより、リクエストされたプロシージャがコールされる前にフック・ポイントを置くことができます。これは、リクエストされたプロシージャ内の問題のデバッグ中に、SQLトレース/SQLプロファイルを実行する場合に役立ちます。また、各プロシージャの実行前に特定のコールを確実に行う必要がある場合にも役立ちます。
カテゴリ | 値 |
---|---|
構文 | PlsqlBeforeProcedure string |
デフォルト | なし |
例 | PlsqlBeforeProcedure portal.mypkg.mybeforeproc |
このパラメータは、デバッグ目的にのみ使用してください。また、このパラメータを使用すると、SQLトレース/SQLプロファイルを起動できます。
注意: この構成プロパティが変更されることはほとんどないため、たいていの場合はシステムのデフォルトで間に合います。 |
コレクション・バインド内の要素数のバインド中に使用する丸めサイズを指定します。PL/SQL文の実行中は、Oracle Databaseにより共有SQL領域内でPL/SQL文のキャッシュがメンテナンスされ、同じ文が再び実行される場合はキャッシュされた文が再利用されます。Oracleの一致条件では、文のテキストが同一で、バインド変数のデータ型が一致する必要があります。文字列の型が一致するには正確なバイト・サイズを指定する必要があり、コレクション・バインドの場合もコレクション内の要素数が重要になります。mod_plsqlモジュールでは文が動的にバインドされるため、共有キャッシュのヒット率は低く、ほぼ重複する値で満杯になって、共有領域でラッチの競合が発生する傾向があります。このパラメータでは、バインド長を最も近いレベルにバケット化して、このような影響を軽減します。
すべての数値は昇順で指定する必要があります。最後に指定したサイズに続くバケット・サイズは、最後のサイズの2倍とみなされます。
カテゴリ | 値 |
---|---|
構文 | PlsqlBindBucketLengths number multiline |
デフォルト | 4,20,100,400 |
例 | PlsqlBindBucketLengths 4
|
このパラメータが関連するのは、配列パラメータを持つプロシージャを使用し、可変個のパラメータをプロシージャに渡す場合のみです。
ほとんどのPL/SQLアプリケーションの場合は、デフォルトで十分です。
このパラメータの変更が必要かどうかを調べるには、SQL領域内でSQL文のバージョン番号をチェックします。
より大きい構成値の後は、mod_plsqlが必要に応じて最後の値を2倍にすることによって、さらに大きな値のバケット・サイズの自動生成を開始します。したがって、400の次のバケット値は800、その次は1600、のように続いていきます。
問題を軽減するために、パラメータの受渡しを柔軟にすることを考慮してください。
注意: この構成プロパティが変更されることはほとんどないため、たいていの場合はシステムのデフォルトで間に合います。 |
コレクション・バインド内の要素数のバインド中に使用する丸めサイズを指定します。PL/SQL文の実行中は、Oracle Databaseにより共有SQL領域内でPL/SQL文のキャッシュがメンテナンスされ、同じ文が再び実行される場合はキャッシュされた文が再利用されます。Oracleの一致条件では、文のテキストが同一で、バインド変数のデータ型が一致する必要があります。文字列の型が一致するには正確なバイト・サイズを指定する必要があり、コレクション・バインドの場合もコレクション内の要素数が重要になります。mod_plsqlモジュールでは文が動的にバインドされるため、共有キャッシュのヒット率は低く、ほぼ重複する値で満杯になって、共有領域でラッチの競合が発生する傾向があります。このパラメータでは、バインド幅を最も近いレベルにバケット化して、このような影響を軽減します。
すべての数値は昇順で指定する必要があります。最後に指定したサイズに続くバケット・サイズは、最後のサイズの2倍とみなされます。
最後のバケット幅は4000以下にする必要があります。これは、配列のバインド幅を4000以下にするというOCIの制限によるものです。
カテゴリ | 値 |
---|---|
構文 | PlsqlBindBucketWidths number multiline |
デフォルト | 32,128,1450,2048,4000 |
例 | PlsqlBindBucketWidths 40
|
このパラメータが関連するのは、配列パラメータを持つプロシージャを使用し、可変個のパラメータをプロシージャに渡す場合のみです。
ほとんどのPL/SQLアプリケーションの場合は、デフォルトで十分です。
このパラメータの変更が必要かどうかを調べるには、SQL領域内でSQL文のバージョン番号をチェックします。
より大きい構成値の後は、mod_plsqlが必要に応じて最後の値を2倍にすることによって、さらに大きな値のバケット・サイズの自動生成を開始します。したがって、400の次のバケット値は800、その次は1600、のように続いていきます。
問題を軽減するために、パラメータの受渡しを柔軟にすることを考慮してください。
PL/SQLプロシージャに渡される環境変数のデフォルト・セットに、CGI環境変数のオーバーライドおよび追加を実行するように指定します。これは、追加、オーバーライドまたは削除する名前/値ペアの複数行からなるディレクティブです。1つのディレクティブに指定できる環境変数は1つのみです。
変数名を指定して、Oracle HTTP Server環境からCGI環境変数を追加できます。CGI環境変数を削除するには、空白に設定します。固有の名前/値ペアを追加するには、構文myname=myvalueを使用します。
カテゴリ | 値 |
---|---|
構文 | PlsqlCGIEnvironmentList string multiline |
デフォルト | なし |
例 |
|
ここで追加した環境変数は、ファンクションowa_util.get_cgi_env
を介してPL/SQLアプリケーションで使用できます。
mod_plsqlモジュールの接続プールをテストするためのタイムアウトをミリ秒単位で指定します。
PlsqlConnectionValidationがAutomatic
またはAlwaysValidate
に設定されていると、mod_plsqlモジュールはプーリングされたデータベース接続をテストしようとします。このパラメータは、mod_plsqlモジュールが接続は使用できないと判断する前に、テスト・リクエストの完了を待機する最大時間を指定します。
カテゴリ | 値 |
---|---|
構文 | PlsqlConnectionTimeout number |
デフォルト | 10000(ミリ秒) |
例 | PlsqlConnectionTimeout 5000 |
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: パケット・ライターに障害が発生しました
Oracle Databaseへの接続を指定します。
カテゴリ | 値 |
---|---|
構文 | PlsqlDatabaseConnectString string {ServiceNameFormat | SIDFormat | TNSFormat | NetServiceNameFormat}
stringパラメータは、2番目の引数に応じて次のように変化します。
フォーマット引数を指定しない場合、mod_plsqlモジュールでは、stringがHOST:PORT:SID形式であるか、Oracle Netで解決可能であると想定します。この2つは、指定された文字列にコロンがあるかどうかにより区別されます。 新しいDADでは |
デフォルト | なし |
例 |
|
データベースが同じ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モジュールの観点からは、TNSFormat
とNetServiceNameFormat
は類似しており、Oracle Netにより解決される接続ディスクリプタを意味します。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 string |
デフォルト | なし |
例 | PlsqlDatabasePassword tiger |
注意:
PlsqlAuthenticationModeをBasicに設定して動的認証を使用するDADの場合を除き、これは必須パラメータです。
SingleSignOn認証を使用するDADの場合、このパラメータではスキーマの所有者名を使用します。
DADパスワードを手動で構成変更した後に、ORACLE_HOME/bin
にあるdadTool.pl
スクリプトを実行して、DADパスワードを不明瞭化することをお薦めします。
DADパスワードを不明瞭化するには、次の手順を実行します。
必要に応じて、次のコマンドを使用して、ユーザーをOracleソフトウェアの所有者ユーザー(通常はoracle
)に変更します。
$ su - oracle
現行リリースの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
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
ディレクトリを、Oracle HTTP Serverの現行リリースのmod_plsql構成ディレクトリに変更します。
cd ORACLE_HOME/bin
次のPerlスクリプトを起動して、DADパスワードを不明瞭化します。
perl dadTool.pl -f dadfilename
dadfilename
はdads.conf
のファイル名で、DADファイルへのフルパスが含まれます。
例:
perl dadTool.pl -f /u01/app/oracle/as11gr1/ORACLE_INSTANCE
/config/OHS/<ohs_name>/mod_plsql/dads.conf
データベースへのログインに使用するユーザー名を指定します。
カテゴリ | 値 |
---|---|
構文 | PlsqlDatabaseUsername string |
デフォルト | なし |
例 | PlsqlDatabaseUsername scott |
PlsqlAuthenticationModeをBasicに設定して動的認証を使用するDADの場合を除き、これは必須パラメータです。
SingleSignOn認証を使用するDADの場合、このパラメータはスキーマの所有者名です。
URLに何も指定されていない場合にコールするデフォルトのプロシージャを指定します。
カテゴリ | 値 |
---|---|
構文 | PlsqlDefaultPage string |
デフォルト | なし |
例 | PlsqlDefaultPage myschema.mypackage.home |
Oracle HTTP Serverリライト規則を使用しても、この構成パラメータを設定した場合と同じ結果になります。
これは、ドキュメント表からのドキュメントのダウンロードを開始する、URL内の仮想パスです。たとえば、このパラメータをdocs
に設定すると、次のURLによってこの形式のURLでドキュメントのダウンロード・プロセスが開始されます。
/pls/dad/docs /pls/plsqlapp/docs
カテゴリ | 値 |
---|---|
構文 | PlsqlDocumentPath string |
デフォルト | docs |
例 | PlsqlDocumentPath docs |
ドキュメントのアップロードまたはダウンロードを実行しないアプリケーションの場合は、このパラメータを省略します。
ドキュメントのダウンロード開始時にコールするプロシージャを指定します。このプロシージャは、ダウンロード処理用にコールされます。
カテゴリ | 値 |
---|---|
構文 | PlsqlDocumentProcedure string |
デフォルト | なし |
例 | PlsqlDocumentProcedure portal.wwdoc_process.process_download |
ドキュメントのアップロードまたはダウンロードを実行しないアプリケーションの場合は、このパラメータを省略します。
すべてのドキュメントのアップロード先となるデータベース内の表を指定します。
カテゴリ | 値 |
---|---|
構文 | PlsqlDocumentTablename string |
デフォルト | なし |
例 | PlsqlDocumentTablename myschema.document_table |
ドキュメントのアップロードまたはダウンロードを実行しないアプリケーションの場合は、このパラメータを省略します。
mod_plsqlエラーのエラー・レポート・モードを指定します。
ブラウザから直接実行することが禁じられているプロシージャ、パッケージまたはスキーマ名のパターンを指定します。これは複数行からなるディレクティブで、各パターンを個別の行に指定します。パターンには大/小文字の区別がなく、アスタリスク(*)などのワイルドカードを使用できます。ダイレクト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.*
これらは、次のいずれかを含むURLにアクセスできません。
これは、すべての保護が無効になります。この使用方法は、アクティブなサイトには推奨されません。 |
mod_plsqlモジュールでは、このパラメータで指定したパターン以外に、次の特殊文字を含むプロシージャ名も使用できません。
タブ
改行
復帰
一重引用符
逆スラッシュ
改ページ
左カッコ
右カッコ
空白
これは変更できません。
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パッケージでは文字の最小のバイト・サイズが想定されるため、各行のサイズが最大値まで変更されることはありません。
mod_plsqlモジュールが追加のパフォーマンス・ロギングを行うために使用するモードを指定します。
InfoDebugモード: より多くの情報がApacheのerror_logに記録されます。これは、Apacheのinfoロギング・レベルとともに使用されます。Apacheのロギング・レベルがこのレベル以上に設定されていない場合は、この設定が無視されます。
カテゴリ | 値 |
---|---|
構文 | PlsqlInfoLogging InfoDebug |
デフォルト | 指定なし |
例 | PlsqlInfoLogging InfoDebug |
このロギング設定は、PL/SQLアプリケーションでの問題のデバッグに役立ちます。
プーリングされたデータベース接続がクローズされて再オープンされる前に処理する必要のある最大リクエスト数を指定します。
カテゴリ | 値 |
---|---|
構文 | PlsqlMaxRequestsPerSession number |
デフォルト | 1000 |
例 | PlsqlMaxRequestsPerSession 500 |
このパラメータを使用すると、PL/SQLアプリケーションによる長期間のセッション再利用により発生する、メモリーとリソースの問題を軽減できます。
このパラメータは変更しないでください。ほとんどの場合は、デフォルトで十分です。
このパラメータを小さい値に設定すると、パフォーマンスが低下することがあります。使用頻度が低くパフォーマンスが問題にならないDADや、リクエスト数が限られているDADの場合は、小さい値に設定するとメリットが得られることがあります。
この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に設定されている場合は、このパラメータを無視できます。
プロシージャ・コールにマップする仮想パスの別名を指定します。これはアプリケーション固有です。このディレクティブは、PlsqlPathAliasProcedureと組み合せて使用します。
カテゴリ | 値 |
---|---|
構文 | PlsqlPathAlias string |
デフォルト | なし |
例 | PlsqlPathAlias url |
パスの別名を使用しないアプリケーションの場合は、このパラメータを省略できます。
URLの仮想パスが、PlsqlPathAliasで構成されたパス別名と一致した場合にコールするプロシージャを指定します。
カテゴリ | 値 |
---|---|
構文 | PlsqlPathAliasProcedure string |
デフォルト | なし |
例 | PlsqlPathAliasProcedure portal.wwpth_api_alias.process_download |
パスの別名を使用しないアプリケーションの場合は、このパラメータを省略できます。
PlsqlRequestValidationFunction
アプリケーション定義のPL/SQLファンクションを指定します。このファンクションにより、リクエストされたプロシージャのこれ以上の処理を許可および禁止できます。このファンクションは、DADからの実行を禁止されたパッケージおよびプロシージャ・コールをブロック・アウトして、PL/SQLアプリケーションについて厳重なセキュリティを実装する場合に役立ちます。
このパラメータによって定義されるファンクションには、次のプロトタイプが必要です。
booleanfunction_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パッケージに名前を付けます。
実装で表参照を実行し、許可するパッケージおよびプロシージャを決定する場合、共有プールにカーソルを固定すると、パフォーマンスが改善されることがあります。
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名を使用する必要があります。
各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またはデータベース(あるいはその両方)に保存します。
データベースからのデータをmod_plsqlモジュールに送信するためのモードを指定します。ほとんどのアプリケーションでは、デフォルト値CHAR
を使用します。
カテゴリ | 値 |
---|---|
構文 | PlsqlTransferMode {CHAR | RAW} |
デフォルト | CHAR |
例 | PlsqlTransferMode CHAR |
このパラメータを変更する必要があるのは、同一のDADからのレスポンスを異なるキャラクタ・セットで返送できるようにする場合のみです。このような場合にはCHAR
モードは使用できません。レスポンス・データが常にデータベースのキャラクタ・セットからmod_plsqlのキャラクタ・セットに変換されるためです。
デフォルトのBLOBデータ型を使用せずに、LONGRAWデータ型としてアップロードするファイルの拡張子を指定します。フィールドのファイル拡張子に複数行からなるディレクティブを指定することで、デフォルトを上書きできます。このフィールドにアスタリスク(*
)の値を指定すると、すべてのドキュメントがLONGRAW型としてアップロードされます。
カテゴリ | 値 |
---|---|
構文 | PlsqlUploadAsLongRaw string multiline |
デフォルト | なし |
例 | PlsqlUploadAsLongRaw jpg
|
ドキュメントをアップロードまたはダウンロードしないアプリケーションの場合は、このパラメータを省略できます。
cache.conf
ファイルには、mod_plsqlモジュールに実装されたファイル・システム・キャッシュ機能の構成の設定が含まれています。この構成ファイルが関係するのは、PL/SQLアプリケーションがOWA_CACHE
パッケージを使用して、ファイル・システム内の動的生成コンテンツをキャッシュする場合のみです。
次のパラメータは、cache.conf
ファイルで指定されます。
キャッシュ・ストレージのクリーンアップの開始時刻を指定します。
この設定は、クリーンアップが発生する正確な日と時刻を定義します。頻度は日次、週次および月次に設定できます。
頻度を日次で定義するには、キーワードEveryday
を使用します。クリーンアップは毎日定義された時刻に始まります。たとえば、Everyday 2:00
と指定すると、クリーンアップが毎日午前2時(現地時間)に発生します。
頻度を週次で定義するには、曜日(Sunday
、Monday
、Tuesday
、Wednesday
、Thursday
、Friday
、Saturday
)を使用します。たとえば、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 |
mod_plsqlモジュールによってキャッシュ・ファイルが書き出されるディレクトリを指定します。このディレクトリは存在している必要があります。存在しない場合、Oracle HTTP Serverは起動しません。
UNIXでは、httpd子プロセスの所有者がこのディレクトリに対する書込み権限を持っている必要があります。
カテゴリ | 値 |
---|---|
構文 | PlsqlCacheDirectory directory |
デフォルト | なし |
例 | PlsqlCacheDirectory ORACLE_INSTANCE /OHS/<ohs_name> |
mod_plsqlのキャッシュを有効にします。
カテゴリ | 値 |
---|---|
構文 | PlsqlCacheEnable {On | Off} |
デフォルト | Off |
例 | PlsqlCacheEnable On |
アプリケーションでPL/SQL Web ToolkitのOWA_CACHE
パッケージを使用しない場合は、キャッシュを無効にできます。そのような場合は、パフォーマンス上のメリットはほとんどありません。
キャッシュ済ファイルを、キャッシュ・メンテナンスのために削除されるまで、ファイル・システム・キャッシュに置くことができる最大期間(日数)を指定します。
この設定は、キャッシュ・システムに古いコンテンツが含まれないようにするためです。この設定により、古いキャッシュ・ファイルが削除され、新しいファイル用のスペースが作成されます。
カテゴリ | 値 |
---|---|
構文 | PlsqlCacheMaxAge number |
デフォルト | 30(日) |
例 | PlsqlCacheMaxAge 20 |
キャッシュ・ファイルの最大サイズを指定します。
この設定は、1つのファイルがキャッシュ全体を占有できないようにします。一般的には、この値は総キャッシュ・サイズ(PlsqlCacheTotalSizeで指定)の約1から3パーセントに設定することをお薦めします。
カテゴリ | 値 |
---|---|
構文 | PlsqlCacheMaxSize number |
デフォルト | 1048576 |
例 | PlsqlCacheMaxSize 1048576 |
キャッシュ・ディレクトリの合計サイズを指定します。デフォルトは20MBです。
この設定により、キャッシュで使用できる領域の量が制限されます。PL/SQLキャッシュとセッションCookieキャッシュがこのキャッシュ領域を共有します。この設定は絶対的な上限ではありません。通常の処理中に、一時的にこの上限を超えることがありますが、これは正常な動作です。
クリーンアップ・アルゴリズムでは、この設定を使用してキャッシュ・ファイルをどの程度削減するかを判断します。したがって、実際のスペース上限は、物理的なストレージの最大使用可能サイズです。
このパラメータは、次のように値としてバイト数を取ります。
1MB=1048576バイト
10MB=10485760バイト
カテゴリ | 値 |
---|---|
構文 | PlsqlCacheTotalSize number |
デフォルト | 20971520(バイト) |
例 | PlsqlCacheTotalSize 20971520 |
表3-3に、前述の各項で説明したmod_plsqlファイルとそれに対応する構成パラメータを示します。
構成パラメータに値を指定するときは、Oracle HTTP Serverの値を指定する規則に従ってください。たとえば、値の中にスペースが含まれている場合は、値を二重引用符で囲む必要があります。例:
PlsqlNLSLanguage "TRADITIONAL CHINESE_TAIWAN.UTF8"
複数行ディレクティブにより、同じディレクティブをDAD内に複数回指定できます。
表3-3 mod_plsqlの構成ファイルとパラメータ
構成ファイル | パラメータ |
---|---|
|
PlsqlIdleSessionCleanupInterval |
|
PlsqlRequestValidationFunction |
|
|
このモジュールを使用すると、リクエストをOracle HTTP ServerからOracle WebLogic Serverにプロキシできます。mod_wl_ohsモジュールは、Apache HTTP Server用のOracle WebLogic Serverプラグイン(mod_weblogic)とほぼ同じ機能を提供しますが、次に説明するような微細な違いがあります。
Oracleのセキュリティ・レイヤー(NZ)を使用して、モジュールにSSLサポートを提供します。mod_wl_ohsモジュールを介して、Oracle Walletの使用を可能にするWlSSlWalletという新しいディレクティブがOracle HTTP Serverに追加されています。
Oracle HTTP ServerとOracle WebLogic Serverの間の双方向SSLをサポートします。
WebLogic Serverとの通信に対してIPv6をサポートします。
Apache HTTP Server用のOracle WebLogic Serverプラグイン(mod_weblogic)の詳細は、『Using Web Server Plug-Ins with Oracle WebLogic Server』を参照してください。
mod_wl_ohsモジュールはOracle HTTP Serverとともに最初からインストールおよびロードされていますが、デフォルトでは構成されていません。したがって、mod_wl_ohsを構成して、このモジュールで処理するアプリケーション・リクエストを指定する必要があります。
4.4.4項「mod_wl_ohsモジュールの構成」を参照してください。
mod_wl_ohsモジュールに対するSSL構成の手順については、『Oracle Fusion Middleware管理者ガイド』のOracle HTTP Serverからのアウトバウンド・リクエストでのSSLの有効化に関する項を参照してください。