63 DBMS_EPG

DBMS_EPGパッケージは、WebブラウザからHTTPリスナーを介してPL/SQLストアド・プロシージャを起動できる、埋込みのPL/SQLゲートウェイを実装します。

この章のトピックは、次のとおりです:

63.1 DBMS_EPGの概要

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サーバー内ではサーブレットとして表示されます。

63.2 DBMS_EPGのセキュリティ・モデル

構成インタフェースを起動するにはXDBADMINロールが必要です。データベース・ユーザーXDBによって起動できます。

認証インタフェースは、すべてのユーザーが起動できます。

63.3 DBMS_EPGの例外

このトピックの表では、DBMS_EPGパッケージで発生する例外を示します。

表63-1 DBMS_EPGの例外

例外 エラー・コード 説明

DAD_NOT_FOUND

20000

データベース・アクセス記述子(DAD)%sが見つかりません。DADの名前が正しいこと、およびそれが存在することを確認してください

63.4 DBMS_EPGのデータ構造

DBMS_EPGパッケージは、TABLEタイプを定義します。

VARCHAR2_TABLE表タイプ

このタイプは、属性名、属性値、仮想パスおよびデータベース・アクセス記述子(DAD)のリストを戻すために、GET_ALL_GLOBAL_ATTRIBUTESGET_ALL_DAD_ATTRIBUTESGET_ALL_DAD_MAPPINGSおよびGET_DAD_LISTプロシージャで使用されます。

TYPE VARCHAR2_TABLE IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;

63.5 DBMS_EPGのサブプログラム・グループ

DBMS_EPGは、構成サブプログラムと認証サブプログラムの2つのインタフェースで構成されます。

63.5.1 DBMS_EPG構成サブプログラム

構成サブプログラム・グループには、埋込みPL/SQLゲートウェイのグローバル設定とデータベース・アクセス記述子(DAD)固有の設定を検証および変更するためのサブプログラム・インタフェースが含まれています。

表63-2 構成サブプログラム・グループ

サブプログラム 説明

CREATE_DADプロシージャ

新規DADを作成します。

DELETE_DAD_ATTRIBUTEプロシージャ

DAD属性を削除します。

DELETE_GLOBAL_ATTRIBUTEプロシージャ

グローバル属性を削除します。

DROP_DADプロシージャ

DADを削除します。

GET_ALL_DAD_ATTRIBUTESプロシージャ

DADのすべての属性を取得します。

GET_ALL_DAD_MAPPINGSプロシージャ

指定したDADがマップされる仮想パスをすべて取得します。

GET_ALL_GLOBAL_ATTRIBUTESプロシージャ

すべてのグローバル属性およびグローバル値を取得します。

GET_DAD_ATTRIBUTEファンクション

DAD属性の値を取得します。

GET_DAD_LISTプロシージャ

埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。

GET_GLOBAL_ATTRIBUTEファンクション

グローバル属性の値を取得します。

MAP_DADプロシージャ

指定した仮想パスにDADをマップします。

SET_DAD_ATTRIBUTEプロシージャ

DADの値を設定します。

SET_GLOBAL_ATTRIBUTEプロシージャ

グローバル属性の値を設定します。

UNMAP_DADプロシージャ

指定した仮想パスからDADをマッピング解除します。

63.5.2 DBMS_EPG認証サブプログラム

認証サブプログラム・グループには、特定のデータベース・アクセス記述子(DAD)を使用した埋込みPL/SQLゲートウェイによって、データベース・ユーザーの権限の使用を認証および認証解除するためのサブプログラム・インタフェースが含まれています。

表63-3 認証サブプログラム・グループ

サブプログラム 説明

AUTHORIZE_DADプロシージャ

データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証します。

DEAUTHORIZE_DADプロシージャ

データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証解除します。

63.6 DBMS_EPGサブプログラムの要約

