...

日本語 - OTN

by user

on
Category: Documents
186

views

Report

Comments

Transcript

日本語 - OTN
Oracle® Application Server 10g
mod_plsql ユーザーズ・ガイド
10g(9.0.4)
部品番号 : B12326-01
2004 年 1 月
Oracle Application Server 10g mod_plsql ユーザーズ・ガイド , 10g(9.0.4)
部品番号 : B12326-01
原本名 : Oracle Application Server 10g mod_plsql Use’s Guide, 10g (9.0.4)
原本部品番号 : B10357-01
原本著者 : Peter Lubbers
原本協力者 : Pravin Prabhakar, Pushkar Kapasi, Eric Lee, Cheryl Smith, Sanjay Khanna, Ron Decker,
Kannan Muthukkaruppan
Copyright © 1996, 2003 Oracle Corporation. All rights reserved.
制限付権利の説明
このプログラム(ソフトウェアおよびドキュメントを含む)には、オラクル社およびその関連会社に所
有権のある情報が含まれています。このプログラムの使用または開示は、オラクル社およびその関連会
社との契約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権と工業
所有権に関する法律により保護されています。
独立して作成された他のソフトウェアとの互換性を得るために必要な場合、もしくは法律によって規定
される場合を除き、このプログラムのリバース・エンジニアリング、逆アセンブル、逆コンパイル等は
禁止されています。
このドキュメントの情報は、予告なしに変更される場合があります。オラクル社およびその関連会社は、
このドキュメントに誤りが無いことの保証は致し兼ねます。これらのプログラムのライセンス契約で許
諾されている場合を除き、プログラムを形式、手段(電子的または機械的)
、目的に関係なく、複製また
は転用することはできません。
このプログラムが米国政府機関、もしくは米国政府機関に代わってこのプログラムをライセンスまたは
使用する者に提供される場合は、次の注意が適用されます。
U.S. GOVERNMENT RIGHTS
Programs, software, databases, and related documentation and technical data delivered to U.S.
Government customers are "commercial computer software" or "commercial technical data" pursuant to
the applicable Federal Acquisition Regulation, and agency-specific supplemental regulations. As such,
use, duplication, disclosure, modification, and adaptation of the Programs, including documentation and
technical data, shall be subject to the licensing restrictions set forth in the applicable Oracle license
agreement, and, to the extent applicable, the additional rights set forth in FAR 52.227-19, Commercial
Computer Software--Restricted Rights (June 1987). Oracle Corporation, 500 Oracle Parkway, Redwood
City, CA 94065.
このプログラムは、核、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーションへの
用途を目的としておりません。このプログラムをかかる目的で使用する際、上述のアプリケーションを
安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)
、その他の対策を講じ
ることは使用者の責任となります。万一かかるプログラムの使用に起因して損害が発生いたしましても、
オラクル社およびその関連会社は一切責任を負いかねます。
Oracle は Oracle Corporation およびその関連会社の登録商標です。その他の名称は、Oracle
Corporation または各社が所有する商標または登録商標です。
目次
はじめに ............................................................................................................................................................................
v
関連ドキュメント ..................................................................................................................................................... vi
表記規則 .................................................................................................................................................................... vii
Oracle のサービスとサポート ............................................................................................................................... vii
1
mod_plsql の概要
クライアント・リクエストの処理 .......................................................................................................................
データベース・アクセス記述子(DAD)
)...........................................................................................................
データベース・アクセス記述子(
mod_plsql の実行 ..................................................................................................................................................
トランザクション・モード ...................................................................................................................................
サポートされるデータ型 .......................................................................................................................................
パラメータの受渡し ...............................................................................................................................................
名前によるパラメータの受渡し(パラメータのオーバーロード).........................................................
1-2
1-3
1-3
1-6
1-6
1-6
1-7
オーバーロードと PL/SQL 配列 .......................................................................................................... 1-8
柔軟なパラメータの受渡し ........................................................................................................................... 1-9
2 パラメータ・インタフェース ............................................................................................................ 1-9
4 パラメータ・インタフェース .......................................................................................................... 1-10
大きなパラメータの受渡し ......................................................................................................................... 1-11
ファイルのアップロードとダウンロード ......................................................................................................... 1-11
ドキュメント表の定義 ................................................................................................................................. 1-12
CONTENT 列のセマンティクス ........................................................................................................
CONTENT_TYPE 列のセマンティクス ............................................................................................
LAST_UPDATED 列のセマンティクス ............................................................................................
DAD_CHARSET 列のセマンティクス .............................................................................................
以前のスタイルのドキュメント表の定義 .................................................................................................
1-13
1-13
1-13
1-13
1-13
ドキュメントのアップロード / ダウンロードの構成パラメータ ........................................................ 1-14
i
PlsqlDocumentTablename ..................................................................................................................
PlsqlDocumentPath(ドキュメント・アクセス・パス)...............................................................
PlsqlDocumentProcedure(ドキュメント・アクセス・プロシージャ).....................................
PlsqlUploadAsLongRaw .....................................................................................................................
ファイルのアップロード .............................................................................................................................
1-15
1-15
1-15
1-16
1-16
アップロード・ファイルの属性(MIME タイプ)の指定 .................................................................... 1-18
複数のファイルのアップロード ................................................................................................................. 1-19
ファイルのダウンロード ............................................................................................................................. 1-19
BLOB のダイレクト・ダウンロード ......................................................................................................... 1-20
パスのエイリアシング(ダイレクト・アクセス URL)
).................................................................................
Common Gateway Interface(
(CGI)環境変数
)環境変数 ..............................................................................................
CGI 環境変数の追加およびオーバーライド ............................................................................................
PlsqlNLSLanguage .......................................................................................................................................
1-21
1-22
1-23
1-24
REQUEST_CHARSET CGI 環境変数 ................................................................................................ 1-24
REQUEST_IANA_CHARSET CGI 環境変数 ................................................................................... 1-25
mod_plsql での制限事項 .................................................................................................................................... 1-25
2
mod_plsql の使用
インストールの前に ............................................................................................................................................... 2-2
必須パッケージのインストール ........................................................................................................................... 2-2
Oracle Application Server または WebDB リスナーからのアップグレード ........................................ 2-5
mod_plsql の設定ページへのアクセス .............................................................................................................. 2-5
Oracle Enterprise Manager から DAD 設定ページへのアクセス ........................................................... 2-5
Portal から DAD 設定ページへのアクセス ................................................................................................ 2-6
OracleAS Portal リリース 3.0.9 で使用するための mod_plsql の設定 ......................................................... 2-7
3
mod_plsql を使用したアプリケーション・データベース・アクセスの保護
mod_plsql を使用したユーザー認証 .................................................................................................................. 3-2
Basic(データベース制御認証).................................................................................................................... 3-2
Oracle Application Server の Basic 認証モード ......................................................................................... 3-3
グローバル OWA、カスタム OWA およびパッケージ別(カスタム認証)......................................... 3-3
ユーザーの認証解除 ............................................................................................................................................... 3-4
PUBLIC に付与されている PL/SQL プロシージャの保護 .............................................................................. 3-5
mod_plsql での PlsqlExclusionList ディレクティブの使用 .................................................................... 3-5
PlsqlExclusionList ディレクティブへのアクセス ..................................................................................... 3-5
ii
A
よくある質問
索引
iii
iv
はじめに
このマニュアルでは、Oracle Application Server 10g(9.0.4)への mod_plsql のインストー
ル、設定およびメンテナンスの方法について説明します。次の章が含まれています。
■
第 1 章 - mod_plsql とその機能の概要を説明します。
■
第 2 章 - mod_plsql の使用方法について説明します。
■
■
第 3 章 - mod_plsql を使用してデータベースと PL/SQL を保護する方法について説明し
ます。
付録 A - よくある質問とそれに対する回答について説明します。
新機能
■
■
■
■
拡張されたキャッシュ・クリーン・アップ・アルゴリズム。キャッシュのクリーン・
アップ時間を設定できます。
拡張された OWA パッケージ。マルチバイト・データベースからのレスポンス・データ
のバイト・パック率が改善され、データベースへのラウンドトリップの所要時間が短縮
されました。
htp.p など、頻繁にコールされる OWA パッケージ API における PL/SQL ファンクショ
ン・コールのオーバーヘッドの減少。
拡張された mod_plsql でのパフォーマンス・ロギング。詳細は、付録 A「よくある質問」
の「mod_plsql ではどのような種類のロギング機能を使用できますか ?」を参照してく
ださい。
■
DAD 構成でのスキーマ・パスワードの不明瞭化により強化されたセキュリティ。
■
ログの分析および相関付けのための Enterprise Manager との統合。
関連項目 : 『Oracle Application Server 10g 管理者ガイド』
v
■
mod_plsql にアクセスするための仮想パスに /pls が必要であるという要件の削除。この
パスは引き続き使用できますが、必須ではなくなりました。リリース 9.0.x 以降は mod_
plsql が Oracle HTTP Server 構成に統合されているため、mod_plsql へのエントリ・ポ
イントとして /pls/DAD を指定するという依存性はなくなりました。OracleAS Portal
の DAD には、引き続き書式 /pls/dad を使用する必要があることに注意してくださ
い。
関連ドキュメント
Oracle Application Server マニュアル・セットに含まれる次のマニュアルも役立ちます。
vi
タイトル
内容
Oracle HTTP Server 管理者ガイド
Oracle HTTP Server モジュール - コマンドライン・ツー
ルを使用した管理と、手動による設定ファイル(DAD
パラメータ、http.conf など)の編集
Oracle Application Server 10g
パフォーマンス・ガイド
パフォーマンスとチューニングに関する資料および
キャッシング
Oracle Application Server 10g 管理者
ガイド
Oracle Enterprise Manager Console(DAD 設定)を使用
した Oracle Application Server の管理
Oracle Application Server 10g アップ
グレード 10g (9.0.4)
変更されたパラメータ、および DAD への移行に使用す
るツール
Oracle Application Server 10g
PL/SQL Web Toolkit リファレンス
OWA パッケージに関する情報
Oracle Application Server 10g インス
トレーション・ガイド
Oracle Application Server のインストール
Oracle Application Server 10g Oracle
Application Server からの移行
前のバージョンの Oracle Application Server からの移行
Oracle Application Server 10g 概要
Oracle Application Server の概要
表記規則
このマニュアルでは、次の表記規則を使用しています。
表記規則
.
.
意味
コード例の中にある垂直の省略記号は、コード例に直接関係のない情報
が省略されていることを示します。
.
...
構文またはコマンドの中にある水平の省略記号は、例に直接関係のない
構文またはコマンドの一部が省略されていることを示します。
太字
本文の中にある太字は、本文中に定義されている用語を示します。
<>
山カッコで囲まれている項目は、ユーザーが指定する名前を示します。
[]
大カッコで囲まれている項目は、オプション句を示します。選択肢の中
から 1 つ選択するか、または何も入力しなくてもかまいません。
Oracle のサービスとサポート
Oracle 製品およびグローバル・サービスに関する情報は、次の URL で入手できます。
http://www.oracle.co.jp
次の各項に、各サービスに接続するための URL を記載します。
OTN-J(
(Oracle Technology Network Japan)
)
OTN-J(Oracle Technology Network Japan)へは、次の URL で登録することができます。
http://otn.oracle.co.jp
OTN-J では、テクニカル・ペーパー、ディスカッション・フォーラム、コード・サンプル、
製品マニュアル、セルフサービス開発者のサポート、および Oracle の開発者用の主要製品
を提供しています。これによって、Oracle テクノロジに基づいたアプリケーションの開発お
よび配布を促進できます。
オラクル社カスタマ・サポート・センター
テクニカル・サポートへの連絡先のリストは、次の URL で入手できます。
http://www.oracle.co.jp/support/
問題点についての情報を事前に準備しておくためのテンプレートが用意されています。CSI
番号(ある場合)または詳細な連絡先情報が必要です。また、プロジェクト固有の情報があ
ればそれも含めてください。
vii
製品およびドキュメント
製品のマニュアルは、次の URL にあります。
http://otn.oracle.co.jp/document/
研修およびトレーニング
研修に関する情報とスケジュールは、次の URL で入手できます。
http://www.oracle.co.jp/education/
viii
1
mod_plsql の概要
Oracle Application Server は、Web アプリケーションの運用のためにオラクル社の中間層製
品群を 1 つのソリューションに統合します。mod_plsql は、Web 上での PL/SQL ベース・
アプリケーションの構築をサポートします。PL/SQL ストアド・プロシージャは、データ
ベースからデータを取得し、Web ブラウザで表示するデータとコードが含まれた HTTP レ
スポンスを生成します。mod_plsql は、Oracle Portal など、他の Oracle 製品もサポートし
ています。
この章の内容は、次のとおりです。
■
クライアント・リクエストの処理
■
データベース・アクセス記述子(DAD)
■
mod_plsql の実行
■
トランザクション・モード
■
サポートされるデータ型
■
パラメータの受渡し
■
ファイルのアップロードとダウンロード
■
パスのエイリアシング(ダイレクト・アクセス URL)
■
Common Gateway Interface(CGI)環境変数
■
mod_plsql での制限事項
mod_plsql の概要
1-1
クライアント・リクエストの処理
クライアント・リクエストの処理
mod_plsql は、データベースと通信を行う Oracle HTTP Server のプラグインです。これに
よって、ブラウザ・リクエストが、SQL*Net 接続を通じてデータベース・ストアド・プロ
シージャ・コールにマッピングされます。通常、仮想パスの /pls で示されます。
次に、サーバーがクライアント・リクエストを受信するときのステップの概要を説明しま
す。
1.
Oracle HTTP Server がクライアント・ブラウザから PL/SQL Server Page リクエストを
受信します。
2.
Oracle HTTP Server は、そのリクエストを mod_plsql にルーティングします。
3.
mod_plsql は、リクエストを Oracle データベースに転送します。mod_plsql は、DAD
に格納された設定情報を使用して、データベースに接続します。
4.
mod_plsql は、コール・パラメータを準備して、アプリケーション内の PL/SQL プロ
シージャを実行します。
1-2 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
mod_plsql の実行
5.
PL/SQL プロシージャは、データベースからアクセスしたデータおよび PL/SQL Web
Toolkit を使用して、HTML ページを生成します。
6.
レスポンスが mod_plsql に返されます。
7.
Oracle HTTP Server は、そのレスポンスをクライアント・ブラウザに送信します。
mod_plsql から実行されたプロシージャは、HTTP レスポンスをクライアントに返します。
この作業を簡単にするために、mod_plsql には PL/SQL Web Toolkit が含まれています。
PL/SQL Web Toolkit には、OWA パッケージと呼ばれるパッケージのセットが含まれていま
す。これらのパッケージをストアド・プロシージャ内で使用して、リクエスト情報の取得、
HTML タグの作成およびクライアントへのヘッダー情報の返信を行います。すべてのユー
ザーがアクセスできるように、このツールキットは共通スキーマにインストールします。
データベース・アクセス記述子(DAD)
)
データベース・アクセス記述子(
各 mod_plsql リクエストは、データベース・アクセス記述子(DAD)に関連付けられてい
ます。DAD は、データベース・アクセスに使用される設定値のセットです。DAD により、
次のような情報が指定されます。
■
データベース別名(Net8 サービス名)
■
データベースがリモートの場合、その接続文字列
■
ドキュメントのアップロードおよびダウンロード用のプロシージャ
また、DAD にはユーザー名とパスワードの情報を指定できます。指定がない場合には、
URL の実行時にユーザー名とパスワードを入力するプロンプトが表示されます。
関連項目 : DAD パラメータの説明と mod_plsql 構成ファイルの概要は、
『Oracle HTTP Server 管理者ガイド』を参照してください。
mod_plsql の実行
mod_plsql を Web ブラウザで実行するには、次の形式で URL を入力します。
protocol://hostname[:port]/DAD_location/[[!][schema.][package.]proc_name[?query_string]]
表 1-1 mod_plsql 実行時のパラメータ
パラメータ
説明
protocol
http または https のいずれかを使用できます。SSL の場合は、
https を使用します。
hostname
Web サーバーが稼動しているマシンです。
mod_plsql の概要
1-3
mod_plsql の実行
表 1-1 mod_plsql 実行時のパラメータ(続き)
実行時のパラメータ(続き)
パラメータ
説明
port
アプリケーション・サーバーがリスニングしているポートです。
指定しない場合、ポート 80 が使用されます。
(オプション)
DAD location
Web サーバーで設定した PL/SQL リクエストを処理するための
仮想パスです。DAD location に使用できるのは ASCII 文字のみで
す。
! 記号
柔軟なパラメータの受渡しスキームを使用することを示します。
詳細は、1-9 ページの「柔軟なパラメータの受渡し」を参照して
ください。
(オプション)
schema
(オプション)
package
(オプション)
データベース・スキーマ名です。指定しない場合、package.proc_
name の名前解決は、URL リクエストを処理したデータベース・
ユーザーに基づいて行われます。
PL/SQL ストアド・プロシージャを含んだパッケージです。指定
しない場合、プロシージャはスタンドアロンになります。
proc_name
実行する PL/SQL ストアド・プロシージャです。ファンクション
ではなく、プロシージャを指定する必要があります。IN 引数の
み使用可能です。
?query_string
ストアド・プロシージャのパラメータです。この文字列は、GET
メソッドの書式に従います。たとえば、次のようになります。
(オプション)
■
■
■
複数のパラメータはアンパーサント(&)で区切ります。渡
される値内の空白文字はプラス(+)に置き換えられます。
HTML フォームを使用して文字列を生成する場合(文字列を
自分で生成するのではなく)、書式化は自動的に行われます。
HTTP リクエストが HTTP の POST メソッドを使用してデー
タを mod_plsql に送信する場合もあります。詳細は、1-5
ページの「POST メソッド、GET メソッドおよび HEAD メ
ソッド」を参照してください。
例 1-1 DAD location として /pls/mydad が Web サーバーに設定されており、ブラウザが次の
URL を送信します。
http://www.acme.com:9000/pls/mydad/mypackage.myproc
この場合、www.acme.com で稼動し、ポート 9000 でリスニングしている Web サーバーが
リクエストを処理します。Web サーバーは、リクエストを受信すると、そのリクエストを
mod_plsql に渡します。これは、その Web サーバーが mod_plsql を実行するように設定さ
れていることが、/pls/mydad により示されるためです。次に、mod_plsql は、
/pls/mydad に関連付けられている DAD を使用して、mypackage に格納されている
myproc プロシージャを実行します。
1-4 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
mod_plsql の実行
例 1-2 URL を、DAD、スキーマまたはストアド・プロシージャ名を含めずに指定します。
、スキーマまたはストアド・プロシージャ名を含めずに指定します。
を、
http://www.acme.com:9000/pls/mydad
この場合、mydad という DAD のデフォルトのホーム・ページ(DAD の設定ページで指定
されている)が表示されます。
注意 : dads.conf ファイルで DAD パラメータを正しく設定しないと、
Oracle HTTP Server の error_log ファイルにログ・メッセージが書き込
まれ、その DAD が無効化されます。その DAD にブラウザからアクセス
しているユーザーには、HTTP 500 のステータス・エラーが表示されます。
POST メソッド、GET
メソッドおよび HEAD メソッド
メソッド、
HTTP プロトコルの POST メソッド、GET メソッドおよび HEAD メソッドは、パラメー
タ・データをアプリケーションに渡す方法(通常は名前 / 値ペア形式)をブラウザに対して
指示します。パラメータ・データは HTML フォームによって生成されます。
mod_plsql アプリケーションでは、いずれのメソッドも使用できます。各メソッドのセキュ
アは、使用する転送プロトコル(http または https)によって決定されます。
■
■
■
■
POST メソッドを使用する場合、パラメータは Request Body 内で渡されます。大量のパ
ラメータ・データをサーバーに渡す場合は、通常、POST メソッドを使用します。
GET メソッドを使用する場合、パラメータは問合せ文字列を使用して渡されます。この
メソッドには、使用するオペレーティング・システムにより、名前 / 値ペアの値の長さ
が環境変数の値の最大長を超えることができないという制限があります。さらに、オペ
レーティング・システムにより、定義できる環境変数の数も制限されます。
HEAD メソッドを使用する場合、GET メソッドと同じ機能を使用できます。唯一の違い
は、HTTP ステータス行および HTTP ヘッダーのみが返されることです。コンテンツ・
データは、ブラウザに返信されません。このメソッドは、リクエストが正しく処理され
ているかどうかの確認のみを行う監視ツールで有効です。
複合モードでの使用 - mod_plsql では、一部のパラメータを問合せ文字列で渡し、それ
以外のパラメータを POST データとして渡すことができます。たとえば、procedure foo
(a varchar2, b number) で、値 v と 1 をそれぞれ a と b に渡す場合は、次の 3 つの方法
で値を渡して URL を作成できます。
■
すべての値を問合せ文字列の一部として指定します。
http://host:port/pls/DAD/foo?a=v&b=1
■
すべての値を POST データの一部として指定します。
http://host:port/pls/DAD/foo, POST data="a=v&b=1"
■
一部のパラメータは URL で指定し、それ以外のパラメータは POST データで指定し
ます。
http://host:port/pls/DAD/foo?a=v, POST data="b=1"
mod_plsql の概要
1-5
トランザクション・モード
トランザクション・モード
プロシージャを実行するために URL リクエストを処理した後、エラーがあれば、mod_plsql
によりロールバックが実行されます。そうでない場合は、コミットが実行されます。このメ
カニズムでは、トランザクションが複数の HTTP リクエストにまたがることはできません。
この状態を保持しないモデルの場合、アプリケーションは、通常 HTTP Cookie またはデー
タベース表を使用して状態を維持します。
サポートされるデータ型
HTTP でサポートされるのはキャラクタ・ストリームのみのため、mod_plsql では PL/SQL
データ型の次のサブセットがサポートされます。
■
NUMBER
■
VARCHAR2
■
TABLE OF NUMBER
■
TABLE OF VARCHAR2
レコードはサポートされません。
パラメータの受渡し
mod_plsql は、次の処理をサポートしています。
■
名前によるパラメータの受渡し
プロシージャまたはファンクションを起動する URL 内の各パラメータは、一意の名前
により識別されます。パラメータのオーバーロードがサポートされています。詳細は、
1-7 ページの「名前によるパラメータの受渡し(パラメータのオーバーロード)
」を参照
してください。
■
柔軟なパラメータの受渡し
プロシージャの先頭に感嘆符(!)が付加されます。詳細は、1-9 ページの「柔軟なパラ
メータの受渡し」を参照してください。
■
大きなパラメータ(最大 32KB)の受渡し
詳細は、1-11 ページの「大きなパラメータの受渡し」を参照してください。
1-6 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
パラメータの受渡し
注意 : mod_plsql では、値を PL/SQL 表に格納することで複数の値をと
る変数が処理されます。これにより、ユーザーが選択できる値の数を柔軟
に設定し、ユーザーによる選択を 1 単位として簡単に処理できます。それ
ぞれの値は、PL/SQL 表の 1 行に索引 1 から順番に格納されます。複数の
値をとる変数の(問合せ文字列に指定されている順で)最初の値は索引 1、
同じ変数の 2 番目の値は索引 2 に格納されます。PL/SQL 表の値の順序が
プロシージャで重要な場合は、問合せ文字列に含まれる変数の順序を決定
するか、または PL/SQL アプリケーションを変更して内部的に順序付けさ
せる必要があります。
複数の値をとる変数がない場合、変数値はプロシージャのパラメータに位
置ではなく名前で渡されるため、変数の順序は重要ではありません。
mod_plsql 環境でパラメータとして使用する PL/SQL 表は、ベース型を
VARCHAR2 とする必要があります。Oracle では、VARCHAR2 を NUMBER、
DATE または LONG などの他のデータ型に変換できます。VARCHAR2 変数
の最大長は 32K です。
PL/SQL 表に対して 1 つ以上の値が送信されるという保証がない場合
(ユーザーがオプションをまったく選択しなくてもよい場合など)は、
HIDDEN フォーム・エレメントを使用して最初の値を提供します。
PL/SQL 表に値を提供しないとエラーが生成されます。また、PL/SQL 表
のデフォルト値は提供できません。
名前によるパラメータの受渡し(パラメータのオーバーロード)
オーバーロードにより、名前が同じでパラメータの数、順序またはデータ型のファミリが異
なる複数のサブプログラム(プロシージャまたはファンクション)を使用できます。オー
バーロードされたサブプログラムをコールすると、PL/SQL コンパイラは渡されたデータ型
に基づいて、どのサブプログラムをコールするかを決定します。
PL/SQL では、ローカル・サブプログラムとパッケージ・サブプログラムをオーバーロード
できます。スタンドアロン・サブプログラムはオーバーロードできません。
パラメータ数が同じサブプログラムをオーバーロードする場合は、パラメータに違う名前を
付ける必要があります。HTML データはデータ型に関連付けられないため、mod_plsql は、
どのバージョンのサブプログラムをコールすればよいか判断できません。
たとえば、PL/SQL では、プロシージャに対して同じパラメータ名を使用して、次の例に示
す 2 つのプロシージャを定義できますが、これを mod_plsql で使用するとエラーが発生しま
す。
-- legal PL/SQL, but not for mod_plsql
CREATE PACKAGE my_pkg AS
PROCEDURE my_proc (val IN VARCHAR2);
PROCEDURE my_proc (val IN NUMBER);
END my_pkg;
mod_plsql の概要
1-7
パラメータの受渡し
エラーを回避するには、パラメータに異なる名前をつけます。たとえば、次のようになりま
す。
-- legal PL/SQL and also works for mod_plsql
CREATE PACKAGE my_pkg AS
PROCEDURE my_proc (valvc2 IN VARCHAR2);
PROCEDURE my_proc (valnum IN NUMBER);
END my_pkg;
最初のバージョンのプロシージャを実行する URL は次のようになります。
http://www.acme.com/pls/mydad/my_pkg.my_proc?valvc2=input
2 番目のバージョンのプロシージャを実行する URL は次のようになります。
http://www.acme.com/pls/mydad/my_pkg.my_proc?valnum=34
オーバーロードと PL/SQL 配列
パラメータ名が同じで、1 つのプロシージャのデータ型が owa_util.ident_arr(varchar2 の
表)
、もう 1 つのプロシージャのデータ型がスカラー型のオーバーロード PL/SQL プロシー
ジャがあるとします。このような場合でも、mod_plsql はこの 2 つのプロシージャを区別で
きます。たとえば、次のプロシージャがあるとします。
CREATE PACKAGE my_pkg AS
PROCEDURE my_proc (val IN VARCHAR2); -- scalar data type
PROCEDURE my_proc (val IN owa_util.ident_arr); -- array data type
END my_pkg;
これらのプロシージャには、それぞれ val という同じ名前のパラメータが 1 つあります。
mod_plsql が val パラメータの値を 1 つだけ持つリクエストを受け取ると、スカラー・デー
タ型のプロシージャが実行されます。
例 1-3 次の URL を送信して、スカラー・バージョンのプロシージャを実行します。
http://www.acme.com/pls/mydad/my_proc?val=john
mod_plsql は、val パラメータの値が複数存在するリクエストを受け取ると、配列データ型
のプロシージャを実行します。
例 1-4 次の URL を送信して、配列バージョンのプロシージャを実行します。
http://www.acme.com/pls/mydad/my_proc?val=john&val=sally
確実に配列バージョンを実行できるようにする場合は、HTML ページで HIDDEN フォー
ム・エレメントを使用してダミーの値を送信します。このダミーの値は、プロシージャ内で
チェックされ、破棄されます。
1-8 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
パラメータの受渡し
柔軟なパラメータの受渡し
ユーザーがエレメントを必要な数だけ選択できるような HTML フォームを使用できます。こ
れらのエレメントにそれぞれ異なる名前が付いている場合は、オーバーロード・プロシー
ジャを作成して可能な組合せを個別に処理する必要があります。または、問合せ文字列に含
まれる名前が、ユーザーが選択するエレメントに関係なく確実に毎回一貫したものになるよ
うに、HIDDEN フォーム・エレメントを挿入できます。mod_plsql は、ユーザーが任意の
数のエレメントを選択できる HTML フォームを処理するために、柔軟なパラメータの受渡
しをサポートすることで、この操作を容易にします。
URL ベースのプロシージャ実行で柔軟なパラメータの受渡しを使用するには、URL 内でプ
ロシージャ名の先頭に感嘆符(!)を付加します。2 パラメータまたは 4 パラメータを使用で
きます。2 パラメータ・インタフェースによって、mod_plsql のパフォーマンスが改善され
ます。4 パラメータ・インタフェースは、互換性維持のためにサポートされています。
2 パラメータ・インタフェース
procedure [proc_name]
(name_array IN [array_type],
value_array IN [array_type]);
表 1-2 2 パラメータ・インタフェースのパラメータ
パラメータ
説明
proc_name
実行する PL/SQL プロシージャの名前です。
(必須)
name_array
問合せ文字列から取り出される名前(1 から順番に索引付けされ
る)を送信された順序で示します。
value_array
問合せ文字列から取り出される値(1 から順番に索引付けされる)
を送信された順序で示します。
array_type
varchar2 型の表による任意の PL/SQL 索引です(owa.vc_arr な
ど)。
(必須)
例 1-5 次の URL を送信します。
http://www.acme.com/pls/mydad/!scott.my_proc?x=john&y=10&z=doe
感嘆符(!)接頭辞により、柔軟なパラメータの受渡しを使用する必要があることを mod_
plsql に知らせます。これにより、プロシージャ scott.myproc が実行され、次の 2 つの引数が
渡されます。
name_array ==> (‘x’, ‘y’, ‘z’)
value_array ==> (’john’, ’10’, ’doe’)
mod_plsql の概要
1-9
パラメータの受渡し
注意 : このスタイルの柔軟なパラメータの受渡しを Oracle Application
Server で使用する場合は、パラメータ name_array および value_array を使
用してプロシージャを定義する必要があります。これらの引数のデータ型
は、例に示したデータ型と一致する必要があります。
4 パラメータ・インタフェース
4 パラメータ・インタフェースは、互換性維持のためにサポートされています。
procedure [proc_name]
(num_entires IN NUMBER,
name_array IN [array_type],
value_array IN [array_type],
reserved in [array_type]);
表 1-3 4 パラメータ・インタフェースのパラメータ
パラメータ
説明
proc_name
実行する PL/SQL プロシージャの名前です。
(必須)
num_entries
問合せ文字列内の名前 / 値ペアの数です。
name_array
問合せ文字列から取り出される名前(1 から順番に索引付けされ
る)を送信された順序で示します。
value_array
問合せ文字列から取り出される値(1 から順番に索引付けされる)
を送信された順序で示します。
reserved
未使用です。今後使用するために予約されています。
array_type
varchar2 型の表による任意の PL/SQL 索引です(owa.vc_arr な
ど)。
(必須)
例 1-6 query_string で名前 x が重複している次の URL を送信します。
http://www.acme.com/pls/mydad/!scott.my_pkg.my_proc?x=a&y=b&x=c
感嘆符(!)接頭辞により、柔軟なパラメータの受渡しを使用することが mod_plsql に指示
されます。これにより、プロシージャ scott.my_pkg.myproc が実行され、次の 2 つの引
数が渡されます。
num_entries ==> 3
name_array ==> (‘x’, ‘y’, ‘x’);
value_array ==> (‘a’, ‘b’, ‘c’)
reserved ==> ()
1-10 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
ファイルのアップロードとダウンロード
注意 : このスタイルの柔軟なパラメータの受渡しを Oracle Application
Server で使用する場合は、パラメータ num_entries、name_array、value_
array および reserved を使用してプロシージャを定義する必要があります。
これらの引数のデータ型は、例に示したデータ型と一致する必要がありま
す。
大きなパラメータの受渡し
スカラー引数として渡される値と、varchar2 引数の索引付き表の要素として渡される値に使
用できるサイズは、最大 32KB です。
たとえば、柔軟なパラメータの受渡し(1-9 ページの「柔軟なパラメータの受渡し」を参照)
を使用する場合、URL の query_string 部分の名前または値は、それぞれ実行されるプロシー
ジャの name_array または value_array 引数のエレメントとして渡されます。これらの
名前または値に使用できるサイズは、最大 32KB です。
ファイルのアップロードとダウンロード
mod_plsql では、次の機能を提供します。
■
■
■
キャラクタ・セットを変換せずに、ファイルをロー・バイト・ストリームとしてアップ
ロードおよびダウンロードすることが可能です。ファイルは、ドキュメント表にアップ
ロードされます。PL/SQL アップロード・ハンドラ・ルーチンが適切な表の列を取得で
きるよう、主キーが渡されます。
異なるアプリケーションのファイルを混同しないよう、アプリケーションごとに 1 つ以
上の表を、アップロードされるファイル用に指定することが可能です。
問合せ文字列を使用しない形式の URL 経由でこれらの表のファイルにアクセスすること
が可能です。たとえば、次のようになります。
http://www.acme.com:9000/pls/mydad/docs/cs250/lecture1.htm
これは、URL の相互参照を含んだファイル・セットのアップロードをサポートするため
に必要です。
■
■
1 回のフォーム送信につき複数のファイルをアップロードすることが可能です。
ドキュメント表の LONG RAW および BLOB(バイナリ・ラージ・オブジェクト)型の
列にファイルをアップロードすることが可能です。
この項の内容は、次のとおりです。
■
ドキュメント表の定義
■
以前のスタイルのドキュメント表の定義
■
ドキュメントのアップロード / ダウンロードの構成パラメータ
mod_plsql の概要
1-11
ファイルのアップロードとダウンロード
■
ファイルのアップロード
■
アップロード・ファイルの属性(MIME タイプ)の指定
■
複数のファイルのアップロード
■
ファイルのダウンロード
■
BLOB のダイレクト・ダウンロード
ドキュメント表の定義
DAD ごとにドキュメント格納表を指定できます。ドキュメント格納表には、次の定義が必
要です。
CREATE TABLE [table_name] (
NAME
VARCHAR2(256) UNIQUE NOT NULL,
MIME_TYPE
VARCHAR2(128),
DOC_SIZE
NUMBER,
DAD_CHARSET
VARCHAR2(128),
LAST_UPDATED
DATE,
CONTENT_TYPE
VARCHAR2(128),
[content_column_name] [content_column_type]
[ , [content_column_name] [content_column_type]]
);
table_name は、ユーザーが選択できます。content_column_type 型には、LONG
RAW または BLOB のいずれかを使用します。
content_column_name は、対応する content_column_type によって異なります。
■
■
content_column_type が LONG RAW の場合、content_column_name は
CONTENT にする必要があります。
content_column_type が BLOB の場合、content_column_name は BLOB_
CONTENT にする必要があります。
次に、有効なドキュメント表の定義例を示します。
CREATE TABLE MYDOCTABLE (
NAME
VARCHAR(128)
MIME_TYPE
VARCHAR(128),
DOC_SIZE
NUMBER,
DAD_CHARSET
VARCHAR(128),
LAST_UPDATED
DATE,
CONTENT_TYPE
VARCHAR(128),
CONTENT
LONG RAW,
BLOB_CONTENT
BLOB ;
);
UNIQUE NOT NULL,
1-12 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
ファイルのアップロードとダウンロード
CONTENT 列のセマンティクス
表の内容は、CONTENT 列に格納されます。ドキュメント表には、複数の CONTENT 列を
含めることが可能です。ただし、ドキュメント表の各行について、CONTENT 列は 1 つのみ
使用されます。その他の CONTENT 列は NULL に設定されます。
CONTENT_TYPE 列のセマンティクス
CONTENT_TYPE 列は、ドキュメントが格納されている CONTENT 列を追跡するために使用
されます。ドキュメントがアップロードされると、mod_plsql により、この列の値が型名に
設定されます。
たとえば、ドキュメントが BLOB_CONTENT 列にアップロードされた場合、ドキュメント
の CONTENT_TYPE 列には文字列 BLOB が設定されます。
LAST_UPDATED 列のセマンティクス
LAST_UPDATED 列には、ドキュメントの作成日時または最終更新日時が反映されます。ド
キュメントがアップロードされると、mod_plsql により、ドキュメントの LAST_UPDATED
列にデータベース・サーバーの時間が設定されます。
その後、アプリケーションがドキュメントの内容または属性を変更する場合、 LAST_
UPDATED の時間も更新されるようにする必要があります。
mod_plsql では、LAST_UPDATED 列を使用して、HTTP クライアント(ブラウザ)がドキュ
メントのキャッシュ済バージョンを使用できるかどうかをチェックし、HTTP クライアント
に結果を知らせます。これにより、ネットワークの通信量が削減され、サーバーのパフォー
マンスが改善されます。
DAD_CHARSET 列のセマンティクス
DAD_CHARSET 列は、ファイルのアップロード時のキャラクタ・セット設定を追跡します。
この列は、今後使用するために予約されています。
以前のスタイルのドキュメント表の定義
WebDB リリース 2.x より前のリリースで使用されているドキュメント・モデルとの下位互換
性を維持するために、mod_plsql では、CONTENT_TYPE、DAD_CHARSET および LAST_
UPDATED 列が存在しない、以前のドキュメント格納表の定義もサポートしています。
/* older style document table definition (DEPRECATED) */
CREATE TABLE [table_name]
(
NAME
VARCHAR2(128),
MIME_TYPE
VARCHAR2(128),
DOC_SIZE
NUMBER,
CONTENT
LONG RAW
);
mod_plsql の概要
1-13
ファイルのアップロードとダウンロード
ドキュメントのアップロード / ダウンロードの構成パラメータ
DAD の次の設定パラメータが、ドキュメントのアップロードまたはダウンロード操作に影
響します。
■
「PlsqlDocumentTablename」
■
「PlsqlDocumentPath(ドキュメント・アクセス・パス)」
■
「PlsqlDocumentProcedure(ドキュメント・アクセス・プロシージャ)
」
■
「PlsqlUploadAsLongRaw」
例 1-7 ドキュメントのアップロード / ダウンロードのパラメータ
DAD でこれらのパラメータが次のように設定されているとします。
PlsqlDocumentTablename
scott.my_document_table
PlsqlUploadAsLongRaw
html
PlsqlDocumentPath
docs
PlsqlDocumentProcedure
scott.my_doc_download_procedure
この場合は次のようになります。
■
■
■
mod_plsql は、scott スキーマの my_document_table データベース表からデータを取得
するか、この表にデータを格納します。
.html を除くすべてのファイル拡張子は、ドキュメント表に BLOB としてアップロード
されます。.html 拡張子が付いたファイルはすべて Long Raw としてアップロードされ
ます。
DAD location の直後に docs キーワードを含むすべての URL では、scott.my_doc_
download_procedure プロシージャが実行されます。
通常、このプロシージャは wpg_docload.download_file をコールして、URL 指定に基
づく名前を持ったファイルのダウンロードを開始します。
次に前述の構成の単純な例を示します。
http://www.acme.com/pls/dad/docs/index.html
この場合は、scott.my_document_table データベース表の Long Raw 列から index.html
ファイルがダウンロードされます。アプリケーション・プロシージャは開始するファイルの
ダウンロードを完全に制御し、ファイルレベルのアクセス制御とバージョニングを実装す
る、より複雑な PlsqlDocumentProcedure を柔軟に定義することに注意してください。
注意 : アプリケーション定義プロシージャ scott.my_doc_download_
procedure は引数なしで定義し、CGI 環境変数を使用してリクエストを処
理する必要があります。
1-14 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
ファイルのアップロードとダウンロード
PlsqlDocumentTablename
PlsqlDocumentTablename パラメータは、この DAD によってファイルがアップロードさ
れたときにドキュメントを格納する表を指定します。
構文 :
PlsqlDocumentTablename
[document_table_name]
PlsqlDocumentTablename
my_documents
または
PlsqlDocumentTablename
scott.my_document_table
PlsqlDocumentPath(ドキュメント・アクセス・パス)
(ドキュメント・アクセス・パス)
PlsqlDocumentPath パラメータは、ドキュメントにアクセスするためのパス・エレメン
トを指定します。PlsqlDocumentPath パラメータは、URL 内で DAD 名の後に付加され
ます。たとえば、ドキュメント・アクセス・パスが docs の場合、URL は次のようになりま
す。
http://www.acme.com/pls/mydad/docs/myfile.htm
mydad は DAD 名で、myfile.htm はファイル名です。
構文 :
PlsqlDocumentPath
[document_access_path_name]
PlsqlDocumentProcedure(ドキュメント・アクセス・プロシージャ)
(ドキュメント・アクセス・プロシージャ)
PlsqlDocumentProcedure プロシージャは、アプリケーション指定のプロシージャです。
このプロシージャはパラメータがなく、ドキュメント・アクセス・パスを持つ URL リクエ
ストを処理します。ドキュメント・アクセス・プロシージャは、ファイルをダウンロードす
るために、wpg_docload.download_file(filename) をコールします。ドキュメント・
アクセス・プロシージャは、URL 指定に基づいてファイル名を認識します。たとえば、アプ
リケーションでこれを使用して、ファイル・レベルのアクセス制御やバージョン管理を実装
することが可能です。このようなアプリケーションの例を、1-19 ページの「ファイルのダウ
ンロード」で示します。
構文 :
PlsqlDocumentProcedure
[document_access_procedure_name]
mod_plsql の概要
1-15
ファイルのアップロードとダウンロード
例 1-8
PlsqlDocumentProcedure
my_access_procedure
または
PlsqlDocumentProcedure
scott.my_pkg.my_access_procedure
PlsqlUploadAsLongRaw
DAD パラメータ PlsqlUploadAsLongRaw は、ファイル拡張子に基づいてファイルのアッ
プロードを設定します。PlsqlUploadAsLongRaw DAD パラメータの値は、1 行に 1 つの
エントリがあるファイル拡張子のリストです。これらの拡張子を持つファイルは、mod_
plsql により、ドキュメント表の LONG RAW 型の CONTENT 列にアップロードされます。他
の拡張子を持つファイルは、BLOB CONTENT 列にアップロードされます。
ファイル拡張子には、テキスト・リテラル(jpeg、gif など)またはアスタリスク(*)を使
用できます。アスタリスクは、PlsqlUploadAsLongRaw 設定でリストされていない拡張子
を持つすべてのファイルに一致します。
構文 :
PlsqlUploadAsLongRaw [file_extension]
PlsqlUploadAsLongRaw *
[file_extension] はファイル拡張子(ピリオド(.)の有無は関係なく、たとえば、txt
または .txt が使用可能です)またはワイルド・カード文字(*)です。
例 1-9
PlsqlUploadAsLongRaw
PlsqlUploadAsLongRaw
PlsqlUploadAsLongRaw
html
txt
*
ファイルのアップロード
クライアント・マシンからデータベースにファイルを送信する場合は、次に示す内容を含ん
だ HTML ページを作成します。
■
■
enctype 属性に multipart/form-data が設定され、action 属性に「アクション・プロ
シージャ」と呼ばれる mod_plsql プロシージャ・コールが関連付けられている FORM
タグ。
type 属性と name 属性に file が設定された INPUT エレメント。
INPUT type="file" エ
レメントを使用すると、ユーザーはファイル・システムのファイルを参照して、そこか
らファイルを選択できます。
1-16 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
ファイルのアップロードとダウンロード
ユーザーが「
「Submit」
」ボタンをクリックすると、次のイベントが発生します。
1.
ブラウザは、ユーザーが指定したファイルとその他のフォーム・データをサーバーに
アップロードします。
2.
mod_plsql は、ファイルの内容をデータベースのドキュメント格納表内に格納します。
表の名前は、PlsqlDocumentTablename DAD 設定から導出されます。
3.
FORM の action 属性で指定したアクション・プロシージャが、ファイルのアップロード
を行わずに mod_plsql プロシージャを実行する場合と同じように実行されます。
注意 : HTML ドキュメントの解析は、mod_plsql では使用されません。
Oracle Application Server リリース 1.0.2.2 以下の場合は、HTML ファイル
のアップロード時に mod_plsql を使用してその内容が解析され、HTML
ドキュメントが参照している他のファイルが識別されていました。その後、
この情報が表に格納されていました。表の名前は、ドキュメント表の名前
に part を追加したものが使用されていました。この機能はカスタマにとっ
て有用でないことが判明したため、Oracle Application Server リリース
1.0.2 以上の mod_plsql では使用されなくなっています。
次の例に、アップロードするファイルをユーザーがファイル・システムから選択できる
HTML フォームを示します。このフォームには、ファイルに関する情報を入力できるその他
のフィールドも含まれています。
<html>
<head>
<title>test upload</title>
</head>
<body>
<FORM enctype="multipart/form-data"
action="pls/mydad/write_info"
method="POST">
<p>Author’s Name:<INPUT type="text" name="who">
<p>Description:<INPUT type="text" name="description"><br>
<p>File to upload:<INPUT type="file" name="file"><br>
<p><INPUT type="submit">
</FORM>
</body>
</html>
ユーザーがフォームの「
「Submit」
」ボタンをクリックすると、次の処理が実行されます。
a.
ブラウザにより、INPUT type="file" エレメントにリストされたファイルが
アップロードされます。
b.
次に、write_info プロシージャが実行されます。
mod_plsql の概要
1-17
ファイルのアップロードとダウンロード
c.
このプロシージャは、フォームのフィールドの情報をデータベース内の表に書き込
み、ページをユーザーに返します。
注意 : アクション・プロシージャは、ユーザーにレスポンスを返す必要
はありませんが、次に示すように、送信が成功したか失敗したかをユー
ザーに知らせるようにすることをお薦めします。
procedure write_info (
who
in varchar2,
description in varchar2,
file
in varchar2) as
begin
insert into myTable values (who, description, file);
htp.htmlopen;
htp.headopen;
htp.title('File Uploaded');
htp.headclose;
htp.bodyopen;
htp.header(1, 'Upload Status');
htp.print('Uploaded ' || file || ' successfully');
htp.bodyclose;
htp.htmlclose;
end;
名前の競合の可能性を低減するために、ブラウザから取得したファイル名の先頭に、生成さ
れたディレクトリ名が付加されます。フォームで指定されたアクション・プロシージャによ
り、この名前が変更されます。このため、たとえば /private/minutes.txt がアップ
ロードされた場合、mod_plsql によって表に格納された名前は、
F9080/private/minutes.txt となります。アプリケーションは、コールしたストアド・
プロシージャの中で、この名前を変更できます。たとえば、アプリケーションにより、名前
を scott/minutes.txt に変更できます。
アップロード・ファイルの属性(MIME
タイプ)の指定
アップロード・ファイルの属性(
ストアド・プロシージャは、アップロード・ファイルの名前を変更する以外にも、他のファ
イル属性を変更できます。たとえば、1-16 ページの「ファイルのアップロード」に示した例
のフォームでは、アップロードするドキュメントの Multipurpose Internet Mail Extension
(MIME)タイプをユーザーが入力するフィールドとして表示できます。
MIME タイプは、write_info のパラメータとして受信できます。その場合、ドキュメント
表には、ファイルのアップロード時に mod_plsql がマルチパート・フォームから解析したデ
フォルトの MIME タイプではなく、そのドキュメントの MIME タイプが格納されます。
1-18 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
ファイルのアップロードとダウンロード
複数のファイルのアップロード
1 回の送信で複数のファイルを送信する場合は、アップロード・フォームに複数の <INPUT
type="file" name="file"> エレメントが含まれている必要があります。複数の INPUT エレメ
ントで、name に同じ名前を定義する場合、アクション・プロシージャでパラメータ名を
owa.vc_arr 型として宣言する必要があります。ファイルの INPUT エレメントに一意の名前
を定義することも可能で、その場合、アクション・プロシージャでそれぞれを varchar2 と
して宣言する必要があります。たとえば、フォームに次のエレメントが含まれているとしま
す。
<INPUT type="file" name="textfiles">
<INPUT type="file" name="textfiles">
<INPUT type="file" name="binaryfile">
この場合、アクション・プロシージャに次のパラメータを含める必要があります。
procedure handle_text_and_binary_files(textfiles IN owa.vc_arr, binaryfile IN
varchar2).
ファイルのダウンロード
ファイルをデータベースに送信した後、それらのファイルのダウンロード、データベースか
らの削除、および属性の読取りと書込みが可能になります。
ファイルをダウンロードするには、ダウンロードを開始するために wpg_
docload.download_file(file_name) をコールする、パラメータを持たないストアド・プ
ロシージャを作成します。
ユーザーに表示される HTML ページには、ドキュメント・アクセス・パスを含み、ダウン
ロードするファイルを指定する URL へのリンクが示されます。
たとえば、DAD のドキュメント・アクセス・パスに docs、ドキュメント・アクセス・プロ
シージャに mydad.process_download が指定されている場合、ユーザーが次の URL をク
リックすると、mydad.process_download プロシージャがコールされます。
http://www.acme.com:9000/pls/mydad/docs/myfile.htm
次に、process_download の実装例を示します。
procedure process_download is
v_filename varchar2(255);
begin
-- getfilepath() uses the SCRIPT_NAME and PATH_INFO cgi
-- environment variables to construct the full pathname of
-- the file URL, and then returns the part of the pathname
-- following '/docs/'
v_filename := getfilepath;
select name into v_filename from plsql_gateway_doc
where UPPER(name) = UPPER(v_filename);
mod_plsql の概要
1-19
ファイルのアップロードとダウンロード
-- now we call docload.download_file to initiate
-- the download.
wpg_docload.download_file(v_filename);
exception
when others then
v_filename := null;
end process_download;
mod_plsql で実行中のプロシージャから wpg_docload.download_file(filename) を
コールすると、filename ファイルのダウンロードが開始されます。ファイルのダウンロー
ド中は、このプロシージャによって生成される(HTP インタフェースを介して生成される)
他の HTML は、ブラウザに返されません。
mod_plsql は、ドキュメント表からそのファイル名を探します。ドキュメント表内には、
NAME 列がファイル名に一致する一意の行が存在する必要があります。mod_plsql は、ド
キュメント表の MIME_TYPE 列の情報に基づき、HTTP レスポンス・ヘッダーを生成しま
す。CONTENT_TYPE 列の値により、ドキュメントの内容がどの CONTENT 列から取得され
るかが決まります。ドキュメントの内容は、HTTP Response Body として送信されます。
BLOB のダイレクト・ダウンロード
バイナリ・ラージ・オブジェクト(BLOB)データ型として格納されているコンテンツをダ
ウンロードすることもできます。
1.
wpg_docload.download_file(blob) をコールするストアド・プロシージャを作成します。
blob は BLOB データ型です。mod_plsql には BLOB の内容に関する情報が含まれてい
ないため、情報を入力する必要があります。
2.
Content-Type およびその他のヘッダーを設定します。
例 : 次のプロシージャでは、引数の名前を使用して表から BLOB を選択し、BLOB のダ
イレクト・ダウンロードを開始します。
procedure download_blob(varchar2 name) is
myblob blob;
begin
a.
name 引数を使用して、mytable から BLOB を選択します。
select blob_data into myblob from mytable where blob_name = name;
b.
コンテンツを説明するヘッダーを設定します。
owa_util.mime_header('text/html', FALSE);
htp.p('Content-Length: ' || dbms_lob.getlength(myblob));
owa_util.http_header_close;
1-20 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
パスのエイリアシング(ダイレクト・アクセス URL)
c.
BLOB のダイレクト・ダウンロードを開始します。
wpg_docload.download_file(myblob);
end;
mytable 表の構造は、次のとおりです。
create table mytable
(
blob_name varchar2(128),
blob_data blob
);
3.
ユーザーに表示される HTML ページには、適切な引数を使用してこのストアド・プロ
シージャをコールする URL へのリンクが示されます。
4.
BLOB のダイレクト・ダウンロード中は、このプロシージャによって生成される(HTP
インタフェースを介して生成される)他の HTML は、ブラウザに返されません。
パスのエイリアシング(ダイレクト・アクセス URL)
)
パスのエイリアシングにより、mod_plsql を使用するアプリケーションは、単純な URL に
よるアプリケーション内のオブジェクトへの直接参照を提供できます。この機能は、ドキュ
メント・ダウンロード機能の提供方法を汎用化するものです。パスのエイリアシングには、
DAD の次の設定パラメータを使用します。
■
PlsqlPathAlias
■
PlsqlPathAliasProcedure
たとえば、DAD でこれらのパラメータが次のように設定されているとします。
PlsqlPathAlias
myalias
PlsqlPathAliasProcedure
scott.my_path_alias_procedure
この場合、DAD location の直後に myalias キーワードを含むすべての URL で、scott.my_
path_alias_procedure プロシージャが実行されます。このプロシージャは、URL 指定に基づ
いて適切なレスポンスを開始できます。
mod_plsql の概要
1-21
Common Gateway Interface(CGI)環境変数
注意 : アプリケーション定義プロシージャ scott.my_path_alias_
procedure は、varchar2 型の p_path という引数を 1 つとるように定義す
る必要があります。この引数は、PlsqlPathAlias に使用されているキー
ワードに続くすべてを受け取ります。
たとえば、前述の構成で次の URL があるとします。
http://www.acme.com/pls/dad/myalias/MyFolder/MyItem
この URL により、scott.my_path_alias_procedure プロシージャは
MyFolder/MyItem 引数を受け取ります。
Common Gateway Interface(
(CGI)環境変数
)環境変数
OWA_UTIL パッケージには、CGI 環境変数の値を取得するための API が付属しています。
CGI 環境変数の値は、mod_plsql によって実行されるプロシージャにコンテキストを提供し
ます。mod_plsql は CGI によって処理されませんが、mod_plsql から実行される PL/SQL
アプリケーションは、これらの CGI 環境変数にアクセス可能です。
次のリストに CGI 環境変数を示します。
■
HTTP_AUTHORIZATION
■
DAD_NAME
■
DOC_ACCESS_PATH
■
HTTP_ACCEPT
■
HTTP_ACCEPT_CHARSET
■
HTTP_ACCEPT_LANGUAGE
■
HTTP_COOKIE
■
HTTP_HOST
■
HTTP_PRAGMA
■
HTTP_REFERER
■
HTTP_USER_AGENT
■
PATH_ALIAS
■
PATH_INFO
■
HTTP_ORACLE_ECID
■
DOCUMENT_TABLE
■
REMOTE_ADDR
1-22 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
Common Gateway Interface(CGI)環境変数
■
REMOTE_HOST
■
REMOTE_USER
■
REQUEST_CHARSET(1-24 ページの「REQUEST_CHARSET CGI 環境変数」を参照)
■
REQUEST_IANA_CHARSET(1-25 ページの「REQUEST_IANA_CHARSET CGI 環境変
数」を参照)
■
REQUEST_METHOD
■
REQUEST_PROTOCOL
■
SCRIPT_NAME
■
SCRIPT_PREFIX
■
SERVER_NAME
■
SERVER_PORT
■
SERVER_PROTOCOL
PL/SQL アプリケーションは、owa_util.get_cgi_env インタフェースを使用して CGI 環境変
数の値を取得できます。
構文 :
owa_util.get_cgi_env(param_name in varchar2) return varchar2;
param_name は、CGI 環境変数の名前です。param_name には大 / 小文字区別があります。
CGI 環境変数の追加およびオーバーライド
PlsqlCGIEnvironmentList DAD パラメータは、1 行に 1 つのエントリがある、名前 /
値ペアのリストです。任意の環境変数をオーバーライドしたり、新規の環境変数を追加でき
ます。名前が付属の環境変数(1-22 ページの「Common Gateway Interface(CGI)環境変
数」のリストを参照)の 1 つである場合、その環境変数は指定した値にオーバーライドされ
ます。名前が付属の環境変数のリストにない場合は、パラメータで指定された名前および値
と同じ新規の環境変数がリストに追加されます。
注意 : mod_plsql の設定ファイルについては、
『Oracle HTTP Server 管理
者ガイド』を参照してください。
パラメータの値が指定されていない場合は、Oracle HTTP Server から値が取得されます。
Oracle HTTP Server の場合は、次のように指定して CGI 環境変数の DOCUMENT_ROOT を
渡すことができます。
PlsqlCGIEnvironmentList DOCUMENT_ROOT
mod_plsql の概要
1-23
Common Gateway Interface(CGI)環境変数
この設定パラメータから渡された新規の環境変数は、owa_util.get_cgi_env インタフェース
を経由して PL/SQL アプリケーションで使用可能です。
例 1-10
PlsqlCGIEnvironmentList SERVER_NAME=myhost.mycompany.com
PlsqlCGIEnvironmentList REMOTE_USER=testuser
この例では、CGI 環境変数の SERVER_NAME と REMOTE_USER が付属の環境変数リスト
に含まれているため、これらの環境変数が指定の値にオーバーライドされます。
例 1-11
PlsqlCGIEnvironmentList MYENV_VAR=testing
PlsqlCGIEnvironmentList SERVER_NAME=
PlsqlCGIEnvironmentList REMOTE_USER=user2
この例では、SERVER_NAME 変数と REMOTE_USER 変数がオーバーライドされます。
SERVER_NAME 変数は、値が指定されていないため、削除されます。MYENV_VAR という
新規の環境変数は、付属の環境変数のリストに含まれていないため追加されます。この環境
変数には、testing という値が割り当てられます。
PlsqlNLSLanguage
mod_plsql では、各国語サポート変数(PlsqlNLSLanguage)を、環境変数として設定する
か、または DAD レベルで設定できます。次のいずれかの制限が適用されます。
■
■
データベースと Oracle HTTP Server powered by Apache の、それぞれの
PlsqlNLSLanguage パラメータは、一致する必要があります。
データベースと Oracle HTTP Server powered by Apache の、それぞれの
PlsqlNLSLanguage パラメータは、文字幅が固定で、サイズが同じであることが必要で
す。
DAD レベルで PlsqlNLSLanguage が設定されていない場合、NLS 設定には環境、つまり
ORACLE_HOME/opmn/conf/opmn.xml での NLS_LANG の設定が使用されます。NLS_
LANG 設定が存在しない場合、Oracle の NLS_LANG 設定にはデフォルト・ルールが適用さ
れます。
REQUEST_CHARSET CGI 環境変数
mod_plsql に対するリクエストは、すべて DAD に関連付けられます。CGI 環境変数
REQUEST_CHARSET は、次のように設定されます。
■
REQUEST_CHARSET は、PlsqlNLSLanguage 環境変数から導出された使用中のデフォ
ルト・キャラクタ・セットに設定されます。ただし、DAD レベルで
PlsqlNLSLanguage パラメータが設定されている場合は、キャラクタ・セット情報を導
出します。
1-24 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
mod_plsql での制限事項
PL/SQL アプリケーションは、フォームのファンクション・コールによってこの情報にアク
セスできます。
owa_util.get_cgi_env('REQUEST_CHARSET');
REQUEST_IANA_CHARSET CGI 環境変数
これは、CGI 環境変数 REQUEST_CHARSET に相当する IANA(Internet Assigned Number
Authority)の環境変数です。IANA は、インターネット上のキャラクタ・セットの標準を
グローバルに調整する機関です。
mod_plsql での制限事項
mod_plsql には、次の制限があります。
■
■
■
■
HTTP Cookie ヘッダーの最大長は 32000 バイトです。このバイト数を超えるとエラーが
発生します。この制限は、PL/SQL の varchar2 型の制限によるものです。
HTTP Cookie 内にある各 Cookie の最大長は 3990 バイトです。このバイト数を超えると
エラーが発生します。この制限は、配列内の文字列の OCI 配列バインド制限によるもの
です。
mod_plsql では、一度に設定できる Cookie の最大数は制限されており変更できません。
この制限は、最大数 20 に設定されています。20 を超えると、それ以降の Cookie は削
除されます。
PL/SQL Gateway は、OUT パラメータを含むプロシージャを Web インタフェースから
コールすることをサポートしていません。この方法でコールすると ORA-6502 エラーが
発生します。OUT 変数を含むプロシージャはコールしないことをお薦めします。ただ
し、現行のアーキテクチャでは、変更後の値が受渡し時の長さを超えないかぎり値を変
更できます。この問題が発生する既存のアプリケーションは、次のいずれかの方法で変
更する必要があります。
■
■
■
■
■
■
OUT パラメータを含むプロシージャがブラウザ URL 経由で直接実行されないよう
に、この種のプロシージャのラッパーを実装します。
渡されるパラメータの値が割り当てられるローカル変数を作成し、それを内部的な
すべての変更に使用します。
PL/SQL プロシージャに渡すことのできる名前 / 値ペアの合計数は 2000 です。
mod_plsql では、1 つのプロシージャに渡すことのできるパラメータの合計数が 2000 に
制限されます。
mod_plsql では、1 つのプロシージャに渡すことのできる 1 つのパラメータのサイズが
32000 バイトに制限されます。
同じ DAD location を異なる仮想ホストで使用することはできません。
mod_plsql の概要
1-25
mod_plsql での制限事項
1-26 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
2
mod_plsql の使用
この章では、mod_plsql のセットアップおよび使用方法について説明します。この章の内容
は、次のとおりです。
■
インストールの前に
■
必須パッケージのインストール
■
mod_plsql の設定ページへのアクセス
■
OracleAS Portal リリース 3.0.9 で使用するための mod_plsql の設定
mod_plsql の使用
2-1
インストールの前に
インストールの前に
mod_plsql を実行する前に、次の前提条件を満たしている必要があります。
■
■
■
mod_plsql で必要な PL/SQL Web Toolkit パッケージをロードするデータベースの SYS
ユーザー・パスワードが必要です。
mod_plsql を接続するデータベースが稼動している必要があります。
Oracle Application Server のリリース 10g(9.0.4)は、OWA パッケージのリリース
9.0.4.0.1 とともに出荷されます。データベースにはリリース 9.0.4.0.0 以上の OWA パッ
ケージをインストールすることをお薦めします。
必須パッケージのインストール
インストール後に、owaload.sql スクリプトを使用して、追加の必須パッケージを手動でイ
ンストールします。
注意 : エクスポート・ユーティリティを使用して全データベースのエク
スポートを実行した場合でも、OWALOAD.SQL スクリプトを SYS で実行し
て、新規のターゲット・インスタンスに mod_plsql を再インストールする
必要があります。インポート / エクスポート・メカニズムでは、SYS 内の
オブジェクトはインポートされないため、PL/SQL ツールキットを SYS に
インストールする必要があります。
1.
owaload.sql ファイルが入っているディレクトリに移動します。このディレクトリは、
ORACLE_HOME/Apache/modpsql/owa です。
2.
SQL*Plus を使用して、SYS ユーザーで Oracle データベースにログインします。
3.
Oracle Application Server 10g(9.0.4)は OWA パッケージのリリース 9.0.4.0.1 とともに
出荷されます。次の問合せを実行して、現在インストールされている OWA パッケージ
のリリースを確認します。
select owa_util.get_version from dual;
■
■
問合せに成功しても、9.0.4.0.1 より前のリリースが表示される場合は、新リリース
の OWA パッケージをインストールすることをお薦めします。
問合せに失敗した場合は、OWA パッケージがインストールされていないか、かな
り古いリリースの OWA パッケージが実行されています。新しい OWA パッケージ
をインストールするか、新リリースにアップグレードすることをお薦めします。
2-2 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
必須パッケージのインストール
注意 : 古い OWA パッケージの検出方法については、付録 A「よくある
質問」の「データベースに重複してインストールされている OWA パッ
ケージを検出してクリーン・アップするには、どうすればよいですか ?」
を参照してください。
4.
SQL プロンプトで、次のコマンドを実行します。
@owaload.sql log_file
表 2-1 必須パッケージのインストール時のパラメータ
エレメント
説明
owaload.sql
PL/SQL Web Toolkit パッケージを SYS スキーマにインストール
します。また、データベースの全ユーザーがアクセスできるよう、
パブリック・シノニムを作成してパッケージをパブリックにしま
す。このため、1 つのデータベースにつき 1 回のインストールの
み必要です。
log_file
インストール・ログ・ファイルです。ログ・ファイルを作成する
ための書込み許可があることを確認してください。
5.
ログ・ファイルをスキャンして、エラーがないことを確認します。
注意 : owaload スクリプトは、データベース内にある OWA パッケージ
の既存のリリースをチェックし、次の場合にのみ新しいリリースをインス
トールします。
■
■
6.
OWA パッケージが存在しない場合、または
古いバージョンの OWA パッケージが検出された場合、データベース
に最新の OWA パッケージが存在する場合、または新しいバージョン
がインストールされている場合、owaload スクリプトは何も処理を
実行せず、その状況をログ・ファイルにレポートします。
手動で再コンパイルします。
注意 : OWA パッケージをインストールすると、依存オブジェクトはすべ
て無効になります。このパッケージは最初のアクセス時に自動的に再コン
パイルされますが、再インストール後に手動で再コンパイルすることをお
薦めします。
mod_plsql の使用
2-3
必須パッケージのインストール
インストール後に、Select owa_util.get_version from dual; を実行して、
OWA パッケージのリリースをチェックします。表示されたリリースが 9.0.4.0.1 以上で
あることを確認してください。
7.
8.
次へのパブリック・アクセスが付与されていることに注意してください。
■
OWA_CUSTOM
■
OWA
■
HTF
■
HTP
■
OWA_COOKIE
■
OWA_IMAGE
■
OWA_OPT_LOCK
■
OWA_PATTERN
■
OWA_SEC
■
OWA_TEXT
■
OWA_UTIL
■
OWA_CACHE
■
WPG_DOCLOAD
次のパブリック・シノニムが作成されていることにも注意してください。
■
OWA_CUSTOM 用の OWA_CUSTOM
■
OWA_CUSTOM 用の OWA_GLOBAL
■
OWA 用の OWA
■
HTF 用の HTF
■
HTP 用の HTP
■
OWA_COOKIE 用の OWA_COOKIE
■
OWA_IMAGE 用の OWA_IMAGE
■
OWA_OPT_LOCK 用の OWA_OPT_LOCK
■
OWA_PATTERN 用の OWA_PATTERN
■
OWA_SEC 用の OWA_SEC
■
OWA_TEXT 用の OWA_TEXT
■
OWA_UTIL 用の OWA_UTIL
2-4 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
mod_plsql の設定ページへのアクセス
■
OWA_CUSTOM 用の OWA_INIT
■
OWA_CACHE 用の OWA_CACHE
■
WPG_DOCLOAD 用の WPG_DOCLOAD
Oracle Application Server または WebDB リスナーからのアップグレード
Oracle Application Server または WebDB リスナー 2.5 以下をすでに実行している場合は、次
の処理を実行します。
1.
スキーマに(PL/SQL Web Toolkit パッケージ以外の)ユーザー・データがないことを
確認します。
2.
以前の PL/SQL Web Toolkit パッケージがインストールされているスキーマを削除しま
す。
3.
2-2 ページの「必須パッケージのインストール」の説明に従って、新規の PL/SQL Web
Toolkit をインストールします。
mod_plsql の設定ページへのアクセス
すべての監視および設定は、Oracle Enterprise Manager(OEM)ツールを使用して行いま
す。mod_plsql の監視および設定には、HTTP サーバーの構成要素内のリンク、およびポー
タルからアクセスできます。
注意 : mod_plsql および DAD 設定については、Oracle Enterprise
Manager ツールのオンライン・ヘルプも参照してください。
mod_plsql の設定ページにアクセスするには、OEM から該当の Application Server に移動
します。ページには、ポータル・インスタンス、または HTTP サーバー・インスタンス内の
リンクからアクセスできます。
Oracle Enterprise Manager から DAD 設定ページへのアクセス
1.
Web ブラウザで次の URL を入力します。
http://<hostname>:<port_number>
注意 :
デフォルトのポートは 1810 です。
mod_plsql の使用
2-5
mod_plsql の設定ページへのアクセス
2.
Oracle Application Server 管理者のユーザー名とパスワードを入力します。管理者ユー
ザーのデフォルトのユーザー名は、ias_admin です。デフォルトのパスワードは、
Oracle Application Server のインストール時に定義されます。
3. 「OK」
」をクリックします。
4.
mod_plsql とともに設定が必要な Oracle Application Server インスタンスを選択しま
す。
5.
HTTP サーバーのリンク、または Portal インスタンスを選択します。
6.
PL/SQL properties または mod_plsql サービスを選択します。
7. 「DADs」
」セクションにスクロールします。
8. 「作成」をクリックして新規の
DAD を設定するか、またはアクセスする DAD の名前を
「作成」
クリックします。
Portal から DAD 設定ページへのアクセス
1.
Portal にログオンします。
2. 「ビルダー」アイコンをクリックします。
「ビルダー」
3. 「管理」タブにアクセスします。
「管理」
4. 「サービス」ポートレット内の「
「Portal サービスの監視」をクリックします。
サービスの監視」
5. 「Portal コンポーネント」セクションの「
「mod_plsql サービス」をクリックします。
サービス」
6. 「DADs」
」セクションにスクロールします。
7. 「作成」をクリックして新規の
DAD を設定するか、またはアクセスする DAD の名前を
「作成」
クリックします。
2-6 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
OracleAS Portal リリース 3.0.9 で使用するための mod_plsql の設定
OracleAS Portal リリース 3.0.9 で使用するための mod_plsql の設定
OracleAS Portal リリース 3.0.9 のリポジトリに対して Oracle Application Server リリース
9.0.x の中間層を実行するには、次の手順を実行する必要があります。
1.
Oracle Enterprise Manager を使用して Portal スタイルの DAD を 2 つ作成します。一方
はリリース 3.0.9 の OracleAS Portal リポジトリ用、他方はリリース 3.0.9 の Oracle
Application Server Single Sign-On リポジトリ用です。
注意 : Oracle Application Server リリース 9.0.x では、DAD 名に大 / 小
文字区別があります。DAD が OracleAS Portal リリース 3.0.9 の場合と同
じ大 / 小文字を使用して作成されることを確認する必要があります。ほと
んどの場合、DAD 名はすべて小文字です。リリース 3.0.9 の DAD 名を確
認するには、$OLD_HOME/Apache/modplsql/cfg/wdbsvr.app ファイ
ルを調べます。
2.
各 DAD の設定を編集し、PlsqlCompatibilityMode を 1 に設定します。DAD 設定を編集
する手順は、次のとおりです。
a.
ORACLE_HOME/Apache/modplsql/conf/dads.conf ファイルを編集します。
b.
リリース 3.0.9 の OracleAS Portal および Oracle Application Server Single Sign-On
のリポジトリへの接続に使用する DAD を探します。
c.
DAD に次の行を追加します。
PlsqlCompatibilityMode
d.
1
次のコマンドを実行します。
ORACLE_HOME/dcm/bin/dcmctl updateConfig -ct ohs
e.
次のコマンドを実行して Oracle HTTP Server を再起動します。
ORACLE_HOME/opmn/bin/opmnctl restartproc type=ohs
mod_plsql の使用
2-7
OracleAS Portal リリース 3.0.9 で使用するための mod_plsql の設定
注意 :
■
■
OracleAS Portal リリース 3.0.9 リポジトリへのアクセスに使用する
DAD に PlsqlCompatibilityMode が設定されていない場合、Portal ド
キュメント表に常駐していて、ドキュメント名に空白を含むドキュメ
ントをダウンロードできなくなります。この種のドキュメントにアク
セスすると、次のエラーが発生します。HTTP 404 - ファイルが見つか
りません。
OracleAS Portal リリース 9.0.x リポジトリへのアクセスに使用する
DAD に PlsqlCompatibilityMode が設定されている場合、Portal ド
キュメント表に常駐していて、ドキュメント名に空白またはプラス記
号(+)を含むドキュメントをダウンロードできなくなります。この
種のドキュメントにアクセスすると、次のエラーが発生します。
HTTP 404 - ファイルが見つかりません。
警告 : バックエンドの OracleAS Portal リポジトリをリリース 9.0.x に
アップグレードした後、DAD から PlsqlCompatibilityMode フラグを削
アップグレードした後、
除する必要があります。手順の詳細は、2-8
ページの
手順の詳細は、
ページの「DAD からの
PlsqlCompatibilityMode フラグの削除」
フラグの削除」を参照してください。
DAD からの PlsqlCompatibilityMode フラグの削除
DAD から PlsqlCompatibilityMode フラグを削除するには、バックエンドの OracleAS Portal
リポジトリをリリース 9.0.x にアップグレードした後で次の手順を実行します。
1.
ORACLE_HOME/Apache/modplsql/conf/dads.conf ファイルを編集します。
2.
リリース 9.0.x の OracleAS Portal および Oracle Application Server Single Sign-On のリ
ポジトリへの接続に使用する DAD を探します。
3.
DAD から次の行を削除します。
PlsqlCompatibilityMode
4.
1
次のコマンドを実行します。
ORACLE_HOME/dcm/bin/dcmctl updateConfig -ct ohs
5.
次のコマンドを実行して Oracle HTTP Server を再起動します。
ORACLE_HOME/opmn/bin/opmnctl restartproc type=ohs
2-8 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
3
mod_plsql を使用したアプリケーション・
データベース・アクセスの保護
この章では、既知のセキュリティ上の問題を回避するためにデータベースと PL/SQL をセッ
トアップする方法について説明します。この章の内容は、次のとおりです。
■
mod_plsql を使用したユーザー認証
■
ユーザーの認証解除
■
PUBLIC に付与されている PL/SQL プロシージャの保護
関連項目 : mod_plsql の詳細は、Oracle Application Server マニュアル・
ライブラリの『Oracle Application Server 10g PL/SQL Web Toolkit リファ
レンス』を参照してください。
mod_plsql を使用したアプリケーション・データベース・アクセスの保護
3-1
mod_plsql を使用したユーザー認証
mod_plsql を使用したユーザー認証
mod_plsql は、Oracle HTTP Server から提供される認証レベルに加えて、様々な認証レベル
を提供します。Oracle HTTP Server はドキュメントや仮想パスなどを保護しますが、mod_
plsql はデータベースにログインしたり PL/SQL Web アプリケーションを実行するユーザー
を保護します。
表 3-1 に示すように、様々な認証モードを有効化できます。
表 3-1 mod_plsql で使用する認証モード
認証モード
アプローチ
Basic
HTTP の Basic 認証を使用して認証が実行されます。ほとんどの
アプリケーションでは、Basic 認証が使用されます。
グローバル OWA
認証は、PL/SQL Web Toolkit パッケージを含むスキーマの owa_
custom.authorize プロシージャを使用して実行されます。
カスタム OWA
認証は、ユーザーのスキーマ(owa_customize.authorize)にある
パッケージとプロシージャを使用して実行されます。それが見つ
からない場合は、PL/SQL Web Toolkit パッケージを含むスキー
マのパッケージとプロシージャが使用されます。
パッケージ別
認証は、ユーザーのスキーマ(packageName.authorize)にある
パッケージとプロシージャを使用して実行されます。
シングル・サインオン
認証は Oracle Application Server Single Sign-On を使用して実行
されます。このモードを使用するのは、アプリケーションが
Oracle Application Server Single Sign-On で動作する場合のみで
す。
Basic(データベース制御認証)
(データベース制御認証)
モジュール mod_plsql は、データベース・レベルでの認証をサポートしています。HTTP
Basic 認証が使用されますが、この方式を使用してデータベースへのログオンを試行するこ
とで資格証明が認証されます。認証は、次のどちらかのユーザー名とパスワードを使用して、
ユーザーのデータベース・アカウントと比較検証されます。
■
■
DAD に格納されているユーザー名とパスワード。エンド・ユーザーがログインする必要
はありません。この方法は、公開の情報を提供する Web ページに便利です。
ユーザーがブラウザの HTTP Basic 認証ダイアログ・ボックスを使用して入力するユー
ザー名とパスワード。ユーザーは、このダイアログ・ボックスにユーザー名とパスワー
ドを入力する必要があります。
3-2 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
mod_plsql を使用したユーザー認証
Oracle Application Server の Basic 認証モード
Oracle Application Server には、Basic 認証モード用に異なるメカニズムがあります。ユー
ザー名とパスワードは DAD に格納する必要があります。Oracle Application Server で使用
される HTTP Basic 認証では、証明書はファイル・システム上のパスワード・ファイルに格
納されます。認証は、そのファイルに指定されているユーザーと比較検証されます。
Oracle Application Server の Basic 認証モード
mod_plsql は、Oracle Application Server の Basic 認証をサポートしています。Oracle HTTP
Server では、ユーザーの証明書がファイル・システム上のパスワード・ファイルと比較認証
されます。この機能は、mod_auth というモジュールで提供されます。
グローバル OWA、カスタム
、カスタム OWA およびパッケージ別(カスタム認証)
カスタム認証を使用すると、データベース・レベルではなくアプリケーション自体でユー
ザーを認証できます。認証は、ユーザー記述の認証ファンクションをコールすることで実行
されます。カスタム認証では、DAD に格納されている静的なユーザー名およびパスワードが
使用されます。この方式を動的なユーザー名およびパスワードによる認証と併用することは
できません。
認証ファンクションは、実行するタイミングに応じて様々な場所に配置できます。
■
■
グローバル OWA の場合は、すべてのユーザーおよびプロシージャに対して同じ認証
ファンクションをコールできます。
カスタム OWA の場合は、各ユーザーおよびすべてのプロシージャに対して異なる認証
ファンクションをコールできます。
パッケージ別認証を使用すると、特定のパッケージのプロシージャまたは匿名プロシージャ
についてのみ、すべてのユーザーに対して認証ファンクションを実行できます。
表 3-2 にパラメータ値を示します。
表 3-2 カスタム認証モードとコールバック関数
モード
アクセス制御の有効範囲
コールバック関数
グローバル OWA
すべてのパッケージ
OWA パッケージ・スキーマ内の owa_
custom.authorize。
カスタム OWA
すべてのパッケージ
ユーザーのスキーマ内、または見つからない
場合は OWA パッケージ・スキーマ内の
owa_custom.authorize。
パッケージ別
指定したパッケージ
ユーザーのスキーマ内の
packageName.authorize。または
anonymous.authorize がコールされます。
mod_plsql を使用したアプリケーション・データベース・アクセスの保護
3-3
ユーザーの認証解除
ユーザーの認証解除
動的認証(DAD にユーザー名とパスワードなし)を使用する DAD の場合、mod_plsql で
は PL/SQL プロシージャを介してユーザーをプログラム的にログオフ(HTTP 認証情報を消
去)させることができ、すべてのブラウザ・インスタンスを終了する必要はありません。こ
の機能は、Netscape 3.0 以上および Microsoft Internet Explorer でサポートされます。他のブ
ラウザの場合、ユーザーが認証を解除するにはブラウザの終了操作が必要になることがあり
ます。
ログアウトをシミュレートしてユーザーをサインオフ・ページにリダイレクトする独自のロ
グアウト・プロシージャを作成すると、認証解除をプログラム的に実行できます。
MyLogOffProc プロシージャを次のように作成または置換します。
BEGIN
-- Open the HTTP header
owa_util.mime_header('text/html', FALSE, NULL);
-- Send a cookie to logout
owa_cookie.send('WDB_GATEWAY_LOGOUT', 'YES', path=>'/');
-- Close the HTTP header
owa_util.http_header_close;
-- Generate the page
htp.p('You have been logged off from the WEBSITE');
htp.anchor( 'http://www.abc.com', 'click here');
htp.p('<BR>bye');
END;
もう 1 つの認証解除方法は、URL で DAD の後に /logmeoff を追加することです。たとえ
ば、次のようになります。
http://www.abc.com:2000/pls/myDAD/logmeoff
3-4 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
PUBLIC に付与されている PL/SQL プロシージャの保護
PUBLIC に付与されている PL/SQL プロシージャの保護
PUBLIC に付与されている各データベース・パッケージは、次の URL を使用して直接実行
できます。
http://hostname:port/pls/dad/schema.package.procedure
データベース内で PUBLIC に付与されている PL/SQL プロシージャの実行は、様々な認証
レベルで保護する必要があります。これらのプロシージャ(dbms_% パッケージ、utl_%
パッケージおよび SYS スキーマのすべてのパッケージ内)は、Web ブラウザから実行され
るとセキュリティ上の脆弱さを露呈します。この種のパッケージは、PL/SQL アプリケー
ション開発者のみを対象としています。
mod_plsql での PlsqlExclusionList ディレクティブの使用
この種の PL/SQL パッケージやアプリケーション固有の他のパッケージの実行を保護するた
めに、mod_plsql には PlsqlExclusionList という DAD パラメータ・ディレクティブが用意
されています。PlsqlExclusionList ディレクティブでは、ブラウザから直接実行することが禁
止されているプロシージャ、パッケージおよびスキーマ名のパターンを指定します。これは
複数行のディレクティブであり、各パターンを 1 行で指定します。パターンには大 / 小文字
区別がなく、*、? および [a-z] などの単純なワイルドカードを使用できます。ダイレクト
URL からアクセスできないデフォルトのパターンは、sys.*、dbms_*、utl_* および
owa_util.* です。
注意 : PlsqlExclusionList ディレクティブを #NONE# に設定すると、す
べての保護が無効化されます。アクティブな Web サイトの場合は、
#NONE# に設定しないことをお薦めします。この設定は、デバッグ時にの
み使用してください。
PlsqlExclusionList ディレクティブがオーバーライドされても、デフォルト設定は適用され
ません。この場合は、除外するパターンのリストにデフォルトのリストを追加する必要があ
ります。
PlsqlExclusionList ディレクティブへのアクセス
mod_plsql の設定ファイル dads.conf 内で PlsqlExclusionList ディレクティブを設定でき
ます。この設定ファイルは、次のディレクトリにあります。
■
(UNIX の場合)ORACLE_HOME/Apache/modplsql/conf/
■
(Windows の場合)ORACLE_HOME¥Apache¥modplsql¥conf
ORACLE_HOME は、Oracle Application Server Portal のインストール場所です。
mod_plsql を使用したアプリケーション・データベース・アクセスの保護
3-5
PUBLIC に付与されている PL/SQL プロシージャの保護
PUBLIC に付与される PL/SQL プロシージャのセキュリティを確実に最適にするには、例
3-1 のように、dads.conf ファイル内で PlsqlExclusionList ディレクティブを使用してシス
テム・デフォルト設定を指定します。
例 3-1 PlsqlExclusionList ディレクティブを使用して指定するシステム・デフォルト設定
PlsqlExclusionList
PlsqlExclusionList
PlsqlExclusionList
PlsqlExclusionList
PlsqlExclusionList
sys.*
dbms_*
utl_*
owa_util.*
portal.wwmon*
mod_plsql では、このディレクティブで指定するパターンの他に、タブ、改行、一重引用符
(')またはバックスラッシュ(\)などの特殊文字を含む URL も無効化されます。これは変
更できません。
3-6 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
A
よくある質問
■
mod_plsql ゲートウェイとはなんですか ?
■
PL/SQL Web Toolkit とはなんですか ?
■
mod_plsql のリリースを確認するにはどうすればよいですか ?
■
OWA パッケージのリリースを確認するにはどうすればよいですか ?
■
OWA パッケージをインストールするにはどうすればよいですか ?
■
OWA パッケージをアンインストールするにはどうすればよいですか ?
■
■
■
■
■
データベースに重複してインストールされている OWA パッケージを検出してクリー
ン・アップするには、どうすればよいですか ?
mod_plsql を介して PL/SQL プロシージャにアクセス中に HTTP エラー・コードが戻さ
れます。
すべての独自 PL/SQL プロシージャで、Netscape では「ドキュメントにデータが含まれ
ていません」というエラー、Internet Explorer では空白ページが戻されます。
パフォーマンスの高い PL/SQL プロシージャがありますが、mod_plsql を介した一部の
HTTP リクエストに 15 秒以上かかることがあります。
mod_plsql を使用して独自データベース上でアプリケーションを実行することはできま
すか ?
■
mod_plsql を構成するにはどうすればよいですか ?
■
Oracle Enterprise Manager の UI を介して DAD を作成するにはどうすればよいですか ?
■
Oracle Enterprise Manager の UI を介して DAD 設定の問題を解決するにはどうすればよ
いですか ?
■
DAD 設定ファイルは手動で編集できますか ?
■
mod_plsql ではどのような認証モードを使用できますか ?
■
mod_plsql クリーン・アップ・スレッドとはなんですか ?
よくある質問
A-1
■
■
■
■
mod_plsql には、どのような種類のデータベース接続プーリング機能がありますか ?
mod_plsql ではどのようにしてデータベース・セッションがクリーン・アップされます
か?
プールされたデータベース接続が mod_plsql に存在するときに、データベースを再起動
するとどうなりますか ?
mod_plsql ではファイル・システム内でキャッシュされたコンテンツがどのようにク
リーン・アップされますか ?
■
URL に接頭辞 /pls を付けずに mod_plsql を起動できますか ?
■
PL/SQL と mod_plsql のパフォーマンスを改善するにはどうすればよいですか ?
■
mod_plsql ではどのような種類のロギング機能を使用できますか ?
■
mod_plsql にはどのような種類の DMS メトリックを使用できますか ?
■
mod_plsql には高可用性についてどのような考慮事項がありますか ?
■
■
■
■
データベースがファイアウォールで分離されている場合、mod_plsql ではどのような考
慮事項がありますか ?
PL/SQL アプリケーションに対して異なるホスト名、ポートまたは request_protocol を
アサートするには、どうすればよいですか ?
特定のパターンを持つプロシージャ名へのアクセスを無効化するにはどうすればよいで
すか ?
ファイル ORACLE_HOME/Apache/Apache/conf/error_log にエラー HTTP-503
ORA-12154 があります。これは何を意味しますか ?
mod_plsql ゲートウェイとはなんですか ?
mod_plsql は Oracle HTTP Server のプラグインであり、SQL*Net 接続を介してブラウザ・
リクエストをデータベース・ストアド・プロシージャのコールにマッピングすることでデー
タベースと通信します。通常、仮想パスの /pls で示されます。mod_plsql ゲートウェイは、
Web 上での PL/SQL ベースのアプリケーションの構築と運用をサポートします。PL/SQL ス
トアド・プロシージャはデータベース表からデータを取得し、Web ブラウザで表示する書式
付きデータと HTML コードが含まれた HTTP レスポンスを生成できます。詳細は、『Oracle
Application Server 10g PL/SQL Web Toolkit リファレンス』を参照してください。
PL/SQL Web Toolkit とはなんですか ?
PL/SQL Web Toolkit を使用すると、Web アプリケーションを Oracle データベース・サー
バーに格納される PL/SQL プロシージャとして開発できます。このツールキット内のパッ
ケージにより定義されるプロシージャ、ファンクションおよびデータ型を独自のストアド・
プロシージャで使用できます。これらのパッケージは、OracleAS Portal 用のデータベース・
ポートレットの開発時に使用できます。詳細は、『Oracle Application Server 10g PL/SQL
Web Toolkit リファレンス』を参照してください。
A-2 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
mod_plsql のリリースを確認するにはどうすればよいですか ?
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
OWA パッケージのリリースを確認するにはどうすればよいですか ?
1.
SQL*Plus を使用し、任意のユーザーとしてデータベースに接続します。
2.
次のコマンドを実行します。
select owa_util.get_version from dual;
OWA パッケージのリリースが表示されます。たとえば、9.0.4.0.1 などです。
この問合せに失敗した場合は、OWA パッケージのリリースが古すぎるためにバージョニン
グ機能がありません。新しいリリースにアップグレードすることをお薦めします。
OWA パッケージをインストールするにはどうすればよいですか ?
詳細は、2-2 ページの「必須パッケージのインストール」を参照してください。
OWA パッケージをアンインストールするにはどうすればよいですか ?
次のタスクを実行すると、OWA パッケージをアンインストールできます。
1.
OWA パッケージのインストール元ディレクトリにナビゲートします。たとえば、次の
ようになります。
cd ORACLE_HOME/Apache/modplsql
2.
SQL*Plus を使用し、OWA パッケージに所有者として接続します。OWA パッケージの
旧バージョンがある場合を除き、ここでは SYS ユーザーを使用する必要があります。
3.
owadins.sql スクリプトを起動して OWA パッケージをアンインストールします。
よくある質問
A-3
データベースに重複してインストールされている 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
----SYS
SYS
PUBLIC
OBJECT_TYPE
----------PACKAGE
PACKAGE BODY
SYNONYM
これよりも多数の行が表示される場合は、他のスキーマに古い OWA パッケージが存在し、
それが mod_plsql ユーザーにとって問題になっている可能性があることを意味します。この
場合は、すべてのバージョンの OWA パッケージをデータベースからアンインストールし、
Oracle Application Server とともに出荷される OWA パッケージを再インストールします。
mod_plsql を介して PL/SQL プロシージャにアクセス中に HTTP エラー・
コードが戻されます。
mod_plsql では、OHS ファイルの ORACLE_HOME/Apache/Apache/logs/error_log に
詳細なエラー・メッセージが記録されます。このファイルをスキャンして問題を把握してく
ださい。mod_plsql のロギングの詳細は、「mod_plsql ではどのような種類のロギング機能を
使用できますか ?」を参照してください。
すべての独自 PL/SQL プロシージャで、Netscape
では「ドキュメントに
プロシージャで、
データが含まれていません」というエラー、Internet
Explorer では空白ペー
データが含まれていません」というエラー、
ジが戻されます。
データベースに OWA パッケージが重複してインストールされていると、この問題が発生す
る場合があります。詳細は、「データベースに重複してインストールされている OWA パッ
ケージを検出してクリーン・アップするには、どうすればよいですか ?」を参照してくださ
い。
A-4 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
パフォーマンスの高い PL/SQL プロシージャがありますが、mod_plsql
を
プロシージャがありますが、
介した一部の HTTP リクエストに 15 秒以上かかることがあります。
この問題の最も一般的な原因は、Oracle Application Server の中間層とバックエンド・デー
タベースのキャラクタ・セットが一致せず、Oracle HTTP Server で HTTP KeepAlive が有効
化されていることです。設定にこの種の誤りがあると、無効な Content-Length がブラウザに
送信され、ブラウザは KeepAliveTimeout 間隔によってストリームがクローズされた場合に
のみレスポンス・ストリームの終わりを検出します。この問題を解決するには、DAD とデー
タベースの PlsqlNLSLanguage パラメータが一致することを確認します。
mod_plsql を使用して独自データベース上でアプリケーションを実行する
ことはできますか ?
はい。ただし、アプリケーションを実行する前に、データベースに OWA パッケージをイン
ストールする必要があります。2-2 ページの「必須パッケージのインストール」を参照してく
ださい。
mod_plsql を構成するにはどうすればよいですか ?
『Oracle HTTP Server 管理ガイド』を参照してください。
Oracle Enterprise Manager の UI を介して DAD を作成するにはどうすれば
よいですか ?
DAD の作成方法については、Oracle Enterprise Manager のマニュアルを参照してください。
Oracle Enterprise Manager の UI を介して DAD 設定の問題を解決するには
どうすればよいですか ?
DAD 設定ツールでは、その使用に関するすべてのログ詳細がログ・ファイル ORACLE_
HOME/Apache/modpslql/logs/log.xml に出力されます。
DAD 設定ファイルは手動で編集できますか ?
はい。ただし、更新後に次のコマンドを実行する必要があります。
ORACLE_HOME/dcm/bin/dcmctl updateConfig -ct ohs
これにより、Oracle Enterprise Manager リポジトリが設定変更で更新され、DAD パスワー
ドが不明瞭化されます。
mod_plsql ではどのような認証モードを使用できますか ?
第 3 章「mod_plsql を使用したアプリケーション・データベース・アクセスの保護」を参照
してください。
よくある質問
A-5
mod_plsql クリーン・アップ・スレッドとはなんですか ?
mod_plsql は、各 httpd プロセスでスレッドを起動します。このスレッドのジョブは、アイ
ドル状態のデータベース・セッションとファイル・システムのキャッシュをクリーン・アッ
プすることです。このスレッドをクリーン・アップ・スレッド
クリーン・アップ・スレッドと呼びます。
クリーン・アップ・スレッド
mod_plsql には、どのような種類のデータベース接続プーリング機能があ
りますか ?
『Oracle Application Server 10g パフォーマンス・ガイド』を参照してください。
mod_plsql ではどのようにしてデータベース・セッションがクリーン・
アップされますか ?
mod_plsql では、PlsqlIdleSessionCleanupInterval の構成設定に基づいて、使用されていな
いデータベース・セッションがクリーン・アップされます。この他、プールされたデータ
ベース・セッションから提供されるリクエストの数は、設定ディレクティブ
PlsqlMaxRequestsPerSession により制御されます。httpd プロセスがシャットダウンされる
と、データベース・セッションがクローズされます。
プールされたデータベース接続が mod_plsql に存在するときに、データ
ベースを再起動するとどうなりますか ?
データベース接続が中断されるとき、中断された接続を使用して PL/SQL プロシージャの実
行を試行する最初のリクエストは失敗します。以降のリクエストでは、データベース・セッ
ションが再確立され、通常どおりに機能が起動されます。失敗回数は、プールされたデータ
ベース・セッションの数に正比例します。mod_plsql の将来のバージョンでは、停止中の接
続が自動的に検出されます。
注意 : PlsqlIdleSessionCleanupInterval の時間隔内にデータベースが再起
動されないと、クリーン・アップ・スレッドは中断されたセッションをク
リーン・アップします。エンド・ユーザーにはエラーは表示されません。
mod_plsql ではファイル・システム内でキャッシュされたコンテンツがど
のようにクリーン・アップされますか ?
クリーン・アップ・スレッドは、PlsqlCacheCleanupTime の設定に基づいて Portal のファイ
ル・システム・キャッシュをスキャンします。デフォルトのクリーン・アップ時刻は、現地
時間で毎日午後 11 時です。
関連項目 : 『Oracle Application Server 10g パフォーマンス・ガイド』
A-6 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
URL に接頭辞 /pls を付けずに mod_plsql を起動できますか ?
はい。mod_plsql は OHS の Location ディレクティブを使用するため、mod_plsql で処理さ
れるように任意の仮想パスを設定できます。
PL/SQL と mod_plsql のパフォーマンスを改善するにはどうすればよいで
すか ?
『Oracle Application Server 10g パフォーマンス・ガイド』を参照してください。
mod_plsql ではどのような種類のロギング機能を使用できますか ?
■
■
mod_plsql では、デフォルトで OHS error_log ファイルの ORACLE_
HOME/Apache/Apache/logs/error_log にアラート、警告またはエラーが記録され
ます。mod_plsql で記録される情報の量は、OHS の httpd.conf の LogLevel パラメー
タ設定で制御されます。デフォルトでは、このパラメータは warn に設定されます。
また、次の手順に従って、mod_plsql のパフォーマンス・ロギングをリクエストごとに
有効化することもできます。
1.
2.
ORACLE_HOME/Apache/Apache/conf/httpd.conf を編集し、LogLevel を info
(デフォルトは warn)に設定します。
次のコマンドを発行し、DCM を設定変更で更新します。
ORACLE_HOME/dcm/bin/dcmctl updateConfig -ct ohs
3.
次のコマンドを使用して OHS を再起動します。
ORACLE_HOME/opmn/bin/opmnctl restartproc type=ohs
4.
mod_plsql に対してなんらかの URL を発行し、ファイル 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
よくある質問
A-7
■
Portal を使用している場合は、Portal の DAD に次の設定パラメータを追加して、Portal
セッションの Cookie ロギングを有効化するように追加選択できます。
PlsqlInfoLogging InfoDebug
この場合も、前述のように httpd.conf で LogLevel を info に設定します。
■
最後に、mod_plsql でデバッグ・ロギングを有効化できます。これは最上位のロギン
グ・レベルであり、アクティブ・サイトの場合はお薦めしません。
注意 : このロギング・モードは、オラクル社カスタマ・サポート・セン
ターから要請された場合にのみ有効化してください。
このモードでは、デバッグ・メッセージが Oracle HTTP Server の error_log ファイル
に記録され、さらに mod_plsql 固有のログが ORACLE_
HOME/Apache/modplsql/logs に作成されます。ログの位置は、ORACLE_
HOME/Apache/modplsql/conf/plsql.conf 内で PlsqlLogDirectory ディレクティ
ブを使用して設定可能です。デバッグ・レベルのロギングを有効化する手順は、次のと
おりです。
1.
ORACLE_HOME/Apache/modplsql/conf/plsql.conf を編集し、
PlsqlLogEnable を On(デフォルトは Off)に設定します。
2.
次のコマンドを発行し、DCM を設定変更で更新します。
ORACLE_HOME/dcm/bin/dcmctl updateConfig -ct ohs
3.
次のコマンドを使用して OHS を再起動します。
ORACLE_HOME/opmn/bin/opmnctl restartproc type=ohs
mod_plsql にはどのような種類の DMS メトリックを使用できますか ?
『Oracle Application Server 10g パフォーマンス・ガイド』を参照してください。
mod_plsql には高可用性についてどのような考慮事項がありますか ?
高可用性のために、mod_plsql ベースのアプリケーションでは次のことを認識する必要があ
ります。
■
mod_plsql 設定パラメータ PlsqlDatabaseConnectString には、Oracle Internet Directory
の LDAP 検索を介して名前解決が発生するように、接続文字列形式の
NetServiceNameFormat を使用する必要があります。これにより、データベースの
host:port:service_name 情報を中央のリポジトリで設定でき、必要に応じた RAC ノードの
追加または削除が容易になります。
A-8 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
■
mod_plsql では、停止中のデータベース接続は自動的に検出されません。バックエン
ド・データベースが停止すると、最初の少数のリクエストは失敗します。詳細は、「プー
ルされたデータベース接続が mod_plsql に存在するときに、データベースを再起動する
とどうなりますか ?」を参照してください。
データベースがファイアウォールで分離されている場合、mod_plsql
では
データベースがファイアウォールで分離されている場合、
どのような考慮事項がありますか ?
mod_plsql を実行する Oracle Application Server の中間層とバックエンド・データベースの
間にファイアウォールが存在する場合は、mod_plsql でアイドル・セッションのクリーン・
アップ間隔を、ファイアウォールでの間隔よりも短く設定する必要があります。これにより、
mod_plsql が確立した接続をファイアウォールがクローズすることはなくなります。
注意 : mod_plsql のアイドル・セッション・クリーン・アップ間隔は、
ORACLE_HOME/Apache/modplsql/conf/plsql.conf 内のパラメータ
PlsqlIdleSessionCleanupInterval を使用して設定できます。デフォルト値
は 15 分です。
PL/SQL アプリケーションに対して異なるホスト名、ポートまたは
request_protocol をアサートするには、どうすればよいですか ?
■
OHS インスタンスの手前に Web Cache またはロード・バランシング・ルーターが存在
する場合は、サイトのホスト名とポートを Web Cache または LBR のホスト名および
ポートとしてアサートする必要があります。このような場合は、OHS 設定ディレクティ
ブ ServerName および Port を使用してアサートすることをお薦めします。なんらかの理
由でホスト名とポートを OHS レベルでアサートしない場合は、mod_plsql 設定ディレ
クティブ PlsqlCGIEnvironmentList を使用して、mod_plsql で実行中の PL/SQL アプリ
ケーションに対してのみ異なるホスト名とポートをアサートできます。たとえば、次の
ようになります。
■
PlsqlCGIEnvironmentList SERVER_NAME=lbr.us.oracle.com
かわりに OHS の httpd.conf 内の ServerName ディレクティブを使用することを
考慮してください。
■
PlsqlCGIEnvironmentList
SERVER_PORT=9999
かわりに OHS の httpd.conf 内の Port ディレクティブを使用することを考慮し
てください。
■
PlsqlCGIEnvironmentList HTTP_
HOST=myservername.us.oracle.com:9999
SERVER_NAME:SERVER_PORT の組合せです。
よくある質問
A-9
■
同様に、サイトが外部からは SSL としてアクセスされるが、内部的には非 SSL モードで
(間に SSL アクセラレータを使用して)稼働する場合は、PL/SQL アプリケーションで
非 SSL リンクのかわりに SSL リンクを生成できるように、REQUEST_PROTOCOL を
HTTPS としてアサートできます。たとえば、次のようになります。
PlsqlCGIEnvironmentList
REQUEST_PROTOCOL=https
特定のパターンを持つプロシージャ名へのアクセスを無効化するにはどうす
ればよいですか ?
3-5 ページの「mod_plsql での PlsqlExclusionList ディレクティブの使用」の
PlsqlExclusionList の説明を参照してください。
ファイル ORACLE_HOME/Apache/Apache/conf/error_log にエラー
HTTP-503 ORA-12154 があります。これは何を意味しますか ?
このエラーは、mod_plsql からデータベースに接続できないことを意味します。
次のことを確認してください。
1.
データベースが稼働中であること。
2.
DAD に指定されているユーザー名およびパスワード情報が正しいこと。
3.
Oracle Application Server の中間層が、DAD の 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 のマニュアル
を参照してください。
A-10 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
注意 : 10g(9.0.4)では、DAD のデフォルトの接続文字列パラメータは、
Oracle Internet Directory で LDAP 検索を介して解決されるように設定さ
れます。ldap.ora を変更した場合は、その変更に mod_plsql からアクセ
スできるように Oracle HTTP Server を再起動する必要があります。
よくある質問
A-11
A-12 Oracle Application Server 10g mod_plsql ユーザーズ・ガイド
索引
記号
G
! 記号
柔軟なパラメータの受渡し,1-9
定義,1-4
GET メソッド,1-5
数字
HEAD メソッド,1-5
HTTP HEAD リクエスト,1-5
2 パラメータ
柔軟なパラメータの受渡し,1-9
4 パラメータ
柔軟なパラメータの受渡し,1-10
L
B
BLOB
ダイレクト・ダウンロード,1-20
ドキュメント表の定義,1-12
C
CGI
環境変数,1-23
CONTENT_TYPE 列,1-13
CONTENT 列,1-13
Cookie の制限,1-25
D
DAD
定義,1-3
DAD_CHARSET 列,1-13
DAD の設定,2-5
DTD,1-12
以前のスタイル,1-13
H
LAST_UPDATED 列,1-13
LONG RAW
ドキュメント表の定義,1-12
M
MIME タイプ,1-18
mod_plsql
実行,1-3
設定,2-5
mod_plsql の設定,2-5
N
nls_lang
定義,1-24
O
owa_util PL/SQL Web Toolkit パッケージ,1-22
owaload.sql,2-2
索引 -1
P
と
POST メソッド,1-5
ドキュメント・アクセス・パス,1-15
ドキュメント表の定義,1-12
以前のスタイル,1-13
トランザクション・モデル,1-6
R
REQUEST_CHARSET,1-24
REQUEST_IANA_CHARSET,1-25
W
WebDB
リスナーのアップグレード,2-5
あ
は
配列,1-8
パラメータ
受渡し,1-6,1-9
大きな,1-11
オーバーロード,1-7
柔軟な,1-9
アップロード,1-11
ふ
お
ファイルのアップロード,1-11,1-16
属性,1-18
複数のファイル,1-19
ファイルのダウンロード,1-19
オーバーロード,1-7,1-8
か
環境変数
CGI,1-22
く
クライアント・リクエスト,1-2
け
言語パラメータ(nls_lang),1-24
せ
制限,1-25
設定
mod_plsql,2-5
設定、DAD,2-5
設定、mod_plsql,2-5
た
ダイレクト・アクセス URL,1-21
ダウンロード,1-11
索引 -2
Fly UP