Oracle Application Server mod_plsqlユーザーズ・ガイド 10g(10.1.3.1.0) B31864-01 |
|
mod_plsqlはOracle HTTP Serverのプラグインであり、SQL*Net接続を介してブラウザ・リクエストをデータベース・ストアド・プロシージャのコールにマッピングすることでデータベースと通信します。通常、仮想パスの/pls
で示されます。mod_plsqlゲートウェイは、Web上でのPL/SQLベースのアプリケーションの構築と運用をサポートします。PL/SQLストアド・プロシージャはデータベース表からデータを取得し、Webブラウザで表示する書式付きデータとHTMLコードが含まれたHTTPレスポンスを生成できます。詳細は、『Oracle Databaseアプリケーション開発者ガイド-基礎編』を参照してください。
PL/SQL Web Toolkitを使用すると、Webアプリケーションを、Oracleデータベース・サーバーに格納されるPL/SQLプロシージャとして開発できます。このツールキット内のパッケージにより定義されるプロシージャ、ファンクションおよびデータ型を、独自のストアド・プロシージャで使用できます。詳細は、『Oracle Databaseアプリケーション開発者ガイド-基礎編』を参照してください。
mod_plsqlのリリースは、mod_plsqlバイナリでoversioncheck
スクリプトを実行すると判断できます。
UNIXプラットフォームでは、次のコマンドを発行します。
ORACLE_HOME/Apache/Apache/bin/oversioncheck ORACLE_HOME/Apache/modplsql/bin/modplsql.so
Windowsプラットフォームでは、次のコマンドを発行します。
ORACLE_HOME¥Apache¥Apache¥bin¥oversioncheck ORACLE_HOME¥bin¥modplsql.dll
select owa_util.get_version from dual;
OWAパッケージのリリースが表示されます。たとえば、10.1.2.0.4などです。
この問合せに失敗した場合は、OWAパッケージのリリースが古すぎるためにバージョニング機能がありません。新しいリリースにアップグレードすることをお薦めします。
詳細は、1.2項「必須パッケージのインストール」を参照してください。
次のタスクを実行すると、OWAパッケージをアンインストールできます。
cd ORACLE_HOME/Apache/modplsql
owadins.sql
スクリプトを起動してOWAパッケージをアンインストールします。
次のSQL問合せを使用すると、OWAパッケージの位置を判断できます。
SELECT OWNER, OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_NAME = 'OWA'
次の結果が表示されます。
SQL> 1 SELECT OWNER, OBJECT_TYPE 2 FROM DBA_OBJECTS 3* WHERE OBJECT_NAME = 'OWA' OWNER OBJECT_TYPE ----- ----------- SYS PACKAGE SYS PACKAGE BODY PUBLIC SYNONYM
このSQL問合せよりも多数の行が表示される場合は、他のスキーマに古いOWAパッケージが存在し、それがmod_plsqlユーザーにとって問題になっている可能性があることを意味します。この場合は、すべてのバージョンのOWAパッケージをデータベースからアンインストールし、製品とともに出荷されているOWAパッケージを再インストールします。
mod_plsqlでは、Oracle HTTP ServerファイルのORACLE_HOME
/Apache/Apache/logs/error_log
に詳細なエラー・メッセージが記録されます。このファイルをスキャンして問題を把握してください。mod_plsqlのロギングの詳細は、「mod_plsqlではどのような種類のロギング機能を使用できますか。」を参照してください。
データベースにOWAパッケージが重複してインストールされていると、この問題が発生する場合があります。詳細は、「データベースに重複してインストールされているOWAパッケージを検出してクリーン・アップするには、どうすればよいですか。」を参照してください。
この問題の最も一般的な原因は、中間層とバックエンド・データベースのキャラクタ・セットが一致せず、Oracle HTTP ServerでHTTP KeepAlive
が有効化されていることです。設定にこの種の誤りがあると、無効なContent-Lengthがブラウザに送信され、ブラウザはKeepAliveTimeout
間隔によってストリームがクローズされた場合にのみレスポンス・ストリームの終わりを検出します。この問題を解決するには、DADとデータベースのPlsqlNLSLanguage
パラメータが一致することを確認します。
これが問題の原因ではない場合、PL/SQLアプリケーションにパフォーマンス問題があると考えられます。これは次の方法で確認できます。
error_log
にないかスキャンします。この時間は、データベースから見たターゲットPL/SQLプロシージャにかかった時間を表します。この値が高い場合は、標準のデータベース・プロファイリング方法を使用して、PL/SQLアプリケーションをデバッグする必要があります。
はい。ただし、アプリケーションを実行する前に、データベースにOWAパッケージをインストールする必要があります。1.2項「必須パッケージのインストール」を参照してください。
『Oracle HTTP Server管理者ガイド』の「mod_plsql」を参照してください。
第2章「mod_plsqlを使用したアプリケーション・データベース・アクセスの保護」を参照してください。
mod_plsqlは、各httpdプロセスでスレッドを起動します。このスレッドのジョブは、アイドル状態のデータベース・セッションとファイル・システムのキャッシュをクリーン・アップすることです。このスレッドをクリーン・アップ・スレッドと呼びます。
第4章「PL/SQLのパフォーマンスの最適化」を参照してください。
mod_plsqlでは、PlsqlIdleSessionCleanupInterval
の構成設定に基づいて、使用されていないデータベース・セッションがクリーン・アップされます。この他、プールされたデータベース・セッションから提供されるリクエストの数は、設定ディレクティブPlsqlMaxRequestsPerSession
により制御されます。HTTPDプロセスがシャットダウンされると、データベース・セッションがクローズされます。
詳細は、3.11.3項「接続プールでの停止中のデータベース接続の検出」を参照してください。
クリーン・アップ・スレッドは、PlsqlCacheCleanupTime
の設定に基づいてファイル・システム・キャッシュをスキャンします。デフォルトのクリーン・アップ時刻は、現地時間で毎日午後11時です。
はい。mod_plsqlはOracle HTTP ServerのLocation
ディレクティブを使用するため、mod_plsqlで処理されるように任意の仮想パスを設定できます。
第4章「PL/SQLのパフォーマンスの最適化」を参照してください。
error_log
ファイルのORACLE_HOME
/Apache/Apache/logs/error_log
にアラート、警告またはエラーが記録されます。mod_plsqlで記録される情報の量は、Oracle HTTP Serverのhttpd.conf
のLogLevel
パラメータ設定で制御されます。デフォルトでは、このパラメータはwarn
に設定されます。
ORACLE_HOME
/Apache/Apache/conf/httpd.conf
を編集し、LogLevel
をinfo
(デフォルトはwarn
)に設定します。
ORACLE_HOME/opmn/bin/opmnctl restartproc type=ohs
ORACLE_HOME
/Apache/Apache/logs/error_log
が次のようなエントリで始まることを確認します。
[Tue Apr 01 14:54:49 2003] [info] mod_plsql: [perf] 130.35.92.145 /pls/app/htp.p status=200 user=scott reqTime=21ms connSU=(null), 0ms connRO=(null),0ms connNSSO=HIT,1ms procTime=17ms sessionTidyTime=0ms cache=(null) cookie=(null), 0ms pageCalls=0,0ms bytes=5 describe=No,0ms streamTime=0ms pid=175 sessFile=(null) userFile=834¥0855 sysFile=470¥5949 cacheLevel=(null) cacheTime=0ms dbProcTime=15ms id=1049237685:130.35.92.145:373:1 spid=(null) qs=(null) requestTrace=(null) cookieLen=0 cookieValue=(null) reqUserTime=16ms assertUser=(null) subid=(null) authLevel=(null) oraError=0
このモードでは、デバッグ・メッセージがOracle HTTP Serverのerror_log
ファイルに記録され、さらにmod_plsql固有のログがORACLE_HOME
/Apache/modplsql/logs
に作成されます。ログの位置は、ORACLE_HOME
/Apache/modplsql/conf/plsql.conf
内でPlsqlLogDirectory
ディレクティブを使用して設定可能です。デバッグ・レベルのロギングを有効化する手順は、次のとおりです。
高可用性のために、mod_plsqlベースのアプリケーションでは次のことを認識する必要があります。
PlsqlDatabaseConnectString
には、Oracle Internet DirectoryのLDAP検索を介して名前解決が行われるように、接続文字列形式のNetServiceNameFormat
を使用する必要があります。これにより、データベースのhost:port:service_name
情報を中央のリポジトリで設定でき、必要に応じたRACノードの追加または削除が容易になります。
mod_plsqlを実行する中間層とバックエンド・データベースの間にファイアウォールが存在する場合は、mod_plsqlでアイドル・セッションのクリーン・アップ間隔を、ファイアウォールでの間隔よりも短く設定する必要があります。これにより、mod_plsqlが確立した接続をファイアウォールがクローズすることはなくなります。
ServerName
およびPort
を使用してアサートすることをお薦めします。なんらかの理由でホスト名とポートをOracle HTTP Serverレベルでアサートしない場合は、mod_plsql設定ディレクティブPlsqlCGIEnvironmentList
を使用して、mod_plsqlで実行中のPL/SQLアプリケーションに対してのみ異なるホスト名とポートをアサートできます。たとえば、次のようになります。
PlsqlCGIEnvironmentList SERVER_NAME=lbr.us.oracle.com
かわりにOracle HTTP Serverのhttpd.conf
内のServerName
ディレクティブを使用することを考慮してください。
PlsqlCGIEnvironmentList SERVER_PORT=9999
かわりにOracle HTTP Serverのhttpd.conf
内のPort
ディレクティブを使用することを考慮してください。
PlsqlCGIEnvironmentList HTTP_HOST=myservername.us.oracle.com:9999
SERVER_NAME:SERVER_PORT
の組合せです。
PlsqlCGIEnvironmentList REQUEST_PROTOCOL=https
詳細は、2.1.2項「mod_plsqlでのPlsqlExclusionListディレクティブへのルールの追加」を参照してください。
このエラーは、mod_plsqlからデータベースに接続できないことを意味します。
次のことを確認してください。
PlsqlDatabaseConnectString
パラメータを使用してデータベースに接続できること。
ほとんどの場合、この問題が発生するのは、SQL*NetがORACLE_HOME
/network/admin
にある設定情報を使用して接続文字列パラメータを解決できないためです。
TNSFormat
またはNetServiceNameFormat
を使用して設定したエントリの場合は、tnsping dad_connect_string
を使用して接続文字列情報を確認します。たとえば、次のようになります。
tnsping "cn=iasdb,cn=oraclecontext"
または
tnsping iasdb.us.oracle.com
SIDFormat
およびServiceNameFormat
を使用して設定したエントリの場合は、データベース・リスナーのhostname、portおよびSID/service_name情報が一致していることを確認します。その後、SQL*PlusでDADにあるユーザー名、パスワードおよび接続文字列を使用してデータベースに接続できることを確認します。
接続できない場合、トラブルシューティング情報についてはOracle SQL*Netのマニュアルを参照してください。
mod_plsqlでは次の形式のURLをサポートしていません。
たとえば、次のようになります。
http://www.acme.com:9000/pls/mydad/mypackage.myproc()
またはhttp://www.acme.com:9000/pls/mydad/mypackage.myproc(123)
サポートされているURLの形式の詳細は、3.3項「mod_plsqlの実行」を参照してください。
|
Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|