この表は、DBMS_ALERTサブプログラムを示し、簡単に説明しています。

表63-4 DBMS_EPGパッケージのサブプログラム

サブプログラム 説明

AUTHORIZE_DADプロシージャ

データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証します。

CREATE_DADプロシージャ

新規DADを作成します。

DEAUTHORIZE_DADプロシージャ

データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証解除します。

DELETE_DAD_ATTRIBUTEプロシージャ

DAD属性を削除します。

DELETE_GLOBAL_ATTRIBUTEプロシージャ

グローバル属性を削除します。

DROP_DADプロシージャ

DADを削除します。

GET_ALL_DAD_ATTRIBUTESプロシージャ

DADのすべての属性を取得します。

GET_ALL_DAD_MAPPINGSプロシージャ

指定したDADがマップされる仮想パスをすべて取得します。

GET_ALL_GLOBAL_ATTRIBUTESプロシージャ

すべてのグローバル属性およびグローバル値を取得します。

GET_DAD_ATTRIBUTEファンクション

DAD属性の値を取得します。

GET_DAD_LISTプロシージャ

埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。

GET_GLOBAL_ATTRIBUTEファンクション

グローバル属性の値を取得します。

MAP_DADプロシージャ

指定した仮想パスにDADをマップします。

SET_DAD_ATTRIBUTEプロシージャ

DADの値を設定します。

SET_GLOBAL_ATTRIBUTEプロシージャ

グローバル属性の値を設定します。

UNMAP_DADプロシージャ

指定した仮想パスからDADをマッピング解除します。

63.6.1 AUTHORIZE_DADプロシージャ

このプロシージャは、データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証します。実行者は、常に自身の権限の使用を認証することができます。

参照:

このグループの他のサブプログラムについては、「認証サブプログラム」を参照してください。

構文

DBMS_EPG.AUTHORIZE_DAD (
   dad_name  IN  VARCHAR2,
   path     IN  VARCHAR2 DEFAULT NULL);

パラメータ

表63-5 AUTHORIZE_DADプロシージャのパラメータ

パラメータ 説明

dad_name

作成するDADの名前。

user

権限を認証解除するユーザー。使用した場合は、実行者と想定されます。

使用上のノート

  • 他のユーザーの権限の使用を認証するには、ALTER USERシステム権限が必要です。

  • DADは存在する必要がありますが、DADのdatabase-username属性を、認証するユーザーに設定する必要はありません。

  • 複数のユーザーが同一のDADを認証することができます。使用するユーザーの権限は、DADのdatabase-username設定によって決まります。

例外

DADまたはユーザーが存在しない場合、あるいは実行者が必要なシステム権限を持っていない場合は、エラーが発生します。

DBMS_EPG.AUTHORIZE_DAD('HR');

63.6.2 CREATE_DADプロシージャ

このプロシージャは、新規DADを作成します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.CREATE_DAD (
   dad_name  IN  VARCHAR2,
   path      IN  VARCHAR2 DEFAULT NULL);

パラメータ

表63-6 CREATE_DADプロシージャのパラメータ

パラメータ 説明

dad_name

作成するDADの名前。

path

DADをマップする仮想パス。

63.6.3 DEAUTHORIZE_DADプロシージャ

このプロシージャは、データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証解除します。実行者は、常に自身の権限の使用を認証解除することができます。

参照:

このグループの他のサブプログラムについては、「認証サブプログラム」を参照してください。

構文

DBMS_EPG.DEAUTHORIZE_DAD (
   dad_name  IN  VARCHAR2,
   path      IN  VARCHAR2 DEFAULT NULL);

パラメータ

表63-7 DEAUTHORIZE_DADプロシージャのパラメータ

パラメータ 説明

dad_name

使用を認証解除するDADの名前。

user

権限を認証解除するユーザー。使用した場合は、実行者と想定されます。

使用上のノート

