167 DBMS_STREAMS_AUTH

DBMS_STREAMS_AUTHパッケージは、Oracle Streamsパッケージ・セットの1つであり、Oracle Streams管理者に権限を付与し、Oracle Streams管理者から権限を取り消すためのサブプログラムを提供しています。

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

167.1 DBMS_STREAMS_AUTHの概要

このパッケージは、Oracle Streams管理者への権限付与およびOracle Streams管理者からの権限取消しを行うサブプログラムを提供します。

参照:

このパッケージおよびOracle Streams管理者の詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

167.2 DBMS_STREAMS_AUTHのセキュリティ・モデル

このパッケージのセキュリティは、選択したユーザーまたはロールにこのパッケージのEXECUTE権限を付与するか、選択したユーザーまたはロールにEXECUTE_CATALOG_ROLEを付与することで制御できます。

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、このパッケージを使用するときに、ユーザーの作成、権限の付与および表領域の作成を行うことができる管理ユーザーとして接続します。

167.3 DBMS_STREAMS_AUTHサブプログラムの要約

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

表167-1 DBMS_STREAMS_AUTHパッケージのサブプログラム

サブプログラム 説明

GRANT_ADMIN_PRIVILEGEプロシージャ

ユーザーにOracle Streams管理者になるために必要な権限を直接付与するか、またはこれらの権限を付与するために使用できるスクリプトを生成します。

GRANT_REMOTE_ADMIN_ACCESSプロシージャ

データベース・リンクを使用して、権限受領者に接続することによって、リモートOracle Streams管理者が、ローカル・データベースで管理操作を実行できるようにします。

REVOKE_ADMIN_PRIVILEGEプロシージャ

ユーザーから直接Oracle Streams管理者の権限を取り消すか、これらの権限を取り消すために使用できるスクリプトを生成します。

REVOKE_REMOTE_ADMIN_ACCESSプロシージャ

データベース・リンクを使用して、権限受領者に接続することによって、リモートOracle Streams管理者が管理操作を実行できないようにします。

ノート:

特に指定がないかぎり、すべてのサブプログラムがコミットされます。

167.3.1 GRANT_ADMIN_PRIVILEGEプロシージャ

このプロシージャは、ユーザーにOracle Streams管理者になるために必要な権限を直接付与するか、またはこれらの権限を付与するために使用できるスクリプトを生成します。

構文

DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
   grantee           IN  VARCHAR2,
   grant_privileges  IN  BOOLEAN   DEFAULT TRUE,
   file_name         IN  VARCHAR2  DEFAULT NULL,
   directory_name    IN  VARCHAR2  DEFAULT NULL);

パラメータ

表167-2 GRANT_ADMIN_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

grantee

権限を付与するユーザー。

grant_privileges

TRUEに設定すると、指定した権限受領者に権限が直接付与され、DBA_STREAMS_ADMINISTRATORデータ・ディレクトリ・ビューに、LOCAL_PRIVILEGES列とACCESS_FROM_REMOTE列の両方がYESで指定されて権限受領者が追加されます。このデータ・ディクショナリ・ビューにユーザーのエントリがある場合、他のエントリは作成されず、エラーも発生しません。TRUEに設定すると、権限付与文が失敗した場合、エラーが発生します。

FALSEに設定すると、指定した権限受領者に権限は直接付与されず、権限受領者はDBA_STREAMS_ADMINISTRATORデータ・ディレクトリ・ビューに追加されません。

編集して実行するファイルをこのプロシージャで生成する場合は、FALSEに設定します。FALSEを指定し、file_nameパラメータまたはdirectory_nameパラメータがNULLの場合、エラーが発生します。

file_name

このプロシージャによって生成されるファイルの名前。ファイルには、権限を付与するすべての文が格納されます。指定したファイル名のファイルが、指定したディレクトリ名にすでに存在する場合、既存のファイルに権限付与文が追加されます。

NULLに設定すると、ファイルは生成されません。

directory_name

