11.1 DBMS_XS_SESSIONSパッケージ
DBMS_XS_SESSIONS
パッケージは、アプリケーション・セッションを管理します。
11.1.2 定数
次の定数は、ネームスペース・イベント処理ファンクションに渡される操作コードを定義します。
attribute_first_read_operation CONSTANT PLS_INTEGER := 1; modify_attribute_operation CONSTANT PLS_INTEGER := 2;
次の定数は、イベント処理ファンクションを持つネームスペース内の特定の属性の対象イベントを識別するビット値を表します。
attribute_first_read_event CONSTANT PLS_INTEGER := 1; modify_attribute_event CONSTANT PLS_INTEGER := 2;
次の定数は、ネームスペース・イベント処理ファンクションによって戻される可能性のある戻りコードを定義します。
event_handling_succeeded CONSTANT PLS_INTEGER := 0; event_handling_failed CONSTANT PLS_INTEGER := 1;
次の定数は、ADD_GLOBAL_CALLBACK
、DELETE_GLOBAL_CALLBACK
およびENABLE_GLOBAL_CALLBACK
プロシージャへの入力として使用されます。
create_session_event CONSTANT PLS_INTEGER := 1; attach_session_event CONSTANT PLS_INTEGER := 2; guest_to_user_event CONSTANT PLS_INTEGER := 3; proxy_to_user_event CONSTANT PLS_INTEGER := 4; revert_to_user_event CONSTANT PLS_INTEGER := 5; enable_role_event CONSTANT PLS_INTEGER := 6; disable_role_event CONSTANT PLS_INTEGER := 7; enable_dynamic_role_event CONSTANT PLS_INTEGER := 8; disable_dynamic_role_event CONSTANT PLS_INTEGER := 9; detach_session_event CONSTANT PLS_INTEGER := 10; terminate_session_event CONSTANT PLS_INTEGER := 11; direct_login_event CONSTANT PLS_INTEGER := 12; direct_logoff_event CONSTANT PLS_INTEGER := 13;
11.1.3 オブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび付与
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT
文が定義されています。
CREATE OR REPLACE TYPE DBMS_XS_NSATTR AS OBJECT ( --- Member variables namespace varchar2(130), attribute varchar2(4000), attribute_value varchar2(4000), --- Constructor for DBMS_XS_NSATTR type --- Only namespace name is mandatory CONSTRUCTOR FUNCTION DBMS_XS_NSATTR( namespace IN VARCHAR2, attribute IN VARCHAR2 DEFAULT NULL, attribute_value IN VARCHAR2 DEFAULT NULL) RETURN SELF AS RESULT); CREATE OR REPLACE PUBLIC SYNONYM DBMS_XS_NSATTR FOR SYS.DBMS_XS_NSATTR; CREATE OR REPLACE TYPE DBMS_XS_NSATTRLIST AS VARRAY(1000) OF DBMS_XS_NSATTR; CREATE OR REPLACE PUBLIC SYNONYM DBMS_XS_NSATTRLIST FOR SYS.DBMS_XS_NSATTRLIST; GRANT EXECUTE ON DBMS_XS_NSATTR TO PUBLIC; GRANT EXECUTE ON DBMS_XS_NSATTRLIST TO PUBLIC; CREATE OR REPLACE PUBLIC SYNONYM DBMS_XS_SESSIONS FOR SYS.DBMS_XS_SESSIONS; GRANT EXECUTE ON DBMS_XS_SESSIONS TO PUBLIC;
11.1.4 DBMS_XS_SESSIONSサブプログラムの要約
表11-2 DBMS_XS_SESSIONSサブプログラムの要約
サブプログラム | 説明 |
---|---|
指定されたアプリケーション・ユーザー名の新規アプリケーション・セッションを作成します。 |
|
現在の従来型データベース・セッションを、セッションIDで識別されるアプリケーション・セッションに連結します。 |
|
指定されたユーザーを現在連結されている匿名Real Application Securityセッションに割り当てます。 |
|
現在連結されているセッションのアプリケーション・ユーザーを切り替えます。 |
|
現在連結されているアプリケーション・セッションに新規アプリケーション・ネームスペースを作成します。 |
|
現在連結されているアプリケーション・セッションの指定されたアプリケーション・ネームスペースに新規カスタム属性を作成します。 |
|
現在連結されているアプリケーション・セッションのネームスペース内の指定された属性に新しい値を設定します。 |
|
現在連結されているアプリケーション・セッションのネームスペース内の属性の値を取得します。 |
|
現在連結されているアプリケーション・セッションの指定したネームスペース内のアプリケーション・ネームスペース属性を元の値にリセットします。 |
|
現在連結されているアプリケーションの指定したネームスペースから指定した属性を削除します。 |
|
現在連結されているアプリケーション・セッションから指定されたネームスペースおよびその属性を削除します。 |
|
現在連結されているアプリケーション・セッションで実際のアプリケーション・ロールを有効にします。 |
|
現在連結されているアプリケーション・セッションから実際のアプリケーション・ロールを無効にします。 |
|
指定されたセッションIDで新しいCookie値を設定します。 |
|
指定されたセッションIDで識別されるセッションの最終認証時刻を更新します。 |
|
指定されたセッションの非アクティブ・タイムアウト値を分単位で設定します。 |
|
現在連結されているセッションで実行された変更を保存または永続化します。 |
|
現在の従来型データベース・セッションを、連結先のアプリケーション・セッションから連結解除します。 |
|
セッションIDで指定されたセッションを破棄または終了します。 |
|
既存のイベント・ハンドラをデータベースに登録します。 |
|
|
|
既存のグローバル・コールバック・アソシエーションを削除します。 |
この項では次のDBMS_XS_SESSIONSサブプログラムについて説明します。
11.1.4.1 CREATE_SESSIONプロシージャ
CREATE_SESSION
プロシージャは、指定されたユーザー名の新規アプリケーション・セッションを作成します。将来のコールでセッションを参照するために使用できるセッション識別子を戻します。
セッションは、標準アプリケーション・ユーザーまたは外部アプリケーション・ユーザーで作成できます。セッションは信頼モードまたはセキュア・モードで作成できます。信頼モードでは、データ・セキュリティ・チェックがバイパスされます。セキュア・モードでは、データセキュリティ・チェックが施行されます。
信頼モードでの標準セッションの組合せはサポートされません。その他の組合せ、つまりセキュア・モードでの標準セッション、信頼モードでの外部セッション、またはセキュア・モードでの外部セッションはサポートされます。
namespaces
パラメータは、作成するネームスペース、作成する属性および設定する属性値の3つのリストです。これはオプションのパラメータです。デフォルト値はNULL
です。XS$GLOBAL_VAR
およびXS$SESSION
ネームスペースとその属性は常にセッションで使用可能です。
このファンクションは、現在の従来型セッションを新規に作成されたアプリケーション・セッションに連結しません。このタスクを実行するにはATTACH_SESSIONプロシージャを使用します。
プロシージャを実行するユーザーには、username
パラメータで指定されたアプリケーション・ユーザーに対するCREATE_SESSION
アプリケーション権限が必要です。セッションの作成時に作成されるネームスペースのリストも指定できます。セッションの作成時にネームスペースを指定した場合、コール元にはネームスペースに対するアプリケーション権限MODIFY_NAMESPACE
またはMODIFY_ATTRIBUTE
が付与されているか、ADMIN_NAMESPACE
システム権限が付与されている必要があります。
構文
CREATE_SESSION ( username IN VARCHAR2, sessionid OUT NOCOPY RAW, is_external IN BOOLEAN DEFAULT FALSE, is_trusted IN BOOLEAN DEFAULT FALSE, namespaces IN DBMS_XS_NSATTRLIST DEFAULT NULL, cookie IN VARCHAR2 DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・セッションを作成する標準アプリケーション・ユーザーまたは外部アプリケーション・ユーザーの名前。 現在のセッションのユーザー名およびアプリケーション・ロールのリストを検索するには、DBA_XS_USERSデータ・ディクショナリ・ビューを問い合せます。すべてのアプリケーション・ユーザーおよびロールを検索するには、DBA_XS_PRINCIPALSデータ・ディクショナリ・ビューを次のように問い合せます。 ユーザー: SELECT NAME FROM DBA_XS_USERS; ロール: SELECT NAME FROM DBA_XS_ROLES; SELECT NAME FROM DBA_XS_DYNAMIC_ROLES; |
|
新規に作成したアプリケーション・セッションのセッションID。次のいずれかの方法を使用して、セッションIDを取得できます。
|
|
セッションを外部プリンシパル・セッションとして作成するかどうか指定します。これはオプションのパラメータです。デフォルト値は |
|
セッションを信頼モードとセキュア・モードのどちらで作成するかを指定します。信頼モードでは、データ・セキュリティ・チェックがバイパスされます。セキュア・モードでは、データセキュリティ・チェックが施行されます。これはオプションのパラメータです。デフォルト値は |
|
名前、属性および属性値の3つのリスト。ネームスペースがセッションからアクセスできないか、このようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。 |
|
セッションに対して設定するサーバーCookieを指定します。これはオプションのパラメータです。デフォルト値は |
例
DECLARE
nsList DBMS_XS_NSATTRLIST;
sessionid RAW(16);
BEGIN
nsList := DBMS_XS_NSATTRLIST(DBMS_XS_NSATTR('ns1'),DBMS_XS_NSATTR('ns2'));
SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid, FALSE, FALSE, nsList);
END;
11.1.4.2 ATTACH_SESSIONプロシージャ
ATTACH_SESSION
プロシージャは、現在の従来型データベース・セッションをセッションID (session_id
)で識別されるアプリケーション・セッションに連結します。連結されたセッションにより、セッションを作成したアプリケーション・ユーザーに(直接または間接的に)付与されているロールおよびこのセッションの最後の連結解除まで有効だったセッション・スコープの動的アプリケーション・ロールが有効になります。オプションのパラメータenable_dynamic_roles
を使用して動的アプリケーション・ロールのリストでATTACH_SESSION
を実行した場合、提供されている動的アプリケーション・ロールがセッションに対して有効になります。動的ロールのリストを無効にするには、オプションのパラメータdisable_dynamic_roles
を使用してリストを指定します。
連結操作中に3つの値(ネームスペース、属性、属性値)のリストを指定できます。ネームスペースおよび属性が作成され、属性値が設定されます。これは、セッションに存在するネームスペースおよび属性に加えて作成されます。
このプロシージャを実行するには、従来のセッション・ユーザーにATTACH_SESSION
アプリケーション権限が必要です。ネームスペースを指定する場合、ユーザーにはネームスペースに対するアプリケーション権限MODIFY_NAMESPACE
またはMODIFY_ATTRIBUTE
、あるいはADMIN_NAMESPACE
システム権限が付与されている必要があります。
明示的に連結されているセッション(JavaのATTACH_SESSION
プロシージャまたはattachSession()
メソッドを使用して連結されているセッション)から呼び出された場合、セッションにALTER_USER
権限が必要であり、PASSWORD
コマンドにユーザー名が指定されていれば、SQL*Plus PASSWORD
コマンドを使用してセルフ・パスワード変更を行うことができます。
構文
ATTACH_SESSION ( sessionid IN RAW, enable_dynamic_roles IN XS$NAME_LIST DEFAULT NULL, disable_dynamic_roles IN XS$NAME_LIST DEFAULT NULL, external_roles IN XS$NAME_LIST DEFAULT NULL, authentication_time IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, namespaces IN DBMS_XS_NSATTRLIST DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・セッションのセッションID。次のいずれかの方法を使用して、セッションIDを取得できます。
|
|
アプリケーション・セッションで有効にする、付与する動的ロールのリスト。これはオプションのパラメータです。指定されたいずれかの動的ロールが存在しない場合は、セッションの連結が失敗します。セッションが外部プリンシパル・セッションの場合は、有効にする外部ロールのリストを指定できます。これらのロールは連結解除されるまで有効なままになり、次の連結でデフォルトでは有効になりません。 現在のセッションのアプリケーション・ロールのリストを検索するには、DBA_XS_SESSION_ROLESデータ・ディクショナリ・ビューを問い合せます。すべての動的アプリケーション・ロールのリストを検索するには、DBA_XS_PRINCIPALSデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT NAME, TYPE FROM DBA_XS_PRINCIPALS; |
|
セッションで無効にする動的ロールのリスト。これはオプションのパラメータです。 |
|
セッションが外部プリンシパル・セッションの場合に外部ロールのリスト。これはオプションのパラメータです。これらの外部ロールは連結解除操作まで有効なままになり、次の連結でデフォルトでは再度有効になりません。 |
|
セッションに対して更新された認証時刻。これはオプションのパラメータです。時刻は次の形式で指定する必要があります。
|
|
名前、属性および属性値の3つのリスト。ネームスペースがセッションからアクセスできないか、このようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。 |
例
DECLARE
nsList DBMS_XS_NSATTRLIST;
sessionid RAW(16);
BEGIN
nsList := DBMS_XS_NSATTRLIST(DBMS_XS_NSATTR('ns1'),DBMS_XS_NSATTR('ns2'));
SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid);
SYS.DBMS_XS_SESSIONS.ATTACH_SESSION(sessionid, NULL, NULL, NULL, NULL, nsList);
END;
11.1.4.3 ASSIGN_USERプロシージャ
ASSIGN_USER
プロシージャは、指定されたアプリケーション・ユーザーを現在連結されている匿名アプリケーション・セッションに割り当てます。
現在のセッションで有効になっているロールは、この操作後も保持されます。オプションのパラメータenable_dynamic_roles
およびdisable_dynamic_roles
は、有効または無効にする動的ロールの追加リストを指定します。割り当てられたユーザーが外部の場合は、有効にする外部ロールのリストを指定できます。
割当て操作中に3つの値(ネームスペース、属性、属性値)のリストを指定できます。セッションにネームスペースおよび属性が作成され、属性値が設定されます。これは、セッションにすでに存在するネームスペースおよび属性に加えて作成されます。
このプロシージャを実行するには、ディスパッチャまたは接続ユーザーにASSIGN_USER
アプリケーション権限が必要です。ネームスペースを指定する場合、ユーザーにはネームスペースに対するアプリケーション権限MODIFY_NAMESPACE
またはMODIFY_ATTRIBUTE
、あるいはADMIN_NAMESPACE
システム権限が付与されている必要があります。
構文
DBMS_XS_SESSIONS.ASSIGN_USER ( username IN VARCHAR2, is_external IN BOOLEAN DEFAULT FALSE, enable_dynamic_roles IN XS$NAME_LIST DEFAULT NULL, disable_dynamic_roles IN XS$NAME_LIST DEFAULT NULL, external_roles IN XS$NAME_LIST DEFAULT NULL, authentication_time IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, namespaces IN DBMS_XS_NSATTRLIST DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
実際のアプリケーション・ユーザーの名前。 既存のアプリケーション・ユーザーのリストを検索するには、DBA_XS_PRINCIPALSデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT NAME FROM DBA_XS_PRINCIPALS; |
|
指定されたアプリケーション・ユーザーが外部ユーザーかどうかを指定します。これはオプションのパラメータです。デフォルト値は |
|
アプリケーション・セッションで有効にする動的ロールのリスト。これはオプションのパラメータです。 現在のセッションのアプリケーション・ロールのリストを検索するには、V$XS_SESSION_ROLESデータ・ディクショナリ・ビューを問い合せます。すべての動的アプリケーション・ロールのリストを検索するには、DBA_XS_DYNAMIC_ROLESデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT NAME FROM DBA_XS_DYNAMIC_ROLES; |
|
セッションで無効にする動的ロールのリスト。これはオプションのパラメータです。 |
|
アプリケーション・ユーザーが外部アプリケーション・ユーザーの場合に外部ロールのリスト。これはオプションのパラメータです。 |
|
セッションに対して更新された認証時刻。これはオプションのパラメータです。時刻は次の形式で指定する必要があります。
|
|
名前、属性および属性値の3つのリスト。ネームスペースがセッションからアクセスできないか、このようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。 |
例
DECLARE nsList DBMS_XS_NSATTRLIST; sessionid RAW(16); BEGIN nsList := DBMS_XS_NSATTRLIST(DBMS_XS_NSATTR('ns1'),DB); SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid); SYS.DBMS_XS_SESSIONS.ATTACH_SESSION(sessionid); SYS.DBMS_XS_SESSIONS.ASSIGN_USER(username => 'lwuser2', namespaces => nsList); END;
11.1.4.4 SWITCH_USERプロシージャ
SWITCH_USER
プロシージャは、現在連結されているセッションのアプリケーション・ユーザーを切り替えます。XS_PRINCIPAL.ADD_PROXY_USER
PL/SQL APIを使用して別のアプリケーション・ユーザー権限のプロキシを取得することで切替え操作を実行する前に、現在のアプリケーション・ユーザーがターゲット・アプリケーション・ユーザーのプロキシ・ユーザーになっている必要があります。ターゲット・ユーザーのフィルタリング・アプリケーション・ロールのリストがセッションで有効になります。
セッションの現在のアプリケーション・ネームスペースを保持または破棄できます。切替え後に作成するネームスペースおよび設定する属性値のリストも指定できます。ネームスペースを指定する場合、ユーザーにはネームスペースに対するアプリケーション権限MODIFY_NAMESPACE
またはMODIFY_ATTRIBUTE
、あるいはADMIN_NAMESPACE
システム権限が付与されている必要があります。
構文
SWITCH_USER ( username IN VARCHAR2, keep_state IN BOOLEAN DEFAULT FALSE, namespaces IN DBMS_XS_NSATTRLIST DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
切替え先のセキュリティ・コンテキストを持つユーザーのユーザー名。 既存のアプリケーション・ユーザーのリストを検索するには、DBA_XS_USERSデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT NAME FROM DBA_XS_USERS; |
|
アプリケーション・ネームスペースが保持されるかどうかを制御します。 可能な値は次のとおりです。
|
|
名前、属性および属性値の3つのリスト。ネームスペースがセッションからアクセスできないか、このようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。 |
例
DECLARE nsList := DBMS_XS_NSATTRLIST(DBMS_XS_NSATTR('ns1'),DBMS_XS_NSATTR('ns2')); sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid); SYS.DBMS_XS_SESSIONS.ATTACH_SESSION(sessionid); SYS.DBMS_XS_SESSIONS.SWITCH_USER(username => 'lwuser2', keep_state => TRUE, namespaces => nsList); END;
11.1.4.5 CREATE_NAMESPACEプロシージャ
CREATE_NAMESPACE
プロシージャは、現在連結されているアプリケーション・セッションに新規ネームスペースを作成します。ネームスペースに対応するネームスペース・テンプレートがシステムに存在する必要があり、存在しないと、この操作はエラーをスローします。この操作の後、ネームスペースおよびテンプレートに作成されたその属性がセッションで使用可能になります。
コール元のユーザーには、MODIFY_NAMESPACE
アプリケーション権限が必要です。
構文
CREATE_NAMESPACE( namespace IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
作成するネームスペースの名前。この名前の既存のネームスペース・テンプレート・ドキュメントが必要です。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に
|
例
BEGIN SYS.DBMS_XS_SESSIONS.CREATE_NAMESPACE('J_NS1'); END;
11.1.4.6 CREATE_ATTRIBUTEプロシージャ
CREATE_ATTRIBUTE
プロシージャは、現在連結されているアプリケーション・セッションの指定されたネームスペースに新規カスタム属性を作成します。ネームスペースがセッションですでに使用可能でないかこのようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。
コール元ユーザーにはMODIFY_ATTRIBUTE
アプリケーション権限が付与されている必要があります。
構文
PROCEDURE create_attribute( namespace IN VARCHAR2, attribute IN VARCHAR2, value IN VARCHAR2 DEFAULT NULL, eventreg IN PLS_INTEGER DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
属性が作成されるネームスペース。セッションにネームスペースが存在しない場合は、エラーがスローされます。大/小文字を区別する文字列の最大サイズは128文字です。 |
|
作成する属性の名前。大/小文字を区別する文字列の最大サイズは4000文字です。 |
|
属性のデフォルト値。大/小文字を区別する文字列の最大サイズは4000文字です。 |
|
属性に対してハンドラが実行されるイベント。これはオプションのパラメータです。このパラメータの値は、次のいずれかです。
属性が最初の読取りイベントに対して登録されている場合、ハンドラは、値を戻す前に属性が初期化されていない場合に実行されます。更新イベントが登録されている場合は、属性が変更されるたびにハンドラがコールされます。イベントは、ネームスペースにイベント・ハンドラがある場合にのみ登録でき、それ以外の場合はエラーがスローされます。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.CREATE_ATTRIBUTE('NS1','NS1CUSTOM','NS1CUSTOMDEFAULT'); END; -- Example with firstRead event set BEGIN SYS.DBMS_XS_SESSIONS.create_Attribute('ns1','attr4',NULL, DBMS_XS_SESSIONS.attribute_first_read_event); END;
11.1.4.7 SET_ATTRIBUTEプロシージャ
SET_ATTRIBUTE
プロシージャは、現在連結されているセッションに関連付けられているネームスペースの指定された属性に新しい値を設定します。ハンドラ・ファンクションは、属性に対してupdate
イベントが設定されている場合にコールされます。ネームスペースが存在しないか削除されている場合は、エラーがスローされます。存在するネームスペースに対応するテンプレートがない場合は、エラーがスローされます。
コール元ユーザーにはMODIFY_ATTRIBUTE
アプリケーション権限が付与されている必要があります。
構文
SET_ATTRIBUTE ( namespace IN VARCHAR2, attribute IN VARCHAR2, value IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
属性に関連付けられているネームスペースの名前。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に
|
|
既存のネームスペース内の既存の属性の名前。 既存のネームスペース属性のリストを検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
|
属性の新しい値。大/小文字を区別する文字列の最大サイズは4000文字です。 属性に関連付けられている既存の値のリストを検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.SET_ATTRIBUTE('J_NS','JohnNSAttr1','John bio'); END;
11.1.4.8 GET_ATTRIBUTEプロシージャ
GET_ATTRIBUTE
プロシージャは、現在連結されているセッションのネームスペースの指定された属性の値を取得します。ネームスペースに対応するテンプレートが存在しない場合は、エラーがスローされます。指定された属性が存在しない場合は、空の文字列が戻されます。
属性値がNULL
で、firstRead
イベントが設定され、このとき初めて属性値がフェッチされる場合は、属性のハンドラ・ファンクションがコールされます。
コール元ユーザーには、どの権限も付与されている必要はありません。
構文
GET_ATTRIBUTE ( namespace IN VARCHAR2, attribute IN VARCHAR2, value OUT NOCOPY VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
取得する属性のネームスペース。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に |
|
取得する属性の名前。大/小文字を区別する文字列の最大サイズは4000文字です。使用可能な属性のリストを検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
|
取得する属性の値。 使用可能な属性値のリストを検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
例
DECLARE attrVal VARCHAR2(4000);
BEGIN SYS.DBMS_XS_SESSIONS.GET_ATTRIBUTE('J_NS1','JohnNS1Attr1',attrVal); END;
11.1.4.9 RESET_ATTRIBUTEプロシージャ
RESET_ATTRIBUTE
プロシージャは、現在連結されているセッションのネームスペース内で属性の値をデフォルト値(存在する場合)またはNULL
にリセットします。属性にデフォルト値が指定されている場合、値はデフォルト値にリセットされます。属性がデフォルト値なしで作成され、attribute_first_read_event
でマークされている場合は、値がNULL
に設定され、未初期化としてマークされます。属性がデフォルト値なしで作成され、attribute_first_read_event
でマークされていない場合は、値がNULL
に設定されます。
コール元ユーザーにはMODIFY_ATTRIBUTE
アプリケーション権限が付与されている必要があります。
構文
PROCEDURE reset_attribute( namespace IN VARCHAR2, attribute IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
属性を含むネームスペースの名前。大/小文字を区別する文字列の最大サイズは128文字です。 |
|
リセットする属性の名前。大/小文字を区別する文字列の最大サイズは4000文字です。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.RESET_ATTRIBUTE('ns2','attr1'); END;
11.1.4.10 DELETE_ATTRIBUTEプロシージャ
DELETE_ATTRIBUTE
プロシージャは、現在連結されているセッションの指定されたネームスペースから指定された属性および関連付けられている値を削除します。カスタム属性のみ削除できます。テンプレート属性は削除できません。指定された属性が存在しない場合は、エラーがスローされます。
コール元アプリケーションにはMODIFY_ATTRIBUTE
アプリケーション権限が付与されている必要があります。
構文
DELETE_ATTRIBUTE ( namespace IN VARCHAR2, attribute IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
削除する属性に関連付けられているネームスペース。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に
|
|
削除する属性。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に |
例
BEGIN SYS.DBMS_XS_SESSIONS.DELETE_ATTRIBUTE('JohnNS1','JohnNS1Attr1'); END;
11.1.4.11 DELETE_NAMESPACEプロシージャ
DELETE_NAMESPACE
プロシージャは、ネームスペースおよびその属性を現在連結されているアプリケーション・セッションから削除します。
コール元のユーザーには、MODIFY_NAMESPACE
アプリケーション権限が必要です。
構文
DELETE_NAMESPACE ( namespace IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
削除するネームスペースの名前。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に
|
例
BEGIN SYS.DBMS_XS_SESSIONS.DELETE_NAMESPACE('JohnNS1'); END;
11.1.4.12 ENABLE_ROLEプロシージャ
ENABLE_ROLE
プロシージャは、現在連結されているアプリケーション・セッションで実際のアプリケーション・ロールを有効にします。ロールがすでに有効になっている場合、ENABLE_ROLE
プロシージャはアクションを実行しません。このプロシージャは、現在のアプリケーション・ユーザーに直接付与されている標準アプリケーション・ロールのみ有効にします。動的アプリケーション・ロールは有効にできません。
この操作では、コール元ユーザーにアプリケーション権限は不要です。
構文
ENABLE_ROLE ( role IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
有効にするロールの名前。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションのアプリケーション・ロールのリストを検索するには、V$XS_SESSION_ROLESデータ・ディクショナリ・ビューを問い合せます。すべてのアプリケーション・ロールを検索するには、DBA_XS_SESSION_ROLESデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT ROLE_NAME FROM V$XS_SESSION_ROLES; SELECT SESSIONID, ROLE FROM DBA_XS_SESSION_ROLES; |
例
BEGIN SYS.DBMS_XS_SESSIONS.ENABLE_ROLE('auth2_role'); END;
11.1.4.13 DISABLE_ROLEプロシージャ
DISABLE_ROLE
プロシージャは、指定されたアプリケーション・セッションから実際のアプリケーション・ロールを無効にします。現在連結されているアプリケーション・セッションでロールがすでに無効になっているか有効になっていない場合、DISABLE_ROLE
はアクションを実行しません。動的アプリケーション・ロールは無効にできません。セッションを作成したアプリケーション・ユーザーに直接付与されている標準アプリケーション・ロールのみ無効にできます。
この操作では、コール元ユーザーにアプリケーション権限は不要です。
構文
DISABLE_ROLE ( role IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
無効にするロールの名前。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションのアプリケーション・ロールのリストを検索するには、V$XS_SESSION_ROLESデータ・ディクショナリ・ビューを問い合せます。すべてのアプリケーション・ロールを検索するには、DBA_XS_SESSION_ROLESデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT ROLE_NAME FROM V$XS_SESSION_ROLES; SELECT SESSIONID, ROLE FROM DBA_XS_SESSION_ROLES; |
例
BEGIN SYS.DBMS_XS_SESSIONS.DISABLE_ROLE('auth1_role'); END;
11.1.4.14 SET_SESSION_COOKIEプロシージャ
SET_SESSION_COOKIE
プロシージャは、指定されたセッションIDで新しいCookie値を設定します。指定されたセッションが存在しないかCookie名がすべてのユーザー・アプリケーション・セッション間で一意でない場合は、エラーがスローされます。
このプロシージャを実行するには、ユーザーにMODIFY_SESSION
アプリケーション権限が付与されている必要があります。
構文
SET_SESSION_COOKIE ( cookie IN VARCHAR2, sessionid IN RAW DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
新規Cookieの名前。Cookieに対して許可される最大長は1024文字です。Cookie名は一意にする必要があります。 現在のセッションの既存のCookiesのリストを検索するには、 |
|
アプリケーション・セッションのセッションID。デフォルト値は
セッションIDを指定しないか |
例
DECLARE sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid); SYS.DBMS_XS_SESSIONS.SET_SESSION_COOKIE('cookie1', sessionid); END;
11.1.4.15 REAUTH_SESSIONプロシージャ
REAUTH_SESSION
プロシージャは、指定されたセッションIDの最終認証時刻を現在の時刻で更新します。アプリケーションは、アプリケーション・ユーザーを再認証したときにこのプロシージャをコールする必要があります。
REAUTH_SESSION
プロシージャを使用して、アプリケーションまたは中間層サーバーで最近認証されていないためタイムアウトになったロールを有効にします。reauthSession
Javaメソッドをコールすることもできます。
このファンクションを実行するには、ユーザーにMODIFY_SESSION
アプリケーション権限が付与されている必要があります。
構文
REAUTH_SESSION ( sessionid IN RAW DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・セッションのセッションID。このパラメータはオプションです。デフォルト値は
セッションIDを指定しないか |
例
DECLARE sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.REAUTH_SESSION(sessionid); END;
11.1.4.16 SET_INACTIVITY_TIMEOUTプロシージャ
SET_INACTIVITY_TIMEOUT
プロシージャは、現在連結されているセッションの非アクティブ・タイムアウト値を分単位で設定します。非アクティブ・タイムアウト値は、Oracleデータベースがアプリケーション・セッションを終了し、リソースが解放される前に許容される最大非アクティブ期間を表します。time
パラメータに負の値を設定しようとすると、エラーがスローされます。無効なセッションIDが指定されるかセッションが存在しない場合は、エラーがスローされます。
タイムアウト値を設定する別の方法は、setInactivityTimeout
Javaメソッドを使用することです。xmlconfig.xml
構成ファイルでデフォルトのグローバル・タイムアウト値を設定できます。240 (4時間)をお薦めします。
アプリケーション・セッションは、従来のセッションが連結されている間は非アクティブになるため、タイムアウトにできません。最終アクセス時刻は、従来のセッションがアプリケーション・セッションに連結するたびに更新されます。
このプロシージャを実行するには、コール元ユーザーにMODIFY_SESSION
アプリケーション権限が付与されている必要があります。
構文
SET_INACTIVITY_TIMEOUT ( time IN NUMBER, sessionid IN RAW DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
分単位での非アクティブ・タイムアウト値。 |
|
アプリケーション・セッションのセッションID。デフォルト値は
セッションIDを指定しないか |
例
DECLARE sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid); SYS.DBMS_XS_SESSIONS.SET_INACTIVITY_TIMEOUT (300, sessionid); END; /
11.1.4.17 SAVE_SESSIONプロシージャ
SAVE_SESSION
プロシージャは、現在連結されているセッションで実行されたすべての変更を保存し、変更を保存する前のセッションに連結したままにします。
コール元ユーザーがこの操作を実行するために権限は必要ありません。
構文
SAVE_SESSION;
パラメータ
なし。
例
BEGIN SYS.DBMS_XS_SESSIONS.SAVE_SESSION; END;
11.1.4.18 DETACH_SESSIONプロシージャ
DETACH_SESSION
プロシージャは、現在の従来型データベース・セッションを、連結先のアプリケーション・セッションから連結解除します。データベース・セッションは、アプリケーション・セッションに連結する前のコンテキストに戻ります。操作を実行するために権限は必要ないため、任意のユーザーがこのプロシージャを実行できます。
構文
DETACH_SESSION (abort IN BOOLEAN DEFAULT FALSE);
パラメータ
パラメータ | 説明 |
---|---|
|
|
例
BEGIN SYS.DBMS_XS_SESSIONS.DETACH_SESSION; END;
11.1.4.19 DESTROY_SESSIONプロシージャ
DESTROY_SESSION
プロシージャは、指定されたセッションを破棄します。このプロシージャは、アプリケーション・セッションからすべての従来のセッションも暗黙的に連結解除します。セッションが破棄された後は、セッションに対してそれ以上連結を実行できません。この操作では、アプリケーション・ユーザーの直接ログオンを通じて作成されたセッションは破棄できません。
このプロシージャを実行するには、ユーザーにTERMINATE_SESSION
アプリケーション権限が必要です。
構文
DESTROY_SESSION ( sessionid IN RAW, force IN BOOLEAN DEFAULT FALSE);
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・セッションのセッションID。次のいずれかの方法を使用して、セッションIDを取得できます。
セッションIDを指定しないか |
|
|
例
DECLARE sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwtSession1', sessionid); SYS.DBMS_XS_SESSIONS.DESTROY_SESSION (sessionid); END;
11.1.4.20 ADD_GLOBAL_CALLBACKプロシージャ
ADD_GLOBAL_CALLBACK
プロシージャは、既存のPL/SQLプロシージャをevent_type
パラメータで指定されたセッション操作にイベント・ハンドラとして登録します。関連付けられたイベントの発生時に実行するために同じセッション操作に対して複数のイベント・ハンドラを追加できます。グローバル・コールバック・プロシージャを追加すると、コールバック・プロシージャの実行が自動的に有効になります。同じセッション・イベントに対して複数のコールバックが追加されている場合、それらは登録順序に従って実行されます。つまり、最初に登録されたコールバック・プロシージャが最初に実行されます。このプロシージャは、無効なイベント・タイプが指定されている場合、またはコールバック・プロシージャが存在しない場合にエラーをスローします。
このプロシージャを正常に実行するには、CALLBACK
アプリケーション権限が必要です。このロールは、PROVISIONER
データベース・ロールを通じて取得できます。
構文
ADD_GLOBAL_CALLBACK( event_type IN PLS_INTEGER, callback_schema IN VARCHAR2, callback_package IN VARCHAR2, callback_procedure IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
次のイベント・タイプから選択します。
|
|
コールバック・プロシージャが作成されたスキーマの名前を入力します。 |
|
コールバック・プロシージャが作成されたパッケージの名前を入力します。コールバック・プロシージャがスタンドアロンの場合は、 |
|
グローバル・コールバックを定義するプロシージャの名前を入力します。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.ADD_GLOBAL_CALLBACK ( DBMS_XS_SESSIONS.CREATE_SESSION_EVENT, 'APPS1_SCHEMA','APPS2_PKG','CREATE_SESSION_CB'); END;
11.1.4.21 ENABLE_GLOBAL_CALLBACKプロシージャ
ENABLE_GLOBAL_CALLBACK
プロシージャは、グローバル・コールバック・プロシージャの実行を有効または無効にします。このイベントに関連付けられているコールバック・プロシージャが指定されていない場合は、このグローバル・コールバックに関連付けられているすべてのコールバック・プロシージャが有効または無効になります。無効なイベント・タイプが指定されているか無効なコールバック・プロシージャが指定されている場合は、エラーがスローされます。
構文
ENABLE_GLOBAL_CALLBACK( event_type IN PLS_INTEGER, enable IN BOOLEAN DEFAULT TRUE, callback_schema IN VARCHAR2 DEFAULT NULL, callback_package IN VARCHAR2 DEFAULT NULL, callback_procedure IN VARCHAR2 DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
次のイベント・タイプから選択します。
|
|
グローバル・コールバックを有効にするか無効にするかを指定します。デフォルト値は |
|
グローバル・コールバックが作成されたスキーマの名前を入力します。 |
|
グローバル・コールバックが作成されたパッケージの名前を入力します。 |
|
グローバル・コールバックを定義するプロシージャの名前を入力します。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.ENABLE_GLOBAL_CALLBACK ( DBMS_XS_SESSIONS.CREATE_SESSION_EVENT, TRUE, 'APPS1_SCHEMA','APPS2_PKG','CREATE_SESSION_CB'); END;
11.1.4.22 DELETE_GLOBAL_CALLBACKプロシージャ
DELETE_GLOBAL_CALLBACK
プロシージャは、グローバル・コールバックを登録から削除します。(グローバル・コールバック自体は削除しません。)コールバック・プロシージャが指定されていない場合は、このグローバル・コールバックに関連付けられているすべてのコールバック・プロシージャが削除されます。無効なイベント・タイプが指定されている場合は、エラーがスローされます。
構文
DELETE_GLOBAL_CALLBACK( event_type IN PLS_INTEGER, callback_schema IN VARCHAR2 DEFAULT NULL, callback_package IN VARCHAR2 DEFAULT NULL, callback_procedure IN VARCHAR2 DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
次のイベント・タイプから選択します。
|
|
グローバル・コールバックが作成されたスキーマの名前を入力します。 |
|
グローバル・コールバックが作成されたパッケージの名前を入力します。 |
|
グローバル・コールバックを定義するプロシージャの名前を入力します。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.DELETE_GLOBAL_CALLBACK ( DBMS_XS_SESSIONS.CREATE_SESSION_EVENT, 'APPS1_SCHEMA','APPS2_PKG','CREATE_SESSION_CB'); END;