日本語PDF

XS_PRINCIPALパッケージ

XS_PRINCIPALパッケージには、アプリケーション・プリンシパルの作成、管理および削除に使用されるプロシージャが含まれます。これらのアプリケーション・プリンシパルには、アプリケーション・ユーザー、標準アプリケーション・ロールおよび動的アプリケーション・ロールが含まれます。

セキュリティ・モデル

XS_PRINCIPALパッケージは、SYSスキーマに作成されます。

Real Application SecurityのPROVISION権限を持つユーザーは、アプリケーションのユーザーとロールを作成、変更または削除できます。アプリケーション・ユーザーおよびロールの作成、変更または削除に必要な権限は、データベース・ユーザーおよびロールの作成、変更または削除に必要なのと同じシステム権限によって管理されなくなりました。

定数

次の定数はユーザーのステータスを定義します。

ACTIVE          CONSTANT PLS_INTEGER := 1;
INACTIVE        CONSTANT PLS_INTEGER := 2;
UNLOCKED        CONSTANT PLS_INTEGER := 3;
EXPIRED         CONSTANT PLS_INTEGER := 4;
LOCKED          CONSTANT PLS_INTEGER := 5;

次の定数は動的ロール・スコープを定義します。

SESSION_SCOPE   CONSTANT PLS_INTEGER := 0;
REQUEST_SCOPE   CONSTANT PLS_INTEGER := 1;

次の定数は検証機能のタイプを定義します。

XS_SHA512       CONSTANT PLS_INTEGER := 2 ;
XS_SALTED_SHA1  CONSTANT PLS_INTEGER := 1 ;

オブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび付与

このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT文が定義されています。

-- Type definition for roles granted to the principals
CREATE OR REPLACE TYPE XS$ROLE_GRANT_TYPE AS OBJECT (
-- Member Variables
-- Constants defined in other packages cannot be recognized in a type.
-- e.g.  XS_ADMIN_UTIL.XSNAME_MAXLEN
-- name   VARCHAR2(XS_ADMIN_UTIL.XSNAME_MAXLEN),
  name          VARCHAR2(130),
-- Start date of the effective date
  start_date    TIMESTAMP WITH TIME ZONE,
-- End date of the effective date
  end_date      TIMESTAMP WITH TIME ZONE,

  CONSTRUCTOR FUNCTION XS$ROLE_GRANT_TYPE (
    name       IN VARCHAR2,
    start_date IN TIMESTAMP WITH TIME ZONE:= NULL,
    end_date   IN TIMESTAMP WITH TIME ZONE:= NULL)
  RETURN SELF AS RESULT,

  MEMBER FUNCTION get_role_name RETURN VARCHAR2,
  MEMBER PROCEDURE set_start_date(start_date IN TIMESTAMP WITH TIME ZONE),
  MEMBER FUNCTION get_start_date RETURN TIMESTAMP WITH TIME ZONE,
  MEMBER PROCEDURE set_end_date(end_date IN TIMESTAMP WITH TIME ZONE),
  MEMBER FUNCTION get_end_date RETURN TIMESTAMP WITH TIME ZONE
);

CREATE OR REPLACE TYPE XS$ROLE_GRANT_LIST AS VARRAY(1000) OF XS$ROLE_GRANT_TYPE;

XS_PRINCIPALサブプログラムの要約

表11-10 XS_PRINCIPALサブプログラムの要約

サブプログラム 説明

CREATE_USERプロシージャ

アプリケーション・ユーザーを作成します。

CREATE_ROLEプロシージャ

アプリケーション・ロールを作成します。

CREATE_DYNAMIC_ROLEプロシージャ

動的アプリケーション・ロールを作成します。

GRANT_ROLESプロシージャ

1つ以上のアプリケーション・ロールをアプリケーション・プリンシパルに付与します。

REVOKE_ROLESプロシージャ

1つ以上のロールをアプリケーション・プリンシパルから取り消します。

ADD_PROXY_USERプロシージャ

ターゲット・アプリケーション・ユーザーのプロキシ・ユーザーを追加します。

REMOVE_PROXY_USERSプロシージャ

ターゲット・アプリケーション・ユーザーの指定されたプロキシ・ユーザーまたはすべてのプロキシ・ユーザーを削除します。

ADD_PROXY_TO_DBUSER

データベース・ユーザーにプロキシ・アプリケーション・ユーザーを追加します。

REMOVE_PROXY_FROM_DBUSERプロシージャ

データベース・ユーザーからプロキシ・アプリケーション・ユーザーを削除します。

SET_EFFECTIVE_DATESプロシージャ

アプリケーション・ユーザーまたはロールの有効日を設定または変更します。

SET_DYNAMIC_ROLE_DURATIONプロシージャ

動的アプリケーション・ロールの期間(分単位)を設定または変更します。

SET_DYNAMIC_ROLE_SCOPEプロシージャ

REQUEST_SCOPESESSION_SCOPEなど、動的アプリケーション・ロールのスコープを設定または変更します。

ENABLE_BY_DEFAULTプロシージャ

アプリケーション・ロールを有効または無効にします。

ENABLE_ROLES_BY_DEFAULTプロシージャ

指定されたユーザーに直接付与されているすべてのロールを有効または無効にします。

SET_USER_SCHEMAプロシージャ

アプリケーション・ユーザーのデータベース・スキーマを設定します。

SET_GUIDプロシージャ

外部ユーザーまたはロールのGUIDを設定します。

SET_ACLプロシージャ

アプリケーション・ユーザーまたは動的ロールにReal Application Securityセッション権限を設定します。

SET_PROFILEプロシージャ

アプリケーション・ユーザーのプロファイルを設定します。Real Application Securityアプリケーション・ユーザーのデータベース使用率やデータベース・インスタンス・リソースを制限する、一連のリソース制限およびパスワード・パラメータです。

SET_USER_STATUSプロシージャ

ACTIVEINACTIVEUNLOCKLOCKEDEXPIREDなど、アプリケーション・ユーザー・アカウントのステータスを設定または変更します

SET_PASSWORDプロシージャ

アプリケーション・ユーザー・アカウントのパスワードを設定または変更します。

SET_VERIFIERプロシージャ

アプリケーション・ユーザー・アカウントの検証機能を設定または変更します。