他のユーザーの権限の使用を認証解除するには、ALTER USERシステム権限が必要です。

例外

DADまたはユーザーが存在しない場合、あるいは実行者が必要なシステム権限を持っていない場合は、エラーが発生します。

DBMS_EPG.DEAUTHORIZE_DAD('HR');

63.6.4 DELETE_DAD_ATTRIBUTEプロシージャ

このプロシージャは、DAD属性を削除します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.DELETE_DAD_ATTRIBUTE (
   dad_name      IN  VARCHAR2,
   attr_name     IN  VARCHAR2);

パラメータ

表63-8 DELETE_DAD_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

dad_name

DAD属性を削除するDADの名前。

attr_name

削除するDAD属性の名前。

例外

DADが存在しない場合は、エラーが発生します。

63.6.5 DELETE_GLOBAL_ATTRIBUTEプロシージャ

このプロシージャは、グローバル属性を削除します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.DELETE_GLOBAL_ATTRIBUTE (
   attr_name     IN  VARCHAR2);

パラメータ

表63-9 DELETE_GLOBAL_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

attr_name

削除するグローバル属性。

63.6.6 DROP_DADプロシージャ

このプロシージャは、DADを削除します。DADのすべての仮想パス・マッピングも削除されます。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.DROP_DAD (
   dadname  IN  VARCHAR2);

パラメータ

表63-10 DROP_DADプロシージャのパラメータ

パラメータ 説明

dad_name

削除するDAD。

例外

DADが存在しない場合は、エラーが発生します。

63.6.7 GET_ALL_DAD_ATTRIBUTESプロシージャ

このプロシージャは、DADのすべての属性を取得します。名前/値ペア形式の、相関関係にある2つの索引付き表が出力されます。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_ALL_DAD_ATTRIBUTES (
   dad_name      IN          VARCHAR2,
   attr_names    OUT NOCOPY  VARCHAR2_TABLE,                       
   attr_values   OUT NOCOPY  VARCHAR2_TABLE);

パラメータ

表63-11 GET_ALL_DAD_ATTRIBUTESプロシージャのパラメータ

パラメータ 説明

dad_names

DADの名前。

attr_names

属性名。

attr_values

属性値。

例外

DADが存在しない場合は、エラーが発生します。

使用上のノート

DADに属性が設定されていない場合、attr_namesおよびattr_valuesは、空の配列に設定されます。

63.6.8 GET_ALL_DAD_MAPPINGSプロシージャ

このプロシージャは、指定したDADがマップされる仮想パスをすべて取得します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_ALL_DAD_MAPPINGS (
   dad_name      IN          VARCHAR2,
   paths         OUT NOCOPY  VARCHAR2_TABLE);

パラメータ

表63-12 GET_ALL_DAD_MAPPINGSプロシージャのパラメータ

パラメータ 説明

dad_names

DADの名前。

paths

DADがマッピングされる仮想パス。

例外

DADが存在しない場合は、エラーが発生します。

使用上のノート

DADが仮想パスにマップされていない場合、pathsは、空の配列に設定されます。

63.6.9 GET_ALL_GLOBAL_ATTRIBUTESプロシージャ

このプロシージャは、すべてのグローバル属性およびグローバル値を取得します。名前/値ペア形式の、相関関係にある2つの索引付き表が出力されます。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_ALL_GLOBAL_ATTRIBUTES (
   attr_names     OUT   NOCOPY  VARCHAR2_TABLE,
   attr_values    OUT   NOCOPY  VARCHAR2_TABLE);

パラメータ

表63-13 GET_ALL_GLOBAL_ATTRIBUTESプロシージャのパラメータ

パラメータ 説明

attr_names

グローバル属性の名前。

attr_values

グローバル属性の値。

使用上のノート

ゲートウェイ・インスタンスにグローバル属性が設定されていない場合、attr_namesおよびattr_valuesは、空の配列に設定されます。