生成されたファイルを配置するディレクトリ。指定したディレクトリは、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。ディレクトリを指定した場合、このプロシージャを起動するユーザーは、ディレクトリ・オブジェクトに対してWRITE権限を持つ必要があります。

file_nameパラメータがNULLの場合、このパラメータは無視され、プロシージャはファイルを生成しません。

file_nameパラメータがNULL以外の場合にNULLに設定すると、エラーが発生します。

使用上のノート

このプロシージャを実行するユーザーは他のユーザーに権限を付与できる管理ユーザーである必要があります。

特に、このプロシージャは指定したユーザーに次の権限を付与します。

  • RESTRICTED SESSIONシステム権限。

  • 次のパッケージに対するEXECUTE権限。

    • DBMS_APPLY_ADM

    • DBMS_AQ

    • DBMS_AQADM

    • DBMS_AQIN

    • DBMS_AQELM

    • DBMS_CAPTURE_ADM

    • DBMS_FLASHBACK

    • DBMS_LOCK

    • DBMS_PROPAGATION_ADM

    • DBMS_RULE_ADM

    • DBMS_STREAMS_ADM

    • DBMS_STREAMS_ADVISOR_ADM

    • DBMS_STREAMS_HANDLER_ADM

    • DBMS_STREAMS_MESSAGING

    • DBMS_TRANSFORM

  • キューにメッセージをエンキューし、キューからメッセージをデキューする権限。

  • キューを管理する権限。

  • ユーザー固有のスキーマおよびその他のスキーマの次のタイプのオブジェクトを作成、変更、実行する権限。

    • 評価コンテキスト

    • ルール・セット

    • ルール

    さらに、権限受領者は次の権限を他のユーザーに付与できます。

  • SELECT_CATALOG_ROLE

  • Oracle Streamsに関連するデータ・ディクショナリ・ビューに対するSELECTまたはREAD権限。

  • リモートOracle Streams管理者が、権限受領者に接続することによって、データベース・リンクを介して、管理操作を実行できるようにする機能。この機能は、このパッケージのGRANT_REMOTE_ADMIN_ACCESSプロシージャを実行することによって可能になります。

    ノート:

    • このプロシージャによって実行されるすべての文を詳しく参照するには、このプロシージャを使用してスクリプトを生成した後、テキスト・エディタでこのスクリプトを開きます。

    • このプロシージャは、権限受領者にロールを付与しません。

    • このプロシージャは、Oracle Streams環境の構成および管理に必要な権限のみを付与します。必要に応じて、他の権限を権限受領者に付与できます。

    参照:

167.3.2 GRANT_REMOTE_ADMIN_ACCESSプロシージャ

このプロシージャは、リモートOracle Streams管理者が、データベース・リンクを使用して、権限受領者に接続することによって、ローカル・データベースでの管理操作を実行できるようにします。

構文

DBMS_STREAMS_AUTH.GRANT_REMOTE_ADMIN_ACCESS(
   grantee  IN  VARCHAR2);

パラメータ

表167-3 GRANT_REMOTE_ADMIN_ACCESSプロシージャのパラメータ

パラメータ 説明

grantee

リモート・アクセスを許可するユーザー。ACCESS_FROM_REMOTE列がYESに指定されたDBA_STREAMS_ADMINISTRATORデータ・ディレクトリ・ビューに権限受領者が追加されます。このデータ・ディクショナリ・ビューにユーザーのエントリがある場合、別のエントリは作成されません。かわりに、ACCESS_FROM_REMOTE列がYESに更新されます。

使用上のノート

一般に、ダウンストリーム取得プロセスで、ローカル・ソース・データベースで発生した変更を取得した場合に、このプロシージャを実行して、ローカル・ソース・データベースの権限受領者を指定します。ダウンストリーム取得データベースのOracle Streams管理者は、この接続を使用してソース・データベースを管理します。さらに、適用プロセスを実行するデータベースでこのプロシージャを実行し、リモートOracle Streams管理者がローカル・データベースでインスタンス化SCNを設定できるようにします。

ノート:

GRANT_ADMIN_PRIVILEGEプロシージャがこのプロシージャを実行します。