SET_DESCRIPTIONプロシージャ

アプリケーション・ユーザーまたはロールの説明文字列を設定します。

DELETE_PRINCIPALプロシージャ

アプリケーション・ユーザーまたはロールを削除します。

この項では次のXS_PRINCIPALサブプログラムについて説明します。

CREATE_USERプロシージャ

CREATE_USERプロシージャは、新規アプリケーション・ユーザーを作成します。アプリケーション・ユーザーを作成するにはCREATE USERシステム権限が必要です。

DBA_XS_USERSデータ・ディクショナリ・ビューを使用して、すべてのアプリケーション・ユーザーのリストを取得できます。

構文

CREATE_USER ( 
  name            IN VARCHAR2,
  schema          IN VARCHAR2    := NULL,
  status          IN PLS_INTEGER := ACTIVE,
  start_date      IN TIMESTAMP WITH TIME ZONE  := NULL,
  end_date        IN TIMESTAMP WITH TIME ZONE  := NULL,
  guid            IN RAW         := NULL,
  external_source IN VARCHAR2    := NULL,
  description     IN VARCHAR2    := NULL,
  acl             IN VARCHAR2    := NULL); 

パラメータ

パラメータ 説明

name

作成するアプリケーション・ユーザーの名前。

status

作成時のユーザーのステータス。これは、次のいずれかの値です。

ACTIVEINACTIVE

デフォルト値はACTIVEです。

PASSWORDEXPIREDおよびLOCKEDは、Oracle Database Release 12.1 (12.1.0.2)以降は非推奨です。

schema

ユーザーに関連付けるデータベース・スキーマ。これはオプションです。

start_date

ユーザー・アカウントが有効になる日付。これはオプションです。

end_date

ユーザー・アカウントが無効になる日付。これはオプションです。

end_dateが指定されている場合は、start_dateも指定する必要があります。

guid

ユーザーのGUID。これは外部ユーザーに対してのみ有効です。

external_source

このユーザーのソースであるシステムの名前。これはオプションです。

description

ユーザー・アカウントの説明。これはオプションです。

acl

Real Application Securityセッション権限。デフォルト値はプリンシパルにACLが設定されないことを意味するNULLです。ACLはSYSスキーマに常駐している必要があり、そうでない場合はエラーがスローされます。

プリンシパルに設定するReal Application Securityセッション権限は、Real Application Securityオブジェクトの命名規則に従っている必要があり、プロシージャのコール前に存在している必要があります。

セッション権限は、セッション操作に関与しているReal Application Securityアプリケーション・ユーザーに設定されているACLに従って強制されます。たとえば、セッションの作成操作の場合、コール元でReal Application Securityアプリケーション・ユーザーに設定されているACLにCREATE SESSION権限が指定されている必要があります。

プリンシパル固有のACL権限付与は、既存のシステムレベル・セッション権限付与より優先されます。権限チェックは、最初にプリンシパルに関連するACLで実行され、成功した場合は操作が続行します。権限チェックで拒否された場合、操作は権限不足エラーで失敗します。付与にも拒否にもならなかった場合、SESSION_SCセキュリティ・クラスに関連付けられたシステムACLでのチェックが実行され、この権限チェックの結果に基づいて操作が成功または失敗します。

次の例は、ユーザーを作成します。

BEGIN
 SYS.XS_PRINCIPAL.CREATE_USER('TEST1');
END;

次の例は、ユーザーを作成し、ユーザーのスキーマおよび開始日も指定します。