63.6.10 GET_DAD_ATTRIBUTEファンクション

このプロシージャは、DAD属性の値を取得します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_DAD_ATTRIBUTE (
   dad_name     IN  VARCHAR2,
   attr_name    IN  VARCHAR2)
 RETURN VARCHAR2;

パラメータ

表63-14 GET_DAD_ATTRIBUTEファンクションのパラメータ

パラメータ 説明

dad_name

属性を削除するDADの名前。

attr_name

削除する属性の名前。

戻り値

DADの属性値を戻します。属性が不明か、または設定されていない場合は、NULLを戻します。

例外

DADが存在しない場合は、エラーが発生します。

63.6.11 GET_DAD_LISTプロシージャ

このプロシージャは、埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_DAD_LIST (
   dad_names     OUT NOCOPY  VARCHAR2_TABLE);

パラメータ

表63-15 GET_DAD_LISTプロシージャのパラメータ

パラメータ 説明

dad_names

すべてのDADのリスト。

使用上のノート

DADが存在しない場合、dad_namesは空の配列に設定されます。

63.6.12 GET_GLOBAL_ATTRIBUTEファンクション

このファンクションは、グローバル属性の値を取得します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_GLOBAL_ATTRIBUTE (
   attr_name  IN  VARCHAR2)
 RETURN VARCHAR2;

パラメータ

表63-16 GET_GLOBAL_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

attr_name

取得するグローバル属性。

戻り値

グローバル属性の値を戻します。属性が設定されていないか、または有効な属性でない場合は、NULLを戻します。

63.6.13 MAP_DADプロシージャ

このプロシージャは、指定した仮想パスにDADをマップします。仮想パスがすでに存在する場合、元の仮想パス・マッピングは上書きされます。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.MAP_DAD (
   dad_name  IN  VARCHAR2,
   path      IN  VARCHAR2);

パラメータ

表63-17 MAP_DADプロシージャのパラメータ

パラメータ 説明

dad_name

マップするDADの名前。

path

マップする仮想パス。

例外

DADが存在しない場合は、エラーが発生します。

63.6.14 SET_DAD_ATTRIBUTEプロシージャ

このプロシージャは、DADの値を設定します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.SET_DAD_ATTRIBUTE (
   dad_name    IN  VARCHAR2,
   attr_name   IN  VARCHAR2,   attr_value  IN  VARCHAR2);

パラメータ

表63-18 SET_DAD_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

dad_name

属性を設定するDADの名前。

attr_name

設定する属性の名前。

attr_value

設定する属性値。

表63-19 mod_plsql DAD属性と埋込みPL/SQLゲートウェイDAD属性間のマッピング

mod_plsql DAD属性 埋込みPL/SQLゲートウェイDAD属性 複数回の出現を許可 有効な値

PlsqlAfterProcedure

after-procedure

いいえ

文字列

PlsqlAlwaysDescribeProcedure

always-describe-procedure

いいえ

On、Offの列挙

PlsqlAuthenticationMode

authentication-mode

いいえ

Basic、SingleSignOn、GlobalOwa、CustomOwa、PerPackageOwaの列挙

PlsqlBeforeProcedure

before-procedure

いいえ

文字列

PlsqlBindBucketLengths

bind-bucket-lengths

はい

符号なしの整数

PlsqlBindBucketWidths

bind-bucket-widths

はい

符号なしの整数

PlsqlCGIEnvironmentList

cgi-environment-list

はい

文字列

PlsqlCompatibilityMode

compatibility-mode

いいえ

符号なしの整数

PlsqlDatabaseUsername

database-username

いいえ

文字列

PlsqlDefaultPage

default-page

いいえ

文字列

PlsqlDocumentPath

document-path

いいえ

文字列

PlsqlDocumentProcedure

document-procedure

いいえ

文字列

PlsqlDocumentTablename

document-table-name

いいえ

文字列

PlsqlErrorStyle

