DBMS_EPG
パッケージは、WebブラウザからHTTPリスナーを介してPL/SQLストアド・プロシージャを起動できる、埋込みのPL/SQLゲートウェイを実装します。
この章では、次の項目について説明します。
概要
セキュリティ・モデル
例外
構成サブプログラム
認証サブプログラム
DBMS_EPG
パッケージは、PL/SQLユーザーがPL/SQL Webアプリケーションを開発およびデプロイするためのプラットフォームです。埋込みPL/SQLゲートウェイは、Oracle DatabaseのXMLデータベースHTTPサーバー内で実行されるゲートウェイの埋込みバージョンです。 これは、データベース内でmod_plsql
のコア機能を提供しますが、Oracle HTTP Server(powered by Apache)は必要ありません。
ブラウザからHTTPを介してPL/SQLアプリケーションへアクセスできるようにするには、データベース・アクセス記述子(DAD)を作成して仮想パスにマップする必要があります。DADは、データベース・アクセスに使用される一連の構成値です。仮想パス・マッピングによって、XML DB HTTPサーバーの仮想パスのもとでのアプリケーションへのアクセスが可能になります。DADは、XML DB HTTPサーバー内ではサーブレットとして表示されます。
構成インタフェースを起動するにはXDBADMIN
ロールが必要です。これは、データベース・ユーザーXDB
によって起動できます。
認証インタフェースは、すべてのユーザーが起動できます。
次の表に、DBMS_EPG
パッケージで発生する例外を示します。
DBMS_EPG
パッケージは、TABLE
タイプを定義します。
VARCHAR2_TABLE表タイプ
このタイプは、属性名、属性値、仮想パスおよびデータベース・アクセス記述子(DAD)のリストを戻すために、GET_ALL_GLOBAL_ATTRIBUTES
、GET_ALL_DAD_ATTRIBUTES
、GET_ALL_DAD_MAPPINGS
およびGET_DAD_LIST
プロシージャで使用されます。
TYPE VARCHAR2_TABLE IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
DBMS_EPGは、2つのインタフェースで構成されています。
構成サブプログラム・グループには、埋込みPL/SQLゲートウェイのグローバル設定とデータベース・アクセス記述子(DAD)固有の設定を検証および変更するためのサブプログラム・インタフェースが含まれています。
表51-2 構成サブプログラム・グループ
サブプログラム | 説明 |
---|---|
|
新規DADを作成します。 |
|
DAD属性を削除します。 |
|
グローバル属性を削除します。 |
|
DADを削除します。 |
|
DADのすべての属性を取得します。 |
|
指定したDADがマップされる仮想パスをすべて取得します。 |
GET_ALL_GLOBAL_ATTRIBUTESプロシージャ |
すべてのグローバル属性およびグローバル値を取得します。 |
|
DAD属性の値を取得します。 |
|
埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。 |
|
グローバル属性の値を取得します。 |
|
指定した仮想パスにDADをマップします。 |
|
DADの値を設定します。 |
|
グローバル属性の値を設定します。 |
|
指定した仮想パスからDADをマッピング解除します。 |
認証サブプログラム・グループには、特定のデータベース・アクセス記述子(DAD)を使用した埋込みPL/SQLゲートウェイによって、データベース・ユーザーの権限の使用を認証および認証解除するためのサブプログラム・インタフェースが含まれています。
表51-4 DBMS_EPGパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証します。 |
|
新規DADを作成します。 |
|
データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証解除します。 |
|
DAD属性を削除します。 |
|
グローバル属性を削除します。 |
|
DADを削除します。 |
|
DADのすべての属性を取得します。 |
|
指定したDADがマップされる仮想パスをすべて取得します。 |
GET_ALL_GLOBAL_ATTRIBUTESプロシージャ |
すべてのグローバル属性およびグローバル値を取得します。 |
|
DAD属性の値を取得します。 |
|
埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。 |
|
グローバル属性の値を取得します。 |
|
指定した仮想パスにDADをマップします。 |
|
DADの値を設定します。 |
|
グローバル属性の値を設定します。 |
|
指定した仮想パスからDADをマッピング解除します。 |
このプロシージャは、データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証します。実行者は、常に自身の権限の使用を認証することができます。
構文
DBMS_EPG.AUTHORIZE_DAD ( dad_name IN VARCHAR2, path IN VARCHAR2 DEFAULT NULL);
パラメータ
表51-5 AUTHORIZE_DADプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成するDADの名前。 |
|
権限を認証解除するユーザー。使用した場合は、実行者と想定されます。 |
使用上の注意
他のユーザーの権限の使用を認証するには、ALTER
USER
システム権限が必要です。
DADは存在する必要がありますが、DADのdatabase-username属性を、認証するユーザーに設定する必要はありません。
複数のユーザーが同一のDADを認証することができます。使用するユーザーの権限は、DADのdatabase-username設定によって決まります。
例外
DADまたはユーザーが存在しない場合、あるいは実行者が必要なシステム権限を持っていない場合は、エラーが発生します。
例
DBMS_EPG.AUTHORIZE_DAD('HR');
このプロシージャは、新規DADを作成します。
構文
DBMS_EPG.CREATE_DAD ( dad_name IN VARCHAR2, path IN VARCHAR2 DEFAULT NULL);
パラメータ
このプロシージャは、データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証解除します。実行者は、常に自身の権限の使用を認証解除することができます。
構文
DBMS_EPG.DEAUTHORIZE_DAD ( dad_name IN VARCHAR2, path IN VARCHAR2 DEFAULT NULL);
パラメータ
表51-7 DEAUTHORIZE_DADプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
使用を認証解除するDADの名前。 |
|
権限を認証解除するユーザー。使用した場合は、実行者と想定されます。 |
使用上の注意
他のユーザーの権限の使用を認証解除するには、ALTER
USER
システム権限が必要です。
例外
DADまたはユーザーが存在しない場合、あるいは実行者が必要なシステム権限を持っていない場合は、エラーが発生します。
例
DBMS_EPG.DEAUTHORIZE_DAD('HR');
このプロシージャは、DAD属性を削除します。
構文
DBMS_EPG.DELETE_DAD_ATTRIBUTE ( dad_name IN VARCHAR2, attr_name IN VARCHAR2);
パラメータ
例外
DADが存在しない場合は、エラーが発生します。
このプロシージャは、グローバル属性を削除します。
構文
DBMS_EPG.DELETE_GLOBAL_ATTRIBUTE ( attr_name IN VARCHAR2);
パラメータ
このプロシージャは、DADを削除します。DADのすべての仮想パス・マッピングも削除されます。
構文
DBMS_EPG.DROP_DAD ( dadname IN VARCHAR2);
パラメータ
例外
DADが存在しない場合は、エラーが発生します。
このプロシージャは、DADのすべての属性を取得します。名前/値ペア形式の、相関関係にある2つの索引付き表が出力されます。
構文
DBMS_EPG.GET_ALL_DAD_ATTRIBUTES ( dad_name IN VARCHAR2, attr_names OUT NOCOPY VARCHAR2_TABLE, attr_values OUT NOCOPY VARCHAR2_TABLE);
パラメータ
表51-11 GET_ALL_DAD_ATTRIBUTESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
DADの名前。 |
|
属性名。 |
|
属性値。 |
例外
DADが存在しない場合は、エラーが発生します。
使用上の注意
DADに属性が設定されていない場合、attr_names
およびattr_values
は、空の配列に設定されます。
このプロシージャは、指定したDADがマップされる仮想パスをすべて取得します。
構文
DBMS_EPG.GET_ALL_DAD_MAPPINGS ( dad_name IN VARCHAR2, paths OUT NOCOPY VARCHAR2_TABLE);
パラメータ
例外
DADが存在しない場合は、エラーが発生します。
使用上の注意
DADが仮想パスにマップされていない場合、paths
は、空の配列に設定されます。
このプロシージャは、すべてのグローバル属性およびグローバル値を取得します。名前/値ペア形式の、相関関係にある2つの索引付き表が出力されます。
構文
DBMS_EPG.GET_ALL_GLOBAL_ATTRIBUTES ( attr_names OUT NOCOPY VARCHAR2_TABLE, attr_values OUT NOCOPY VARCHAR2_TABLE);
パラメータ
使用上の注意
ゲートウェイ・インスタンスにグローバル属性が設定されていない場合、attr_names
およびattr_values
は、空の配列に設定されます。
このファンクションは、DAD属性の値を取得します。
構文
DBMS_EPG.GET_DAD_ATTRIBUTE ( dad_name IN VARCHAR2, attr_name IN VARCHAR2) RETURN VARCHAR2;
パラメータ
戻り値
DADの属性値を戻します。属性が不明か、または設定されていない場合は、NULL
を戻します。
例外
DADが存在しない場合は、エラーが発生します。
このプロシージャは、埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。
構文
DBMS_EPG.GET_DAD_LIST ( dad_names OUT NOCOPY VARCHAR2_TABLE);
パラメータ
使用上の注意
DADが存在しない場合、dad_names
は空の配列に設定されます。
このファンクションは、グローバル属性の値を取得します。
構文
DBMS_EPG.GET_GLOBAL_ATTRIBUTE ( attr_name IN VARCHAR2) RETURN VARCHAR2;
パラメータ
戻り値
グローバル属性の値を戻します。属性が設定されていないか、または有効な属性でない場合は、NULL
を戻します。
このプロシージャは、指定した仮想パスにDADをマップします。仮想パスがすでに存在する場合、元の仮想パス・マッピングは上書きされます。
構文
DBMS_EPG.MAP_DAD ( dad_name IN VARCHAR2, path IN VARCHAR2);
パラメータ
例外
DADが存在しない場合は、エラーが発生します。
このプロシージャは、DADの値を設定します。
構文
DBMS_EPG.SET_DAD_ATTRIBUTE ( dad_name IN VARCHAR2, attr_name IN VARCHAR2, attr_value IN VARCHAR2);
パラメータ
表51-18 SET_DAD_ATTRIBUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
属性を設定するDADの名前。 |
|
設定する属性の名前。 |
|
設定する属性値。 |
表51-19 mod_plsql DAD属性と埋込みPL/SQLゲートウェイDAD属性間のマッピング
mod_plsql DAD属性 | 埋込みPL/SQLゲートウェイDAD属性 | 複数回の出現を許可 | 有効な値 |
---|---|---|---|
|
|
いいえ |
文字列 |
|
|
いいえ |
On、Offの列挙 |
|
|
いいえ |
Basic、SingleSignOn、GlobalOwa、CustomOwa、PerPackageOwaの列挙 |
|
|
いいえ |
文字列 |
|
|
はい |
符号なしの整数 |
|
|
はい |
符号なしの整数 |
|
|
はい |
文字列 |
|
|
いいえ |
符号なしの整数 |
|
|
いいえ |
文字列 |
|
|
いいえ |
文字列 |
|
|
いいえ |
文字列 |
|
|
いいえ |
文字列 |
|
|
いいえ |
文字列 |
|
|
いいえ |
ApacheStyle、ModplsqlStyle、DebugStyleの列挙 |
|
|
はい |
文字列 |
|
|
いいえ |
符号なしの整数 |
|
|
いいえ |
InfoDebugの列挙 |
|
|
いいえ |
On、Offの列挙 |
|
|
いいえ |
符号なしの整数 |
|
|
いいえ |
文字列 |
|
|
いいえ |
文字列 |
|
|
いいえ |
文字列 |
|
|
いいえ |
文字列 |
|
|
いいえ |
文字列 |
|
|
いいえ |
StatelessWithResetPackageState、StatelessWithFastRestPackageState、StatelessWithPreservePackageStateの列挙 |
|
|
いいえ |
CHAR、RAWの列挙 |
|
|
いいえ |
文字列 |
例外
DADが存在しないか、または属性が不明の場合は、エラーが発生します。
使用上の注意
以前にattr_name
属性が設定されている場合、元の値は新しいattr_value
引数によって上書きされます。
埋込みゲートウェイでは、属性が設定されていない場合、デフォルト値が想定されます。 DAD属性のデフォルト値は、埋込みゲートウェイの大部分のユーザーに対して十分な値である必要があります。mod_plsqlユーザーは、次のことに注意してください。
PlsqlDatabasePassword
属性は必要ありません。
埋込みゲートウェイは外部データベースへのログオンをサポートしていないため、PlsqlDatabaseConnectString
属性は必要ありません。
例
DBMS_EPG.SET_DAD_ATTRIBUTE('HR', 'default-page', 'HRApp.home');
このプロシージャは、グローバル属性の値を設定します。
構文
DBMS_EPG.SET_GLOBAL_ATTRIBUTE ( attr_name IN VARCHAR2, attr_value IN VARCHAR2);
パラメータ
表51-21 mod_plsqlグローバル属性と埋込みPL/SQLゲートウェイ・グローバル属性間のマッピング
mod_plsqlグローバル属性 | 埋込みPL/SQLゲートウェイ・グローバル属性 | 複数回の出現を許可 | 有効な値 |
---|---|---|---|
|
|
いいえ |
符号なしの整数 |
|
|
いいえ |
符号なしの整数 |
使用上の注意
属性名では、大/小文字が区別されます。値は、属性によって、大/小文字が区別される場合とされない場合があります。
以前にattr_name
属性が設定されている場合、元の値は新しいattr_value
引数によって上書きされます。
例外
属性が不明な場合は、エラーが発生します。
例
dbms_epg.set_global_attribute('max-parameters', '100');
このプロシージャは、指定した仮想パスからDADをマッピング解除します。パスがNULL
の場合、このプロシージャは、DADのすべての仮想パス・マッピングを削除しますが、DADは保存します。
構文
DBMS_EPG.UNMAP_DAD ( dad_name IN VARCHAR2, path IN VARCHAR2 DEFAULT NULL);
パラメータ
使用上の注意
DADが存在しない場合は、エラーが発生します。