DBMS_CLOUD_LINKパッケージ
DBMS_CLOUD_LINKパッケージを使用すると、ユーザーは表またはビューを、クラウド・リンクへの読取り専用アクセス用のデータ・セットとして登録できます。
DBMS_CLOUD_LINK概要
DBMS_CLOUD_LINKパッケージの使用について説明します。
DBMS_CLOUD_LINKパッケージには、表またはビューをクラウド・リンクで使用するデータ・セットとして登録できるREGISTERプロシージャが用意されています。 データ・セットを登録する前に、ADMINユーザーは、DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERプロシージャを使用してデータ・セットを登録する権限をユーザーに付与する必要があります。 ADMINがGRANT_REGISTERを実行した後、ユーザーは、表または所有するビューを登録済のデータ・セットとして登録できます(ユーザーがオブジェクトに対するREAD WITH GRANT OPTION権限を持っている場合は、別のスキーマにオブジェクトを登録できます)。 登録済データ・セットは、REGISTERプロシージャで指定されたスコープに従って、クラウド・リンクに登録済オブジェクトへのリモート・アクセスを提供します。
DBMS_CLOUD_LINK.REGISTER、DBMS_CLOUD_LINK.UPDATE_REGISTRATIONまたはDBMS_CLOUD_LINK.UNREGISTERを実行するには、以前にDBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERを実行したことに加えて、DBMS_CLOUD_LINKパッケージに対する実行権限が必要です。 デフォルトでは、ADMINユーザーおよびPDB_DBAロールを持つスキーマのみが、DBMS_CLOUD_LINKに対する実行権限を持ちます。
DBMS_CLOUD_LINKサブプログラムのサマリー
DBMS_CLOUD_LINKパッケージに含まれるサブプログラムのサマリーを含む表を示します。
| サブプログラム | 説明 |
|---|---|
|
このファンクションは、データ・セットの説明を取得します。 説明は、データ・セットが |
|
|
検索文字列に一致するデータ・セットのネームスペース、名前および説明を取得します。 一致するデータ・セットは、アクセス制限に基づいてユーザーがアクセスできる場合にのみ表示されます。 |
|
|
Autonomous Databaseインスタンスの一意の識別子を返します。 同じインスタンスで |
|
|
指定されたデータセットにアクセスするための許可を指定されたデータベースに付与します。 |
|
|
表またはビューをデータ・セットとして登録します。 |
|
|
指定されたデータセットにアクセスするための指定されたデータベースの承認を取り消します。 |
|
|
登録されているデータセットを削除します。 |
|
|
|
DESCRIBEファンクション
DBMS_CLOUD_LINK.REGISTERに登録されたときに表示されます。
構文
DBMS_CLOUD_LINK.DESCRIBE(
namespace IN VARCHAR2,
name IN VARCHAR2
) return CLOB;
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
登録されたデータセットの名前空間を指定します。 |
|
|
登録されたデータセットの名前を指定します。 |
使用上のノート
このファクションは、DBMS_CLOUD_LINK.REGISTERに登録時に課せられたアクセス制限の対象として使用できます。 データベースからデータ・セットにアクセスできない場合、その説明は取得されません。
FINDプロシージャ
構文
DBMS_CLOUD_LINK.FIND(
search_string IN VARCHAR2,
search_result OUT CLOB
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
検索文字列を指定します。 検索文字列では大文字と小文字は区別されません。 |
|
|
データ・セットのネームスペース、名前および説明の値を含むJSONドキュメント。 |
使用上のノート
検索文字列では大文字と小文字は区別されず、パッケージではOracle Textを使用したフリー・テキスト検索が利用されます。
GET_DATABASE_IDファンクション
DBMS_CLOUD_LINK.GET_DATABASE_IDを繰り返し呼び出すと、常に同じ値が返されます。
リモートで登録されたデータ・セットにアクセスしているデータベースでこのファクションをコールして、データベースIDを取得できます。 これにより、データベースiDを提供できるため、データセットの所有者は、たとえばVPDなど、リモート・サイトからの指定されたデータベースIDに基づいて、よりきめ細かいデータ・アクセス制御を利用できます。
データベースIDは、登録済データ・セットにアクセスする各リモート・データベースを識別し、登録済データ・セットを所有するデータベースの「V$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビュー」内のアクセスを追跡および監査します。
構文
DBMS_CLOUD_LINK.GET_DATABASE_ID()
RETURN VARCHAR2;
使用上のノート
クラウド・リンクは、DBMS_CLOUD_LINK.GET_DATABASE_IDが戻す一意の識別子を使用して、リモートでデータ・セットにアクセスしている個々のデータベースを識別します。 登録済データ・セットを所有するデータベースは、「V$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビュー」のデータ・セット・アクセスの起点のレコードとしてデータベースIDを追跡および監査します。
DBMS_CLOUD_LINK.GET_DATABASE_ID識別子はSYS_CONTEXT値として使用できるため、SYS_CONTEXTを使用して接続しているリモート・セッションに関するこの情報をプログラムで取得し、仮想プライベート・データベース(VPD)を持つ個々のAutonomous Databaseインスタンスによってリモートでアクセスできる特定のデータをさらに制限および制御できます。
戻り値
VARCHAR2のAutonomous Databaseインスタンスの一意の識別子。
GRANT_AUTHORIZATIONプロシージャ
構文
DBMS_CLOUD_LINK.GRANT_AUTHORIZATION(
database_id IN VARCHAR2,
namespace IN VARCHAR2 DEFAULT,
name IN VARCHAR2
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Autonomous DatabaseインスタンスのデータベースIDを指定します。 |
|
|
指定された |
|
|
指定された |
REGISTERプロシージャ
scopeパラメータによる制限に従ってリモートの読取り専用アクセスを許可します。
構文
DBMS_CLOUD_LINK.REGISTER(
schema_name IN VARCHAR2,
schema_object IN VARCHAR2,
namespace IN VARCHAR2,
name IN VARCHAR2,
description IN CLOB,
scope IN CLOB,
auth_required IN BOOLEAN DEFAULT,
data_set_owner IN VARCHAR2 DEFAULT,
offload_targets IN CLOB DEFAULT
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
schema_object |
表またはビューの名前を指定します。 有効なオブジェクトは次のとおりです:
分析ビューやシノニムなどの他のオブジェクトはサポートされていません。 |
namespace |
データセットのネームスペースを指定します。
|
name |
データ・セットの名前を指定します。 |
description |
データを説明するテキストを指定します。 |
scope |
データ・セットへのアクセスを許可されるユーザーを示します。 値は、次の1つ以上で構成されるコンマ区切りのリストです:
スコープ値 |
|
|
データベースがデータセットから読み取るために追加の承認が必要であることを指定します。 考えられるケースは次のとおりです。
|
|
|
データ・セット所有者を指定します。 これは、データ・セットが属するユーザー、またはデータ・セットの更新および保守を担当するユーザーを示します。 たとえば、データ・セットを登録したユーザーの電子メール・アドレスに |
|
|
データ・セットが登録されているAutonomous Databaseから、データ・セットへのアクセスがオフロードされるリフレッシュ可能クローンの1つ以上のAutonomous Database OCIDsを指定します。
たとえば、次の例は、3つの
データ・セット・コンシューマが、 たとえば、1つの明示的な
リフレッシュ可能クローンの使用の詳細は、「リフレッシュ可能クローンをAutonomous Databaseとともに使用」を参照してください。 |
使用上のノート
-
オブジェクトを登録した後、ユーザーはクラウド・リンクを使用してオブジェクトにアクセスするために最大10分待機する必要がある場合があります。
-
プロシージャ
DBMS_CLOUD_LINK.UPDATE_REGISTRATIONを使用して、既存のデータ・セットの属性を変更します。更新が完了するまでの待機時間は、登録変更が伝播され、クラウド・リンクからアクセスできるようになるまで最大10分かかります。 この遅延は、
DBA_CLOUD_LINK_REGISTRATIONSビューとDBA_CLOUD_LINK_ACCESSビューの両方のデータ精度に影響する可能性があります。 -
表またはビューの
READWITHGRANTOPTION権限がある場合は、別のユーザーのスキーマに存在する表またはビューを登録できます。 -
データ・セットを登録するときに設定するスコープは、
DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERで設定した値との一致または制限が強い場合にのみ適用されます。 たとえば、ADMINがGRANT_REGISTERでスコープ'MY$TENANCY'を付与し、ユーザーがDBMS_CLOUD_LINK.REGISTERでデータ・セットを登録するときに'MY$REGION'を指定したとします。 この場合、次のようなエラーが表示されます:ORA-20001: Share privileges are not enabled for current user or it is enabled but not for scope MY$REGION -
登録時に特定の階層妥当性チェックは実行できません。 無効な登録は、表示、検出可能またはだれでもアクセスできなくなります。
-
DBMS_CLOUD_LINK.REGISTERを使用するには、DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERで割り当てられたレジスタ権限に加えて、DBMS_CLOUD_LINKパッケージに対する実行権限が必要です。 デフォルトでは、ADMINユーザーおよびPDB_DBAを持つスキーマのみがこの権限を持ちます。 -
リモート・リージョンのリフレッシュ可能クローンにデータ・セットを登録する場合、リモート・リージョン・クローンでの
DBMS_CLOUD_LINK.REGISTERの起動では、offload_targetsパラメータを除いて、ソース・データベースと同じ値を持つ同じパラメータを使用する必要があります。たとえば、ソースAutonomous Databaseインスタンスでスコープを
MY$COMPARTMENTに設定してDBMS_CLOUD_LINK.REGISTERを実行する場合、同じスコープ・パラメータ値(MY$COMPARTMENT)を持つクロス・リージョン・リフレッシュ可能クローンでプロシージャを再度実行します。 -
ソースで
DBMS_CLOUD_LINK.REGISTERにoffload_targetsパラメータを指定する場合は、クロス・リージョン・リフレッシュ可能クローンにデータ・セットを登録するときに、このパラメータを省略する必要があります。
REVOKE_AUTHORIZATIONプロシージャ
構文
DBMS_CLOUD_LINK.REVOKE_AUTHORIZATION(
database_id IN VARCHAR2,
namespace IN VARCHAR2 DEFAULT,
name IN VARCHAR2
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Autonomous DatabaseインスタンスのデータベースIDを指定します。 |
|
|
指定された |
|
|
指定された |
UNREGISTERプロシージャ
REGISTERプロシージャを使用して表またはビューを登録したユーザーが、リモート・アクセスに使用できないように表またはビューを登録解除できます。
構文
DBMS_CLOUD_LINK.UNREGISTER(
namespace IN VARCHAR2,
name IN VARCHAR2
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザー名を指定します。 |
name |
データ・セットの名前を指定します。 |
使用上のノート
DBMS_CLOUD_LINK.UNREGISTERは、完全に伝播されるまで最大10分かかる場合があり、その後はリモートでデータにアクセスできるようになります。
UPDATE_REGISTRATIONプロシージャ
DBMS_CLOUD_LINK.REGISTERを使用して登録されたデータ・セットの1つ以上の属性を更新します。
構文
DBMS_CLOUD_LINK.UPDATE_REGISTRATION(
namespace IN VARCHAR2,
name IN VARCHAR2,
description IN CLOB DEFAULT,
scope IN CLOB DEFAULT,
auth_required IN BOOLEAN DEFAULT,
data_set_owner IN VARCHAR2 DEFAULT,
offload_targets IN CLOB DEFAULT
);
パラメータ
| パラメータ | 説明 |
|---|---|
namespace |
更新するデータセットのネームスペースを指定します。 |
name |
更新するデータ・セットの名前を指定します。 |
description |
データを説明する更新済テキストを指定します。 このパラメータ値に対して デフォルトでは、この属性は更新されません。 |
scope |
指定した値でスコープを更新します。 スコープは、データ・セットへのアクセスを許可されるユーザーを示します。 値は、次の1つ以上で構成されるコンマ区切りのリストです:
スコープ値 このパラメータ値に対して デフォルトでは、この属性は更新されません。 |
|
|
データベースがデータセットから読み取るために追加の承認が必要であることを指定します。 考えられるケースは次のとおりです。
このパラメータ値に対して デフォルトでは、この属性は更新されません。 |
|
|
データ・セット所有者を指定します。 これは、データ・セットが属するユーザー、またはデータ・セットの更新および保守を担当するユーザーを示します。 たとえば、データ・セットを登録したユーザーの電子メール・アドレスに このパラメータ値に対して デフォルトでは、この属性は更新されません。 |
|
|
データ・セットが登録されているAutonomous Databaseから、データ・セットへのアクセスがオフロードされるリフレッシュ可能クローンの1つ以上のAutonomous Database OCIDsを指定します。
たとえば、次の例は、3つの
データ・セット・コンシューマが、 たとえば、1つの明示的な
リフレッシュ可能クローンの使用の詳細は、「リフレッシュ可能クローンをAutonomous Databaseとともに使用」を参照してください。 このパラメータ値に対して デフォルトでは、この属性は更新されません。 |
使用上のノート
-
データ・セットの
schema_nameおよびschema_object属性は更新できません。 -
オブジェクトの登録を更新した後、ユーザーは、クラウド・リンクで更新された属性を使用してオブジェクトにアクセスするために最大10分待機する必要がある場合があります。
-
表またはビューに対する
READWITHGRANTOPTION権限がある場合に、別のユーザーのスキーマにある表またはビューの登録を更新できます。 -
データ・セットの登録を更新するときに設定するスコープは、
DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERで設定した値よりも一致する場合、または制限が大きい場合にのみ適用されます。 たとえば、ADMINがGRANT_REGISTERでスコープ'MY$TENANCY'を付与し、ユーザーがDBMS_CLOUD_LINK.UPDATE_REGISTRATIONでデータ・セットの登録を更新するときに'MY$REGION'を指定したとします。 この場合、次のようなエラーが表示されます:ORA-20001: Share privileges are not enabled for current user or it is enabled but not for scope MY$REGION -
更新された登録の階層妥当性チェックは、登録の更新時に実行できません。 無効な登録は、表示、検出可能またはだれでもアクセスできなくなります。
-
データ・セットを登録したユーザーは、その属性を
DBMS_CLOUD_LINK.UPDATE_REGISTRATIONで更新できます。 また、DBMS_CLOUD_LINKパッケージに対する実行権限と、DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERで割り当てられた登録権限も必要です。 デフォルトでは、ADMINユーザーおよびPDB_DBAを持つスキーマのみがこの権限を持ちます。 -
リモート・リージョンのリフレッシュ可能クローンのデータ・セットの登録を更新する場合、リモート・リージョン・クローンでの
DBMS_CLOUD_LINK.UPDATE_REGISTRATIONの起動では、offload_targetsパラメータを除いて、ソース・データベースと同じ値を持つ同じパラメータを使用する必要があります。たとえば、ソースAutonomous Databaseインスタンスでスコープを
MY$COMPARTMENTに設定してDBMS_CLOUD_LINK.UPDATE_REGISTRATIONを実行する場合、同じスコープ・パラメータ値(MY$COMPARTMENT)を持つクロス・リージョン・リフレッシュ可能クローンでプロシージャを再度実行します。 -
ソースで
DBMS_CLOUD_LINK.REGISTERを使用してoffload_targetsパラメータを指定する場合は、クロス・リージョン・リフレッシュ可能クローンにデータ・セットを登録するときに、このパラメータを省略する必要があります。