DECLARE 
st_date TIMESTAMP WITH TIME ZONE;
BEGIN
  st_date := TO_TIMESTAMP_TZ('2010-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
  TZH:TZM');
  SYS.XS_PRINCIPAL.CREATE_USER(name=>'u2',
                               schema=>'scott',
                               start_date=>st_date);
END;

CREATE_ROLEプロシージャ

CREATE_ROLEプロシージャは、新規アプリケーション・ロールを作成します。標準アプリケーション・ロールを作成するにはCREATE ROLEシステム権限が必要です。

DBA_XS_ROLESデータ・ディクショナリ・ビューを使用して、アプリケーション・ロールのリストを開始日や終了日などの属性とともに取得できます

構文

CREATE_ROLE (   name            IN VARCHAR2,
  enabled         IN BOOLEAN  := FALSE,
  start_date      IN TIMESTAMP WITH TIME ZONE := NULL,
  end_date        IN TIMESTAMP WITH TIME ZONE := NULL,
  guid            IN RAW      := NULL,
  external_source IN VARCHAR2 := NULL,
  description     IN VARCHAR2 := NULL); 

パラメータ

パラメータ 説明

name

作成するアプリケーション・ロールの名前。

enabled

作成時にロールを有効にするかどうかを指定します。デフォルト値はFALSEで、ロールが作成時に無効になることを意味します。

start_date

ロールが有効になる日付。これはオプションです。

end_date

ロールが無効になる日付。これはオプションです。

end_dateが指定されている場合は、start_dateも指定する必要があります。

guid

ロールのGUID。これは外部ロールに対してのみ適用されます。

external_source

このロールのソースであるシステムの名前。これはオプションです。

description

ロールの説明(オプション)。

次の例は、hrmgrというアプリケーション・ロールを作成します。

BEGIN
  SYS.XS_PRINCIPAL.CREATE_ROLE('hrmgr');
END;

次の例は、hrrepというアプリケーション・ロールを作成します。また、ロールを有効にし、現在の日付をロールの開始日として割り当てます。

DECLARE 
  st_date TIMESTAMP WITH TIME ZONE;
BEGIN
  st_date := SYSTIMESTAMP;
  SYS.XS_PRINCIPAL.CREATE_ROLE(name=>'hrrep',
                               enabled=>true,
                               start_date=>st_date);
END;

CREATE_DYNAMIC_ROLEプロシージャ

CREATE_DYNAMIC_ROLEプロシージャは、新しい動的アプリケーション・ロールを作成します。動的アプリケーション・ロールは、アプリケーションで定義された基準に基づいて、アプリケーションによって動的に有効または無効にできます。動的アプリケーション・ロールを作成するにはCREATE ROLEシステム権限が必要です。

DBA_XS_DYNAMIC_ROLESデータ・ディクショナリ・ビューを使用して、すべての動的アプリケーション・ロールのリストを期間などの属性とともに取得できます。

構文

CREATE_DYNAMIC_ROLE (
  name        IN VARCHAR2,
  duration    IN PLS_INTEGER := NULL, 
  scope       IN PLS_INTEGER := XS_PRINCIPAL.SESSION_SCOPE,
  description IN VARCHAR2    := NULL,
  acl         IN VARCHAR2    := NULL);

パラメータ

パラメータ 説明

name

作成する動的アプリケーション・ロールの名前。

duration

動的アプリケーション・ロールの期間(分単位)。これはオプションの属性です。

scope

動的アプリケーション・ロールのスコープ属性。可能な値はSESSION_SCOPEおよびREQUEST_SCOPEです。デフォルト値はXS_PRINCIPAL.SESSION_SCOPEです。

description

動的アプリケーション・ロールのオプションの説明。

acl

Real Application Securityセッション権限。デフォルト値はプリンシパルにACLが設定されないことを意味するNULLです。ACLはSYSスキーマに常駐している必要があり、そうでない場合はエラーがスローされます。

プリンシパルに設定するReal Application Securityセッション権限は、Real Application Securityオブジェクトの命名規則に従っている必要があり、プロシージャのコール前に存在している必要があります。

セッション権限は、セッション操作に関与しているReal Application Security動的ロールに設定されているACLに従って強制されます。たとえば、動的ロールでの連結操作の場合、動的ロールに設定されるACLにENABLE_DYNAMIC_ROLE権限が必要です。

プリンシパル固有のACL権限付与は、既存のシステムレベル・セッション権限付与より優先されます。権限チェックは、最初にプリンシパルに関連するACLで実行され、成功した場合は操作が続行します。権限チェックで拒否された場合、操作は権限不足エラーで失敗します。付与にも拒否にもならなかった場合、SESSION_SCセキュリティ・クラスに関連付けられたシステムACLでのチェックが実行され、この権限チェックの結果に基づいて操作が成功または失敗します。

次の例は、sslroleという動的アプリケーション・ロールを作成します。

BEGIN
  SYS.XS_PRINCIPAL.CREATE_DYNAMIC_ROLE('sslrole');
END;

次の例は、reproleという動的アプリケーション・ロールを作成します。また、ロールの期間を100分として指定し、ロールのリクエスト・スコープを選択します。

BEGIN
  SYS.XS_PRINCIPAL.CREATE_DYNAMIC_ROLE(name=>'reprole',
                                       duration=>100,
                                       scope=>XS_PRINCIPAL.REQUEST_SCOPE);
END;

GRANT_ROLESプロシージャ

GRANT_ROLESプロシージャは、1つ以上のアプリケーション・ロールをアプリケーション・プリンシパルに付与します。アプリケーション・ロールを付与するにはGRANT ANY ROLEシステム権限が必要です。

DBA_XS_ROLE_GRANTSデータ・ディクショナリ・ビューを使用して、すべてのロール付与のリストを開始日や終了日などの詳細とともに取得できます。

構文

GRANT_ROLES (
grantee       IN VARCHAR2,
role          IN VARCHAR2,
start_date    IN TIMESTAMP WITH TIME ZONE:= NULL,
end_date      IN TIMESTAMP WITH TIME ZONE:= NULL,);

GRANT_ROLES (
grantee   IN VARCHAR2,
role_list IN XS$ROLE_GRANT_LIST);

パラメータ

パラメータ 説明

grantee

ロールが付与されるプリンシパルの名前。

role

付与されるロールの名前。

role_list

付与するロールのリスト。

start_date

付与が有効になる日付。これはオプションのパラメータです。

end_date

付与が有効な期間の最終日。これはオプションのパラメータです。

次の例は、開始日と終了日を指定してHRREPロールをユーザーSMAVRISに付与します。

DECLARE 
  st_date TIMESTAMP WITH TIME ZONE;
  end_date TIMESTAMP WITH TIME ZONE;
BEGIN
  st_date := TO_TIMESTAMP_TZ('2010-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
                              TZH:TZM');
  end_date := TO_TIMESTAMP_Tz('2011-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
                               TZH:TZM');
  SYS.XS_PRINCIPAL.GRANT_ROLES('SMAVRIS', 'HRREP', st_date, end_date);
END;

次の例は、HRREPおよびHRMGRロールをユーザーSMAVRISに付与します。

DECLARE 
  rg_list XS$ROLE_GRANT_LIST; 
BEGIN
  rg_list := XS$ROLE_GRANT_LIST(XS$ROLE_GRANT_TYPE('HRREP'),
                                XS$ROLE_GRANT_TYPE('HRMGR'));
 
  SYS.XS_PRINCIPAL.GRANT_ROLES('SMAVRIS', rg_list);
END;

次の例では、ロールXSCONNECTをユーザーXSUSERに付与する方法を示します。この権限付与によって、ユーザーXSUSERはパスワードを使用してデータベースに接続できるようになります。

EXEC SYS.XS_PRINCIPAL.GRANT_ROLES('XSUSER', 'XSCONNECT');

REVOKE_ROLESプロシージャ

REVOKE_ROLESプロシージャは、指定された権限受領者から指定したロールを取り消します。ロールが指定されていない場合は、権限受領者からすべてのアプリケーション・ロールが取り消されます。ロールを付与または取り消すにはGRANT ANY ROLEシステム権限が必要です。

DBA_XS_ROLE_GRANTSデータ・ディクショナリ・ビューを使用して、すべてのロール付与のリストを開始日や終了日などの詳細とともに取得できます。

構文

REVOKE_ROLES (
  grantee   IN VARCHAR2,
  role      IN VARCHAR2);

REVOKE_ROLES (
  grantee   IN VARCHAR2,
  role_list IN XS$NAME_LIST); 

REVOKE_ROLES (
  grantee IN VARCHAR2);

パラメータ

パラメータ 説明

grantee

ロールが取り消されるアプリケーション・プリンシパル。

role

取り消すアプリケーション・ロールの名前。

role_list

取り消すロール名のリスト。

次の例は、ユーザーSMAVRISからHRREPロールを取り消します。

BEGIN
  XS_PRINCIPAL.REVOKE_ROLES('SMAVRIS','HRREP');
END;

次の例は、ユーザーSMAVRISからHRREPおよびHRMGRロールを取り消します。

DECLARE
  role_list XS$NAME_LIST; 
BEGIN
  role_list := XS$NAME_LIST('HRREP','HRMGR');
  SYS.XS_PRINCIPAL.REVOKE_ROLES('SMAVRIS', role_list);
END;

次の例は、付与されているすべてのロールをユーザーSMAVRISから取り消します。

BEGIN
  SYS.XS_PRINCIPAL.REVOKE_ROLES('SMAVRIS');
END;

ADD_PROXY_USERプロシージャ

ADD_PROXY_USERは、指定されたアプリケーション・ユーザーのターゲット・ユーザーを追加します。これにより、アプリケーション・ユーザーがターゲット・ユーザーのプロキシとして機能できます。このプロシージャには2つのシグネチャがあります。最初のシグネチャでは、target_rolesパラメータを使用して、プロキシ・ユーザーに割り当てるターゲット・ユーザーのロールのサブセットを指定できます。2番目のシグネチャでは、target_rolesパラメータがないため、ターゲット・ユーザーのすべてのロールがプロキシ・ユーザーに割り当てられます。

プロキシ・ユーザーを追加または削除するにはALTER USERシステム権限が必要です。

構文

ADD_PROXY_USER (
  target_user  IN VARCHAR2,
  proxy_user   IN VARCHAR2,
  target_roles IN XS$NAME_LIST);

ADD_PROXY_USER (
  target_user  IN VARCHAR2,
  proxy_user   IN VARCHAR2);

パラメータ

パラメータ 説明

target_user

プロキシとして機能できる対象のターゲット・アプリケーション・ユーザーの名前。

proxy_user

プロキシ・アプリケーション・ユーザーの名前。

target_roles

プロキシ・ユーザーがプロキシとして機能できるターゲット・ユーザー・ロールのリスト。このパラメータは必須です。明示的なNULL値を渡した場合は、ターゲット・ユーザーのロールなしでプロキシ・ユーザーを構成します。それ以外の場合、proxy_userパラメータではtarget_rolesパラメータに指定する値が使用されます。

次の例は、ユーザーDJONESがターゲット・ユーザーSMAVRISのプロキシとして機能できるようにします。DJONESに付与されるターゲット・ロールはHRREPおよびHRMGRです。

DECLARE
  pxy_roles XS$NAME_LIST; 
BEGIN
  pxy_roles := XS$NAME_LIST('HRREP','HRMGR');
  SYS.XS_PRINCIPAL.ADD_PROXY_USER('SMAVRIS','DJONES', pxy_roles);
END;

次の例は、ターゲット・ロールに対して明示的なNULL値を渡します。つまり、ターゲット・ユーザー'SMAVRIS'のロールをプロキシ・ユーザー'DJONES'に割り当てません。

BEGIN
  SYS.XS_PRINCIPAL.ADD_PROXY_USER('SMAVRIS','DJONES', NULL);
END;

次の例は、ターゲット・ユーザー'SMAVRIS'のすべてのロールをプロキシ・ユーザー'DJONES'に割り当てます。

BEGIN
  SYS.XS_PRINCIPAL.ADD_PROXY_USER('SMAVRIS','DJONES');
END;

REMOVE_PROXY_USERSプロシージャ

REMOVE_PROXY_USERSプロシージャは、ターゲット・アプリケーション・ユーザーの1つまたはすべてのプロキシ・ユーザーの関連付けを解除します。関連付けられたプロキシ・ロールは、プロキシ・ユーザーに対して自動的に削除されます。

プロキシ・ユーザーを追加または削除するにはALTER USERシステム権限が必要です。

構文

REMOVE_PROXY_USERS (
  target_user  IN VARCHAR2); 

REMOVE_PROXY_USERS (
  target_user IN VARCHAR2,
  proxy_user  IN VARCHAR2);

パラメータ

パラメータ 説明

target_user

プロキシの関連付けが解除されるターゲット・アプリケーション・ユーザー。

proxy_user

ターゲット・ユーザーから関連付けを解除する必要のあるプロキシ・アプリケーション・ユーザー。

次の例は、ターゲット・ユーザーSMAVRISのすべてのプロキシ・ユーザーを削除します。

BEGIN
  SYS.XS_PRINCIPAL.REMOVE_PROXY_USERS('SMAVRIS');
END;

次の例は、プロキシ・ユーザーDJONESをターゲット・ユーザーSMAVRISから関連付け解除します。

BEGIN
  SYS.XS_PRINCIPAL.REMOVE_PROXY_USERS('SMAVRIS','DJONES');
END;

ADD_PROXY_TO_DBUSER

ADD_PROXY_TO_DBUSERは、指定されたターゲット・プロキシ・アプリケーション・ユーザーを指定されたデータベース・ユーザーに追加します。アプリケーション・ユーザーは直接ログオン・ユーザーである必要があります。これにより、アプリケーション・ユーザーがターゲット・データベース・ユーザーのプロキシとして機能できます。デフォルトでは、ターゲット・ユーザーに割り当てられているすべてのロールをプロキシ・ユーザーが使用できます。Oracleデータベースと同様に、ターゲット・データベース・ユーザーのデフォルト・ロールは接続後に有効になります。ターゲット・データベース・ユーザーに割り当てられているその他のロールはSET ROLE文を使用して設定できます。

プロキシ・ユーザーをデータベース・ユーザーに追加するにはALTER USERシステム権限が必要です。

構文

ADD_PROXY_TO_DBUSER (
  database_user  IN VARCHAR2,
  proxy_user     IN VARCHAR2,
  is_external    IN BOOLEAN := FALSE);

パラメータ

パラメータ 説明

database_user

プロキシとして機能できる対象のターゲット・データベース・ユーザーの名前。

proxy_user

プロキシ・アプリケーション・ユーザーの名前。

is_external

ユーザーが外部ユーザーであるか標準のReal Application Securityアプリケーション・ユーザーであるかを指定するパラメータ。

次の例は、アプリケーション・ユーザーDJONESがターゲット・データベース・ユーザーSMAVRISのプロキシとして機能できるようにします。

BEGIN
  SYS.XS_PRINCIPAL.ADD_PROXY_TO_DBUSER('SMAVRIS','DJONES', TRUE);
END;

REMOVE_PROXY_FROM_DBUSERプロシージャ

REMOVE_PROXY_FROM_DBUSERプロシージャは、データベース・ユーザーからプロキシ・アプリケーション・ユーザーを関連付け解除します。関連付けられたプロキシ・ロールは、アプリケーション・ユーザーから自動的に削除されます。

プロキシ・ユーザーをデータベース・ユーザーから削除するにはALTER USERシステム権限が必要です。

構文

REMOVE_PROXY_FROM_DBUSER (
  database_user IN VARCHAR2,
  proxy_user    IN VARCHAR2);

パラメータ

パラメータ 説明

database_user

プロキシの関連付けが解除されるターゲット・データベース・ユーザー。

proxy_user

ターゲット・データベース・ユーザーから関連付けを解除する必要のあるプロキシ・アプリケーション・ユーザー。

次の例は、プロキシ・ユーザーDJONESをターゲット・データベース・ユーザーSMAVRISから関連付け解除します。

BEGIN
  SYS.XS_PRINCIPAL.REMOVE_PROXY_FROM_DBUSER('SMAVRIS','DJONES');
END;

SET_EFFECTIVE_DATESプロシージャ

SET_EFFECTIVE_DATESプロシージャは、アプリケーション・ユーザーまたはロールの有効日を設定または変更します。start_dateおよびend_dateの値がデフォルトでNULLとして指定されている場合、そのアプリケーション・ユーザーは現在有効ではないため、この特定のアプリケーション・ユーザーのセッションを作成することはできません。

アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。アプリケーション・ロールに対してこのプロシージャを実行するにはALTER ANY ROLEシステム権限が必要です。

構文

SET_EFFECTIVE_DATES (
  principal         IN VARCHAR2,
  start_date        IN TIMESTAMP WITH TIME ZONE:= NULL,
  end_date          IN TIMESTAMP WITH TIME ZONE:= NULL);

パラメータ

パラメータ 説明

principal

有効日を設定するアプリケーション・ユーザーまたはロールの名前。

start_date

有効期間の開始日。

end_date

有効期間の終了日。

次の例は、ユーザーDJONESの有効日を設定します。

DECLARE 
  st_date TIMESTAMP WITH TIME ZONE;
  end_date TIMESTAMP WITH TIME ZONE;
BEGIN
  st_date := TO_TIMESTAMP_TZ('2010-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
                              TZH:TZM');
  end_date := TO_TIMESTAMP_Tz('2011-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
                               TZH:TZM');
  SYS.XS_PRINCIPAL.SET_EFFECTIVE_DATES(principal=>'DJONES', 
                                       start_date=>st_date,end_date=>end_date);
END;

SET_DYNAMIC_ROLE_DURATIONプロシージャ

SET_DYNAMIC_ROLE_DURATIONプロシージャは、動的アプリケーション・ロールの期間を設定または変更します。期間は分で指定します。

ロールを変更するにはALTER ANY ROLEシステム権限が必要です。

構文

SET_DYNAMIC_ROLE_DURATION (
  role      IN VARCHAR2,
  duration  IN PLS_INTEGER);

パラメータ

パラメータ 説明

role

動的アプリケーション・ロールの名前。

duration

動的アプリケーション・ロールの期間(分単位)。この値を負の値に設定することはできません。

次の例は、reprole動的アプリケーション・ロールの期間を60分に設定します。

BEGIN
  SYS.XS_PRINCIPAL.SET_DYNAMIC_ROLE_DURATION('reprole',60);
END;

SET_DYNAMIC_ROLE_SCOPEプロシージャ

SET_DYNAMIC_ROLE_SCOPEプロシージャは、動的アプリケーション・ロールのスコープを設定または変更します。セッション(SESSION_SCOPE)またはリクエスト(REQUEST_SCOPE)スコープを選択できます。

ロールを変更するにはALTER ANY ROLEシステム権限が必要です。

構文

SET_DYNAMIC_ROLE_SCOPE (
  role      IN VARCHAR2,
  scope     IN PLS_INTEGER);

パラメータ

パラメータ 説明

role

動的アプリケーション・ロールの名前。

scope

設定する動的アプリケーション・ロールのスコープ。使用できる値はXS_PRINCIPAL.REQUEST_SCOPEおよびXS_PRINCIPAL.SESSION_SCOPEです。

次の例は、reprole動的アプリケーション・ロールのスコープをリクエスト・スコープに設定します。

begin
  SYS.XS_PRINCIPAL.SET_DYNAMIC_ROLE_SCOPE('reprole',XS_PRINCIPAL.REQUEST_SCOPE);
end;

ENABLE_BY_DEFAULTプロシージャ

ENABLE_BY_DEFAULTプロシージャは、標準アプリケーション・ロールを有効または無効にします。

有効になっている場合、アプリケーション・ロールは付与先のプリンシパルに対して自動的に有効になります。無効になっている場合、アプリケーション・ロールに関連付けられている権限は、アプリケーション・ロールがプリンシパルに付与されている場合でも有効になりません。

アプリケーション・ロールを変更するにはALTER ANY ROLEシステム権限が必要です。

構文

ENABLE_BY_DEFAULT ( 
  role       IN VARCHAR2,
  enabled    IN BOOLEAN := TRUE);

パラメータ

パラメータ 説明

role

標準アプリケーション・ロールの名前。

enabled

アプリケーション・ロールのenabled属性。これをTRUEに設定すると、アプリケーション・ロールがデフォルトで有効としてマークされます。デフォルト値はTRUEです。

次の例は、HRREPアプリケーション・ロールのenabled属性をTRUEに設定します。

BEGIN
  SYS.XS_PRINCIPAL.ENABLE_BY_DEFAULT('HRREP',TRUE);
END;

ENABLE_ROLES_BY_DEFAULTプロシージャ

ENABLE_ROLES_BY_DEFAULTプロシージャは、アプリケーション・ユーザーに直接付与されているすべてのアプリケーション・ロールを有効または無効にします。

アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。

構文

ENABLE_ROLES_BY_DEFAULT (
  user       IN VARCHAR2,
  enabled    IN BOOLEAN := TRUE);

パラメータ

パラメータ 説明

user

アプリケーション・ユーザーの名前。

enabled

アプリケーション・ユーザーに直接付与されているすべてのアプリケーション・ロールのenabled属性。

enabled属性をTRUEに設定すると、アプリケーション・ユーザーに直接付与されているすべてのアプリケーション・ロールが有効になります。デフォルト値はTRUEです。

enabled属性をFALSEに設定すると、アプリケーション・ユーザーに直接付与されているすべてのアプリケーション・ロールが無効になります。

次の例は、アプリケーション・ユーザーSMAVRISに直接付与されているすべてのロールを有効にします。

BEGIN
  SYS.XS_PRINCIPAL.ENABLE_ROLES_BY_DEFAULT('SMAVRIS',TRUE);
END;

SET_USER_SCHEMAプロシージャ

SET_USER_SCHEMAプロシージャは、アプリケーション・ユーザーのデータベース・スキーマを設定します。

アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。

構文

SET_USER_SCHEMA (
  user        IN VARCHAR2,
  schema      IN VARCHAR2);

パラメータ

パラメータ 説明

user

アプリケーション・ユーザーの名前。

schema

ユーザーに関連付けるデータベース・スキーマの名前。これをNULLに設定すると、すべてのスキーマ関連付けが削除されます。

次の例は、HRスキーマをユーザーDJONESに関連付けます。

BEGIN
  SYS.XS_PRINCIPAL.SET_USER_SCHEMA('DJONES','HR');
END;

SET_GUIDプロシージャ

SET_GUIDプロシージャは、プリンシパルのGUIDを設定します。プリンシパルは外部ユーザーまたはロールである必要があり、現在のGUIDはNULLである必要があります。

アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。アプリケーション・ロールに対してこのプロシージャを実行するにはALTER ANY ROLEシステム権限が必要です。

注意:

SET_GUIDが機能するためにはユーザーのexternal_source属性が設定されている必要があります。

構文

SET_GUID (
  principal IN VARCHAR2,
  guid      IN RAW);

パラメータ

パラメータ 説明

principal

外部ユーザーまたはロールの名前。

guid

外部ユーザーまたはロールのGUID。

次の例は、ユーザーAlexのGUIDを設定します。

BEGIN
  SYS.XS_PRINCIPAL.SET_GUID('ALEX','7b6cb3a98f8a4e20ac31a37419cc7fa3');
END;

SET_ACLプロシージャ

目的

SET_ACLプロシージャは、指定されたアプリケーション・ユーザーまたは動的ロールにACLを設定します。

このプロシージャは、コール元が最小権限としてReal Application SecurityのPROVISION権限を持っていることを必要とします。プリンシパルがアプリケーション・ユーザーである場合、データベースのALTER USER権限を持つユーザーもまた、このプロシージャをコールできます。プリンシパルが動的ロールである場合、データベース・ロールのALTER ROLE権限を持つユーザーもまた、このプロシージャをコールできます。

構文

SET_ACL(principal IN VARCHAR2, 
        acl IN VARCHAR2);

パラメータ

パラメータ 説明
principal

ACLが設定されるアプリケーション・ユーザーまたは動的ロール。

acl

Real Application Securityセッション権限。

使用上の注意

ACLはSYSスキーマで作成する必要があります。

アプリケーション・ユーザーまたは動的ロールに設定されたACLは、システム全体のACLをオーバーライドします。

セッション権限は、セッション操作に関与しているReal Application Securityのアプリケーション・ユーザーまたは動的ロールに設定されているACLに従って強制されます。たとえば、セッションの作成操作の場合、コール元でReal Application Securityアプリケーション・ユーザーに設定されているACLにCREATE_SESSION権限が指定されている必要があります。または、動的ロールでの連結操作の場合、動的ロールに設定されているACLにENABLE_DYNAMIC_ROLE権限が指定されている必要があります。

プリンシパル固有のACL権限付与は、既存のシステムレベル・セッション権限付与より優先されます。権限チェックは、最初にプリンシパルに関連するACLで実行され、成功した場合は操作が続行します。権限チェックで拒否された場合、操作は権限不足エラーで失敗します。付与にも拒否にもならなかった場合、SESSION_SCセキュリティ・クラスに関連付けられたシステムACLでのチェックが実行され、この権限チェックの結果に基づいて操作が成功または失敗します。

例11-1 アプリケーション・ユーザーTEST1へのACL権限CREATE_SESSIONの設定

次の例では、ACL権限CREATE_SESSIONを指定したアプリケーション・ユーザーtest1に設定します。

BEGIN
  SYS.XS_PRINCIPAL.SET_ACL('test1','CREATE_SESSION');
END;

SET_PROFILEプロシージャ

SET_PROFILEプロシージャは、アプリケーション・ユーザーのプロファイルを設定します。プロファイルは、Real Application Securityアプリケーション・ユーザーのデータベース使用率やデータベース・インスタンス・リソースを制限する、一連のリソース制限およびパスワード・パラメータです。アプリケーション・ユーザーとプロファイルは両方とも、既存のエンティティである必要があります。

このプロシージャを実行するユーザーは、ALTER_USER権限を持っている必要があります。

アプリケーション・ユーザーに割り当てられているプロファイルがカスケード・オプションを使用して削除されると、そのユーザーのデフォルト・プロファイルが自動的に有効になります。

構文

SET_PROFILE (
  user     IN VARCHAR2,
  profile  IN VARCHAR2);

パラメータ

パラメータ 説明

user

Real Application Securityアプリケーション・ユーザーの名前。既存のアプリケーション・ユーザーである必要があります。

profile

プロファイルの名前。

次の例では、profというプロファイルを作成し、profというプロファイルをxsuserというアプリケーション・ユーザーに設定します。

CREATE PROFILE prof LIMIT PASSWORD_REUSE_TIME 1/1440 PASSWORD_REUSE_MAX 3 PASSWORD_VERIFY_FUNCTION Verify_Pass;

BEGIN
  SYS.XS_PRINCIPAL.SET_PROFILE('xsuser','prof');
END;

SET_USER_STATUSプロシージャ

SET_USER_STATUSプロシージャは、アプリケーション・ユーザー・アカウントのステータスを設定または変更します。

アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER_USER権限が必要です。

構文

SET_USER_STATUS (
  user        IN VARCHAR2,
  status      IN PLS_INTEGER);

パラメータ

パラメータ 説明

user

ステータスを設定または更新する必要のあるユーザー・アカウントの名前。

status

Real Application Securityユーザー・アカウントの新規ステータス。ステータスの値は複数のクラスに分けることができます。

  • ACTIVEおよびINACTIVE - これら2つのアカウント・ステータス値は、ユーザー・アカウントがアプリケーション・セッションを作成する権限およびアプリケーション・セッションに連結する権限に影響します。

    ACTIVEに設定されている場合、アプリケーション・ユーザーは直接ログイン・アカウントを使用して、有効なパスワードでデータベースにログインできます。アカウントに必要なアプリケーション権限がある場合、アプリケーション・ユーザーはアプリケーション・セッションを作成したりアプリケーション・セッションに連結できます。

    INACTIVEに設定されている場合、アプリケーション・ユーザーは有効なパスワードであっても直接ログイン・アカウントを使用してデータベースにログインすることはできず、アプリケーション・セッションを作成したりアプリケーション・セッションに連結することはできません。

  • UNLOCKLOCKEDまたはEXPIRED - これらのステータス値は、直接ログインReal Application Securityアプリケーション・ユーザーについてのみ確認されます。

    UNLOCKに設定されている場合、アカウントがLOCKEDの際にアプリケーション・ユーザー・アカウントが開かれ、アプリケーション・ユーザーは直接ログイン・アカウントを使用して有効なパスワードでデータベースにログインできるようになります。

    LOCKEDに設定されている場合、アプリケーション・ユーザーのアカウントはロックされます。有効なパスワードであっても、直接ログイン・アカウントを使用したユーザー接続は許可されません。アカウントがロックされている場合、ユーザー・アカウントがACTIVEであれば、直接ログインは実行できませんが、ユーザーはアプリケーション・セッションを作成したりアプリケーション・セッションに連結することができます。

    EXPIREDに設定されている場合、アプリケーション・ユーザーのアカウントは期限切れになります。有効なパスワードでの直接ログイン・アカウントを使用したユーザー接続は許可されますが、ログオン時にパスワードを変更する必要があります。

  • PASSWORDEXPIRED (非推奨) - このステータス値はリリース1 (12.1.0.2)以降では非推奨となっています。

パラメータstatusに他の値を渡そうとすると、ORA-46152: XSセキュリティ - 無効なユーザー・ステータスが指定されましたエラーが返されます。

次の例は、ユーザーDJONESのユーザー・ステータスをLOCKEDに設定します。

BEGIN
  SYS.XS_PRINCIPAL.SET_USER_STATUS('DJONES',XS_PRINCIPAL.LOCKED);
END;

SET_PASSWORDプロシージャ

SET_PASSWORDプロシージャは、アプリケーション・ユーザー・アカウントのパスワードを設定または変更します。SET_PASSWORDプロシージャを使用すると、パスワードおよびtypeパラメータに基づいて検証機能が作成され、検証機能とtypeパラメータの値がディクショナリ表に挿入されます。

直接ログインReal Application Securityユーザーは、oldpassパラメータを使用して値を指定することで、自分のパスワードを変更できます。旧パスワードの値が間違っている場合、試行するたびにログイン失敗回数が増加し、ORA-28008: 旧パスワードが正しくありませんエラーが返されます。正しい旧パスワードを指定するまで、新規パスワードは設定されません。

アプリケーション・ユーザーに対してこのプロシージャを実行するには、または他のReal Application Securityユーザーのパスワードを変更するには、ALTER_USER権限が必要です。

外部IDストアから同期されたネイティブのReal Application Securityユーザーは、自分のパスワードを変更できません。これらのユーザーは、元のIDストアで自分のパスワードを変更する必要があります。たとえば、Oracle Internet Directory 11gリリース1 (11.1.1)が外部ストアの場合、エンドユーザー・セルフサービスには、Oracle Identity Managerが提供するOracle Identity Self Serviceインタフェースを使用してパスワードを管理してください。詳細は、『Fusion Middleware Oracle Identity Managerでのセルフ・サービス・タスクの実行』を参照してください。ネイティブReal Application Securityユーザーが外部IDストアと同期されているかを判断するには、セキュリティ管理者に連絡してください。同期されている場合には、ディレクトリ・サーバー環境にパスワード管理がエンドユーザー・セルフサービス用に提供されているかを確認してください。

ロジカル・スタンバイ・データベースでは、SET_PASSWORD操作とSQL*Plus PASSWORDコマンドは両方ともブロックされます。

構文

SET_PASSWORD (
  user      IN VARCHAR2,
  password  IN VARCHAR2,
  type      IN PLS_INTEGER := XS_SHA512,
  opassword IN VARCHAR2 :=NULL);

パラメータ

パラメータ 説明

user

パスワードを設定するアプリケーション・ユーザー・アカウントの名前。

password

設定するパスワード。

type

パスワードに使用する検索機能のタイプ。デフォルト値はXS_SHA512です。検証機能タイプは、次のいずれかである必要があります。

XS_SHA512, XS_SALTED_SHA1

opassword

旧パスワード。Real Application Securityユーザーが自分のパスワードを変更する場合、このパラメータが必要です。指定されていない場合、ユーザーは自分のパスワードを変更するのに必要な権限を持っている必要があります。

次の例は、アプリケーション・ユーザーSMAVRISのパスワードを設定します。パスワードのXS_SHA512検証機能タイプも指定します。

BEGIN
  SYS.XS_PRINCIPAL.SET_PASSWORD('SMAVRIS','2Hrd2Guess',XS_PRINCIPAL.XS_SHA512);
END;

SET_VERIFIERプロシージャ

SET_VERIFIERプロシージャは、アプリケーション・ユーザー・アカウントの検証機能を設定または変更します。SET_VERIFIERプロシージャを使用すると、検証機能とtypeパラメータの値がディクショナリ表XS$VERIFIERSに挿入されます。これにより、管理者はパスワードではなく検証機能の知識があればユーザーをReal Application Securityに移行できます。

アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER_USER権限が必要です。

ロジカル・スタンバイ・データベースでは、SET_VERIFIER操作とSQL*Plus PASSWORDコマンドは両方ともブロックされます。

構文

set_verifier ( 
  user      IN VARCHAR2,
  verifier  IN VARCHAR2,
  type      IN PLS_INTEGER := XS_SHA512);

パラメータ

パラメータ 説明

user

検証機能の設定対象のアプリケーション・ユーザーの名前。

verifier

検証機能として使用する文字列。

type

使用する検索機能のタイプ。これは、次のいずれかです。

XS_SHA512, XS_SALTED_SHA1

LWUSER3という名前のユーザーが作成され、パスワードが検証機能タイプXS_SALTED_SHA1で設定されているとします。

次に、DBA_XS_OBJECTSビューを問い合せて、ユーザーLWUSER3のID値を取得します。

SQL> column name format A10;
SQL> column owner format A6;
SQL> select NAME, OWNER, ID, TYPE, STATUS from  DBA_XS_OBJECTS where NAME = 'LWUSER3';

NAME       OWNER          ID TYPE               STATUS
---------- ------ ---------- ------------------ --------
LWUSER3    SYS    2147493770 PRINCIPAL          VALID

次に、IDが2147493770であるユーザーLWUSER3XS$VERIFIERSディクショナリ表を問い合せます。

SQL> column user# format 9999999999;
SQL> column type# format 99;
SQL> column verifier format A62;
SQL> select USER#, VERIFIER, TYPE# from XS$VERIFIERS where USER# = '2147493770';

      USER# VERIFIER                                                       TYPE#
----------- -------------------------------------------------------------- -----
 2147493770 S:14DC0F5ABB72FC869549B1F845C548E0BEF7B863A116DB24DFAE22F0501E     1

検証機能の値には、タイプが値"S"で含まれ、その後にコロン(:)が続き、XS_SALTED_SHA1の検証機能タイプであることを示します。これはタイプ#1であることも示されます。

"S:"を含む検証値全体を使用して、ユーザーLWUSER3の検証を設定します。

BEGIN
SYS.XS_PRINCIPAL.SET_VERIFIER('lwuser3','S:14DC0F5ABB72FC869549B1F845C548E0BEF7B863A116DB24DFAE22F0501E', 
XS_PRINCIPAL.XS_SALTED_SHA1);
END;
/  2    3    4    5

PL/SQL procedure successfully completed.

この手順を正常に完了するには、検証の値とタイプの両方が、検証が設定されているユーザーのXS$VERIFIERSディクショナリ表のVERIFIER列の情報と一致している必要があります。アプリケーション・ユーザーのパスワードを変更すると、検証機能タイプを変更するオプションで自動的に検証値が変更されます。

前の例では、検証をまったく同じ値に設定して、含まれる手順を表示します。検証値が設定した検証機能タイプと一致するかぎり、XS$VERIFIERSディクショナリ表を問い合せたときにアプリケーション・ユーザーに表示される任意の検証値にパスワードの検証を設定するオプションがあります。たとえば、検証値と検証機能タイプをXS_SHA512に変更する場合は、次の手順を実行します。

SQL> BEGIN
SYS.XS_PRINCIPAL.SET_VERIFIER('lwuser3','T:9BA95FEF2C2630A2BAACF2E7C5E41B0D50CDC7B0B6
0C88AD4FE81F8155D002F99EEAF9D95477E4749870C67FDE870E154ED17809C359777F979E269010823FB
981B2A998915EB1439FE3C6C1542A239C', 
XS_PRINCIPAL.XS_SHA512);
END;
/  2    3    4

PL/SQL procedure successfully completed.

これは、「直接アプリケーション・ユーザー・アカウントのためのパスワード検証の設定」で示しているアプリケーション・ユーザーLWUSER1に設定された検証値と検証機能タイプと同じであることに注意してください。

SET_DESCRIPTIONプロシージャ

SET_DESCRIPTIONプロシージャを使用して、アプリケーション・プリンシパルの説明を設定します。

アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。アプリケーション・ロールに対してこのプロシージャを実行するにはALTER ANY ROLEシステム権限が必要です。

構文

SET_DESCRIPTION (  principal   IN VARCHAR2,  description IN VARCHAR2);

パラメータ

パラメータ 説明

principal

説明を設定するプリンシパルの名前。

description

プリンシパルに関する説明文字列。

次の例は、アプリケーション・ロールHRREPの説明を設定します。

BEGIN
  SYS.XS_PRINCIPAL.SET_DESCRIPTION('HRREP','HR Representative role');
END;

DELETE_PRINCIPALプロシージャ

DELETE_PRINCIPALプロシージャは、アプリケーション・ユーザーまたはアプリケーション・ロールを削除します。

アプリケーション・ユーザーに対してこのプロシージャを実行するにはDROP USERシステム権限が必要です。アプリケーション・ロールに対してこのプロシージャを実行するにはDROP ANY ROLEシステム権限が必要です。

構文

delete_principal (
  principal     IN VARCHAR2,
  delete_option IN PLS_INTEGER:=XS_ADMIN_UTIL.DEFAULT_OPTION);

パラメータ

パラメータ 説明

principal

削除するアプリケーション・ユーザーまたはアプリケーション・ロールの名前。

delete_option

使用する削除オプション。次のオプションを使用できます。

  • DEFAULT_OPTION:

    デフォルト・オプションでは、他で参照されていない場合にのみプリンシパルを削除できます。プリンシパルを参照する他のエンティティがある場合は、プリンシパルを削除できません。

    たとえば、プリンシパルに付与されたアプリケーション・ロールを削除しようとした場合は、削除操作が失敗します。

  • CASCADE_OPTION:

    カスケード・オプションは、アプリケーション・ユーザーまたはアプリケーション・ロールをそれに対する参照とともに削除します。アプリケーション・ユーザーまたはアプリケーション・ロールを削除するユーザーには、これらの参照を削除する権限も必要です。

  • ALLOW_INCONSISTENCIES_OPTION:

    不整合の許可オプションでは、他のエンティティからエンティティへの遅延バインド参照がある場合でもそのエンティティを削除できます。エンティティが前の依存性の一部である場合は、削除が失敗し、エラーが生成されます。

次の例は、DEFAULT_OPTIONを使用してユーザーSMAVRISを削除します。

BEGIN
  SYS.XS_PRINCIPAL.DELETE_PRINCIPAL('SMAVRIS');
END;