error-style

いいえ

ApacheStyle、ModplsqlStyle、DebugStyleの列挙

PlsqlExclusionList

exclusion-list

はい

文字列

PlsqlFetchBufferSize

fetch-buffer-size

いいえ

符号なしの整数

PlsqlInfoLogging

info-logging

いいえ

InfoDebugの列挙

PlsqlOWADebugEnable

owa-debug-enable

いいえ

On、Offの列挙

PlsqlMaxRequestsPerSession

max-requests-per-session

いいえ

符号なしの整数

PlsqlNLSLanguage

nls-language

いいえ

文字列

PlsqlPathAlias

path-alias

いいえ

文字列

PlsqlPathAliasProcedure

path-alias-procedure

いいえ

文字列

PlsqlRequestValidationFunction

request-validation-function

いいえ

文字列

PlsqlSessionCookieName

session-cookie-name

いいえ

文字列

PlsqlSessionStateManagement

session-state-management

いいえ

StatelessWithResetPackageState、StatelessWithFastRestPackageState、StatelessWithPreservePackageStateの列挙

PlsqlTransferMode

transfer-mode

いいえ

Char、Rawの列挙

PlsqlUploadAsLongRaw

upload-as-long-raw

いいえ

文字列

例外

DADが存在しないか、または属性が不明の場合は、エラーが発生します。

使用上のノート

  • 以前にattr_name属性が設定されている場合、元の値は新しいattr_value引数によって上書きされます。

  • 埋込みゲートウェイでは、属性が設定されていない場合、デフォルト値が想定されます。DAD属性のデフォルト値は、埋込みゲートウェイのほとんどのユーザーにとって十分な値である必要があります。mod_plsqlユーザーは、次のことに注意してください。

    • PlsqlDatabasePassword属性は必要ありません。

    • 埋込みゲートウェイは外部データベースへのログオンをサポートしていないため、PlsqlDatabaseConnectString属性は必要ありません。

DBMS_EPG.SET_DAD_ATTRIBUTE('HR', 'default-page', 'HRApp.home');

63.6.15 SET_GLOBAL_ATTRIBUTEプロシージャ

このプロシージャは、グローバル属性の値を設定します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.SET_GLOBAL_ATTRIBUTE (
   attr_name    IN VARCHAR2,                     
   attr_value   IN VARCHAR2);

パラメータ

表63-20 SET_GLOBAL_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

attr_name

設定するグローバル属性。

attr_value

設定する属性値。

表63-21 mod_plsqlグローバル属性と埋込みPL/SQLゲートウェイ・グローバル属性間のマッピング

mod_plsqlグローバル属性 埋込みPL/SQLゲートウェイ・グローバル属性 複数回の出現を許可 有効な値

PlsqlLogLevel

log-level

いいえ

符号なしの整数

PlsqlMaxParameters

max-parameters

いいえ

符号なしの整数

使用上のノート

  • 属性名では、大/小文字が区別されます。値は、属性によって、大/小文字が区別される場合とされない場合があります。

  • 以前にattr_name属性が設定されている場合、元の値は新しいattr_value引数によって上書きされます。

例外

属性が不明な場合は、エラーが発生します。

dbms_epg.set_global_attribute('max-parameters', '100');

63.6.16 UNMAP_DADプロシージャ

このプロシージャは、指定した仮想パスからDADをマッピング解除します。パスがNULLの場合、このプロシージャは、DADのすべての仮想パス・マッピングを削除しますが、DADは保存します。

参照:

このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.UNMAP_DAD (
   dad_name IN VARCHAR2,
   path     IN VARCHAR2 DEFAULT NULL);

パラメータ

表63-22 UNMAP_DADプロシージャのパラメータ

パラメータ 説明

dad_name

マッピング解除するDADの名前。

path

マッピング解除する仮想パス。

使用上のノート

DADが存在しない場合は、エラーが発生します。