167.3.3 REVOKE_ADMIN_PRIVILEGEプロシージャ

このプロシージャは、ユーザーから直接Oracle Streams管理者の権限を取り消すか、またはこれらの権限を取り消すために使用できるスクリプトを生成します。

構文

DBMS_STREAMS_AUTH.REVOKE_ADMIN_PRIVILEGE(
   grantee            IN  VARCHAR2,  
   revoke_privileges  IN  BOOLEAN   DEFAULT TRUE,
   file_name          IN  VARCHAR2  DEFAULT NULL,
   directory_name     IN  VARCHAR2  DEFAULT NULL);

パラメータ

表167-4 REVOKE_ADMIN_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

grantee

権限を取り消すユーザー。

revoke_privileges

TRUEに設定すると、指定したユーザーから権限が直接取り消され、DBA_STREAMS_ADMINISTRATORデータ・ディクショナリ・ビューからユーザーが削除されます。このデータ・ディクショナリ・ビューにユーザーのレコードがない場合、ビューからレコードは削除されず、エラーも発生しません。TRUEに設定すると、権限取消し文が失敗した場合、エラーが発生します。取り消そうとしている権限がユーザーに付与されていない場合、権限取消し文は失敗します。

FALSEに設定すると、指定したユーザーの権限は直接取り消されず、DBA_STREAMS_ADMINISTRATORデータ・ディクショナリ・ビューからユーザーは削除されません。

編集して実行するファイルをこのプロシージャで生成する場合は、FALSEに設定します。FALSEに設定すると、file_nameまたはdirectory_nameパラメータのいずれかがNULLの場合、エラーは発生しません。

file_name

このプロシージャによって生成されるファイルの名前。ファイルには、権限を取り消すすべての文が格納されます。指定したファイル名のファイルが指定したディレクトリ名にすでに存在する場合、既存のファイルに権限取消し文が追加されます。

NULLに設定すると、ファイルは生成されません。

directory_name

生成されたファイルを配置するディレクトリ。指定したディレクトリは、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。ディレクトリを指定した場合、このプロシージャを起動するユーザーは、ディレクトリ・オブジェクトに対してWRITE権限を持つ必要があります。

file_nameパラメータがNULLの場合、このパラメータは無視され、ファイルは生成されません。

file_nameパラメータがNULL以外の場合にNULLに設定すると、エラーが発生します。

使用上のノート

このプロシージャを実行するユーザーは他のユーザーから権限を取り消せる管理ユーザーである必要があります。特に、このプロシージャは、このパッケージのGRANT_ADMIN_PRIVILEGEプロシージャを実行して付与された権限を取り消します。

ノート:

このプロシージャによって実行されるすべての文を詳しく参照するには、このプロシージャを使用してスクリプトを生成した後、テキスト・エディタでこのスクリプトを開きます。

167.3.4 REVOKE_REMOTE_ADMIN_ACCESSプロシージャ

このプロシージャは、リモートOracle Streams管理者がデータベース・リンクを使用して、権限受領者に接続することによって、管理操作を実行できないようにします。

ノート:

REVOKE_ADMIN_PRIVILEGEプロシージャがこのプロシージャを実行します。

構文

DBMS_STREAMS_AUTH.REVOKE_REMOTE_ADMIN_ACCESS(
   grantee  IN  VARCHAR2);

パラメータ

表167-5 REVOKE_REMOTE_ADMIN_ACCESSプロシージャのパラメータ

パラメータ 説明

grantee

リモートOracle Streams管理者からのアクセスを無効にするユーザー。

権限受領者の列がDBA_STREAMS_ADMINISTRATORデータ・ディクショナリ・ビューに存在する場合、権限受領者のACCESS_FROM_REMOTE列はNOに更新されます。この更新後、LOCAL_PRIVILEGES列およびACCESS_FROM_REMOTE列がともに権限受領者に対してNOである場合は、ビューから権限受領者が削除されます。

DBA_STREAMS_ADMINISTRATORデータ・ディクショナリ・ビューに権限受領者の列が存在しない場合、ビューは更新されず、エラーも発生しません。