DBMS_CLOUD_ADMINパッケージ

この項では、Autonomous Databaseで提供されるDBMS_CLOUD_ADMINサブプログラムについて説明します。

サブプログラム 説明

ATTACH_FILE_SYSTEMプロシージャ

このプロシージャは、データベース上のディレクトリにファイル・システムをアタッチします。

CREATE_DATABASE_LINKプロシージャ

このプロシージャは、ターゲット・データベースへのデータベース・リンクを作成します。別のAutonomous Databaseインスタンス、Autonomous DatabaseではないOracle Database、またはOracle管理の異種間接続を使用してOracle Database以外へのデータベース・リンクを作成するオプションがあります。

DETACH_FILE_SYSTEMプロシージャ

このプロシージャは、データベース上のディレクトリからファイル・システムをデタッチします。

DISABLE_EXTERNAL_AUTHENTICATIONプロシージャ

このプロシージャは、Autonomous Databaseインスタンスの外部認証を無効にします。

DROP_DATABASE_LINKプロシージャ

このプロシージャは、データベース・リンクを削除します。

ENABLE_EXTERNAL_AUTHENTICATIONプロシージャ

このプロシージャにより、ユーザーは、指定された外部認証スキームを使用してAutonomous Databaseにログオンできます。

ATTACH_FILE_SYSTEMプロシージャ

このプロシージャは、データベース内のファイル・システムをアタッチします。

DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEMプロシージャは、データベースにファイル・システムをアタッチし、ファイル・システムに関する情報をDBA_CLOUD_FILE_SYSTEMSビューに格納します。

構文

DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (
    file_system_name         IN VARCHAR2,
    file_system_location     IN VARCHAR2,
    directory_name           IN VARCHAR2,
    description              IN VARCHAR2 DEFAULT NULL,
    params                   IN CLOB DEFAULT NULL
);

Parameters

パラメータ 説明

file_system_name

ファイル・システムの名前を指定します。

このパラメータは必須です。

file_system_location

ファイル・システムの場所を指定します。

file_system_locationで指定する値は、完全修飾ドメイン名(FQDN)とFQDN:file_pathの形式のファイル・パスで構成されます。

たとえば次のようにします。

  • FQDN: myhost.sub000445.myvcn.oraclevcn.com

    Oracle Cloud Infrastructure File Storageの場合、ファイル・システムの作成時に「拡張オプションの表示」でFQDNを設定します。詳細は、ファイル・システムの作成を参照してください。

  • ファイル・パス: /results

このパラメータは必須です。

directory_name

アタッチされたファイル・システムのディレクトリ名を指定します。ディレクトリは存在している必要があります。

このパラメータは必須です。

description

(オプション)タスクの説明を指定します。

params

ファイル・システムの追加パラメータを提供するJSON文字列。

  • nfs_version: NFSがアタッチされるときに使用するNFSバージョンを指定します(NFSv3またはNFSv4)。有効な値: 3、 4

    デフォルト値: 3

次に例を示します:

NFSv3ファイル・システムにアタッチします。

BEGIN
   DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (
    file_system_name      => 'FSS',
    file_system_location  => 'myhost.sub000445.myvcn.oraclevcn.com:/results',
    directory_name        => 'FSS_DIR',
    description           => 'Source NFS for sales data'
  );
END;
/     

NFSv4ファイル・システムにアタッチします。

BEGIN
   DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (
    file_system_name      => 'FSS',
    file_system_location  => 'myhost.sub000445.myvcn.oraclevcn.com:/results',
    directory_name        => 'FSS_DIR',  
    description           => 'Source NFS for sales data',
    params                => JSON_OBJECT('nfs_version' value 4)
);                                                      
END;                                                        
/

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CLOUD_ADMINに対するEXECUTE権限を持っている必要があります。

  • DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEMを使用してファイル・システムをアタッチするには、データベース内のディレクトリ・オブジェクトに対するWRITE権限が必要です。

  • DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEMプロシージャは、プライベート・エンドポイントが有効なデータベースでのみプライベート・ファイル・ストレージ・サービスをアタッチできます。

    詳細は、OCIファイル・ストレージ・サービスおよびデータベースにアクセスするための開発システムの構成を参照してください。

  • DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEMプロシージャは、顧客の仮想クラウド・ネットワーク(VCN)上のネットワーク・ファイル・システムのホスト名を検索します。場所で指定されたホスト名が見つからない場合は、エラー"ORA-20000: Mounting NFS fails"が返されます。

  • Oracle Cloud Infrastructure File Storageでは、NFSv3を使用して共有します

  • Oracle Cloud Infrastructure File Storage以外のシステムにアタッチする場合、このプロシージャではNFSv3およびNFSv4がサポートされます

  • NFSv3を使用する接続されたNFSサーバーがあり、NFSサーバーでNFSバージョンがNFSv4に更新されている場合は、DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEMDBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEMの順に実行する必要があります(nfs_versionを4に設定したparamsパラメータを使用)。これにより、Autonomous DatabaseがNFSv4サーバーにアクセスできるように、一致するプロトコルでNFSがアタッチされます。デタッチしてから再アタッチしないと、NFSサーバーにアクセスできなくなり、"Protocol not supported"などのエラーが表示される場合があります。

CREATE_DATABASE_LINKプロシージャ

このプロシージャは、APIをコールするスキーマ内のターゲット・データベースへのデータベース・リンクを作成します。

オーバーロードされたフォームでは、次のものがサポートされます。

  • gateway_paramsパラメータを使用すると、サポートされているOracle以外のデータベースへのリンクがあるOracle管理の異種間接続を含むデータベース・リンクを作成できます。

  • rac_hostnamesパラメータを使用すると、プライベート・エンドポイントのAutonomous DatabaseからターゲットOracle RACデータベースへのデータベース・リンクを作成できます。この場合、rac_hostnamesパラメータを使用して、ターゲットOracle RACデータベースの1つ以上の個別のノードのホスト名を指定します。

構文

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
       db_link_name         IN VARCHAR2,
       hostname             IN VARCHAR2,
       port                 IN NUMBER,
       service_name         IN VARCHAR2,
       ssl_server_cert_dn   IN VARCHAR2 DEFAULT,
       credential_name      IN VARCHAR2 DEFAULT,
       directory_name       IN VARCHAR2 DEFAULT,
       gateway_link         IN BOOLEAN DEFAULT,
       public_link          IN BOOLEAN DEFAULT,
       private_target       IN BOOLEAN DEFAULT
       gateway_params       IN CLOB DEFAULT);
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
       db_link_name         IN VARCHAR2,
       rac_hostnames        IN CLOB,
       port                 IN NUMBER,
       service_name         IN VARCHAR2,
       ssl_server_cert_dn   IN VARCHAR2 DEFAULT,
       credential_name      IN VARCHAR2 DEFAULT,
       directory_name       IN VARCHAR2 DEFAULT,
       gateway_link         IN BOOLEAN DEFAULT,
       public_link          IN BOOLEAN DEFAULT,
       private_target       IN BOOLEAN DEFAULT);

Parameters

パラメータ 説明

db_link_name

作成するデータベース・リンクの名前。

hostname

ターゲット・データベースのホスト名。

hostnamelocalhostを指定することはできません。

gateway_paramsパラメータを指定してOracle管理の異種間接続を使用した接続を指定する場合は、次に注意してください:

このパラメータまたはrac_hostnamesを使用して、両方を使用しないでください。

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK入力では、ターゲット専用Autonomous Databaseのスキャン名をhostnameパラメータとして指定する必要があります。

rac_hostnames

ターゲットOracle RACデータベースのホスト名を指定します。値は、ターゲットOracle RACデータベースのノードに対して1つ以上の個別のホスト名を指定するJSON配列です。JSONでは、,で区切って複数のホスト名を渡すことができます。たとえば次のようにします。

'["sales1-svr1.domain", "sales1-svr2.domain",
      "sales1-svr3.domain"]'

ターゲットがOracle RACデータベースの場合、rac_hostnamesパラメータを使用して、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKで1つ以上のホスト名を指定します。これにより、Oracle RACの高可用性機能を利用できます。rac_hostnames値でのIPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません。

rac_hostnamesパラメータでホスト名のリストを指定すると、CREATE_DATABASE_LINKは、指定されたすべてのホスト名を接続文字列のアドレスとして使用します。指定されたホストのいずれかがターゲットのOracle RACデータベースで使用できない場合、Autonomous Databaseは、リストから別のホスト名を使用して自動的に接続を試みます。

このパラメータまたはhostnameを使用して、両方を使用しないでください。

rac_hostname値にlocalhostを指定することはできません。

port

ターゲット・データベースに接続するためのポートを指定します。

gateway_paramsパラメータを使用してOracle管理の異種間接続を使用した接続を指定する場合は、db_type値に基づいてポートを設定します:

  • awsredshift: ポート5439を使用します
  • azure: ポート1433を使用します
  • db2: Db2バージョン>= 11.5.6にはポート2500を使用します
  • db2: Db2バージョン<= 11.5.5にはポート5000を使用します
  • google_analytics: ポート443を使用します
  • google_bigquery: ポート443を使用します
  • hive: ポート433を使用します
  • mongodb: ポート27017を使用します
  • mysql: ポート3306を使用します
  • mysql_community: ポート3306を使用します
  • postgres: ポート5432を使用します
  • salesforce: ポート19937を使用します
  • servicenow: ポート443を使用します
  • snowflake: ポート443を使用します

service_name

リンクするデータベースのservice_name。ターゲットAutonomous Databaseでは、次のいずれかの方法でサービス名を検索します:

  • 接続のためにAutonomous Databaseからダウンロードしたwallet.zipにあるtnsnames.oraファイルを調べます。

  • Oracle Cloud Infrastructureコンソールで「データベース接続」をクリックします。「接続文字列」列にリストされている各接続文字列には、service_nameエントリと、対応するサービスの接続文字列が含まれます。詳細は、Autonomous Databaseの接続文字列の表示を参照してください。

  • V$SERVICESビューを問い合せます。たとえば次のようにします。

    SELECT name FROM V$SERVICES;

gateway_paramsパラメータを使用してOracle管理の異種間接続を使用した接続を指定する場合、service_nameはOracle以外のデータベースのデータベース名です。

ssl_server_cert_dn

サーバー証明書にあるDN値。

Oracle管理の異種間接続は、一般的な信頼できるルート証明書と中間SSL証明書の大部分を含むウォレットで事前構成されています。gateway_paramsパラメータを指定する場合、またはssl_server_cert_dnパラメータを含まない場合(デフォルト値はNULL)は、ssl_server_cert_dnNULLである必要があります。

Walletを使用しないAutonomous Databaseターゲットへのパブリック・エンドポイント・リンク:

ウォレット(TLS)なしでパブリック・エンドポイント上のAutonomous Databaseターゲットに接続するには:

  • directory_nameパラメータはNULLである必要があります。
  • ssl_server_cert_dnパラメータをNULLにするか、このパラメータを含めないでください(デフォルト値はNULLです)。

Walletを使用しないプライベート・エンドポイント・リンク:

ウォレットなしでプライベート・エンドポイント上のOracle Databaseに接続するには:

  • ターゲット・データベースはプライベート・エンドポイントにある必要があります。
  • directory_nameパラメータはNULLである必要があります。
  • ssl_server_cert_dnパラメータをNULLにするか、このパラメータを含まない必要があります(デフォルトはNULL)。
  • private_targetパラメータはTRUEである必要があります。
credential_name

DBMS_CLOUD.CREATE_CREDENTIALで作成された格納済の資格証明の名前。これは、ターゲット・データベースにアクセスするための資格証明です。

directory_name

cwallet.ssoファイルのディレクトリ。このパラメータのデフォルト値は'data_pump_dir'です。

Oracle管理の異種間接続は、一般的な信頼できるルート証明書と中間SSL証明書の大部分を含むウォレットで事前構成されています。gateway_paramsパラメータを指定する場合、directory_nameパラメータは必要ありません。

Walletを使用しないAutonomous Databaseターゲットへのパブリック・エンドポイント・リンク:

ウォレット(TLS)なしでパブリック・エンドポイント上のAutonomous Databaseに接続するには:

  • directory_nameパラメータはNULLである必要があります。
  • ssl_server_cert_dnパラメータをNULLにするか、このパラメータを含めないでください(デフォルト値はNULLです)。

また、TCPを使用してAutonomous Databaseに接続するには、ssl_server_cert_dnパラメータをNULLにするか、このパラメータを含まない必要があります(デフォルト値はNULL)。

Walletを使用しないプライベート・エンドポイント・リンク:

ウォレットなしでプライベート・エンドポイント上のターゲットOracle Databaseに接続するには:

  • ターゲット・データベースはプライベート・エンドポイントにある必要があります。
  • directory_nameパラメータはNULLである必要があります。
  • ssl_server_cert_dnパラメータをNULLにするか、このパラメータを含めないでください(デフォルト値はNULLです)。
  • private_targetパラメータはTRUEである必要があります。
gateway_link

データベース・リンクが作成されるのが別のOracle Databaseに対してか、Oracle Database Gatewayに対してかを示します。

gateway_linkFALSEに設定されている場合は、別のAutonomous Databaseまたは別のOracle Databaseに対するデータベース・リンクを指定します。

gateway_linkTRUEに設定されている場合は、Oracle以外のシステムに対するデータベース・リンクを指定します。これにより、(HS=OK)を指定するデータベース・リンク定義の接続記述子が作成されます。

gateway_linkTRUEに設定され、gateway_paramsNULLの場合、これは顧客管理Oracleゲートウェイへのデータベース・リンクを指定します。

デフォルト値はFALSEです。

public_link

データベース・リンクがパブリック・データベース・リンクとして作成されるかどうかを示します。

このパラメータをTRUEに設定してDBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを実行するには、プロシージャを起動するユーザーに、パブリック・データベース・リンクに関連付けられた資格証明に対するEXECUTE権限と、CREATE PUBLIC DATABASE LINKシステム権限が必要です。資格証明に対するEXECUTE権限は、ADMINユーザーまたは資格証明所有者のいずれかによって付与できます。

デフォルト値はFALSEです。

private_target

VCN DNSサーバーで解決する必要があるホスト名にデータベース・リンクがアクセスする場合は、private_targetパラメータに値TRUEを指定します。

private_targetTRUEの場合、hostnameパラメータは単一のホスト名である必要があります(プライベート・エンドポイントでは、IPアドレス、SCAN IPまたはSCANホスト名はサポートされていません)。

デフォルト値はFALSEです。

gateway_params

db_typeこのパラメータは、Oracle以外のデータベースに接続するためのOracle管理の異種間接続のターゲット・データベース・タイプを指定します。db_type値は次のいずれかです:

  • awsredshift
  • azure
  • db2
  • google_analytics
  • google_bigquery

    * db_typegoogle_bigqueryの場合にサポートされているgateway_paramsの詳細は、使用上のノートを参照してください。

  • hive

    * db_typehiveの場合にサポートされているgateway_paramsの詳細は、使用上のノートを参照してください。

  • mongodb
  • mysql
  • postgres
  • salesforce

    * db_typesalesforceの場合にサポートされているgateway_paramsの詳細は、使用上のノートを参照してください。

  • servicenow

    * db_typeservicenowの場合にサポートされているgateway_paramsの詳細は、使用上のノートを参照してください。

  • snowflake

    * db_typesnowflakeの場合にサポートされているgateway_paramsの詳細は、使用上のノートを参照してください。

  • NULL

    gateway_paramsNULLで、gateway_linkTRUEに設定されている場合、これは顧客管理Oracleゲートウェイへのデータベース・リンクを指定します。

json_objectフォームでパラメータを指定します。

たとえば次のようにします。

gateway_params => json_object('db_type' value 'awsredshift')

gateway_paramsNULLで、private_targetTRUEの場合、directory_nameNULLの場合、TCPベースのデータベース・リンクが作成されます。

gateway_paramsNULLで、private_targetTRUEの場合、directory_nameNULLの場合、TCPSベースのデータベース・リンクが作成されます。

使用上のノート

  • gateway_paramsパラメータを指定すると、一部のdb_type値に対して、追加のgateway_paramsパラメータがサポートされます。

    db_type 追加gateway_params
    google_analytics

    db_typegoogle_analyticsの場合、指定する資格証明はGoogle OAuth資格証明である必要があります(詳細は、gcp_oauth2)CREATE_CREDENTIALプロシージャを参照してください)。

    google_bigquery

    db_typegoogle_bigqueryの場合、指定する資格証明はGoogle OAuth資格証明である必要があります(詳細は、gcp_oauth2)CREATE_CREDENTIALプロシージャを参照してください)。

    db_typegoogle_bigqueryの場合、パラメータprojectは有効です。このパラメータは、google_bigqueryのプロジェクト名を指定します。これは必須です。

    Google BigQueryでSELECTを使用するときに指定する表名は引用符で囲む必要があります。たとえば次のようにします。

    SELECT * FROM "sales"@GOOGLE_BIGQUERY_LINK
    hive

    db_typehiveの場合、パラメータhttp_pathは有効です。このパラメータは、必要に応じて、Hiveインスタンスに接続するためのHttpPath値を指定します。

    salesforce

    db_typesalesforceの場合、パラメータsecurity_tokenが有効です。セキュリティ・トークンは、大文字と小文字が区別される英数字コードです。Salesforceにアクセスするには、security_token値を指定する必要があります。たとえば次のようにします。

    gateway_params => JSON_OBJECT(
         'db_type' value 'salesforce',
         'security_token' value 'security_token_value' )

    詳細は、セキュリティ・トークンのリセットを参照してください。

    servicenow

    ServiceNowに接続してデータを取得するには、ゲートウェイ・パラメータdirectory_nameおよびfile_nameを指定する必要があります。これらのパラメータは、JSONレスポンスをリレーショナル・モデルにマップするモデル・ファイル(REST構成ファイル)を指定します。モデル・ファイルは、JSONレスポンスを処理するためのエンドポイント、表マッピングおよびHTTPレスポンス・コードを指定します。詳細は、モデル・ファイルの構文およびモデル・ファイルの例を参照してください。

    db_type servicenowgateway_paramsパラメータを使用する場合、次の2つのオプションがサポートされています。

    • 基本認証: gateway_paramsパラメータdb_typeに値'servicenow'を指定し、ユーザー名/パスワード・タイプの資格証明とともにdirectory_nameおよびfile_nameパラメータを指定する必要があります。

    • OAuth 2.0認証: gateway_paramsパラメータdb_typeに値'servicenow'を指定し、directory_namefile_nameおよびtoken_uriパラメータをOAuth型の資格証明とともに指定する必要があります。

    directory_nameパラメータは、ServiceNow REST構成ファイルでディレクトリを指定します。このディレクトリは、次のように作成できます。

    create or replace directory servicenow_dir as 'SERVICENOW_DIR';

    ServiceNow REST構成ファイルを取得し、指定したディレクトリにダウンロードします。たとえば次のようにします。

    exec DBMS_CLOUD.get_object('servicenow_dir_cred',
         'https://objectstorage.<...>/servicenow.rest','SERVICENOW_DIR');

    file_name値を、ダウンロードしたREST構成ファイルの名前"servicenow.rest"に設定します。

    その後、基本認証またはOAuth2.0でServiceNow REST構成ファイルを使用できます。

    snowflake

    db_typeSNOWFLAKEの場合、オプションのパラメータroleschemaおよびwarehouseが有効です。これらの値は、デフォルト以外の別のスキーマ、ロールまたはウェアハウス値を指定します。たとえば次のようにします。

    gateway_params => JSON_OBJECT(
         'db_type' value 'snowflake',
         'role' value 'ADMIN',
         'schema' value 'PUBLIC',
         'warehouse' value 'TEST' )
  • private_targetパラメータを使用する場合、Autonomous Databaseからプライベート・エンドポイントにあるデータベース・サービスへのデータベース・リンクは、商用リージョンおよびUS Governmentリージョンでのみサポートされます。

    この機能は、すべての商用リージョンでデフォルトで有効になっています。

    この機能は、新しくプロビジョニングされたデータベースに対してUS Governmentリージョンでデフォルトで有効になっています。

    プライベート・エンドポイントにある既存のUS Governmentデータベースでは、Autonomous DatabaseからUS Governmentリージョン内のターゲットへのデータベース・リンクを作成する場合、Oracle Cloud Supportでサービス・リクエストを提出し、Governmentリージョンのデータベース・リンク機能でプライベート・エンドポイントを有効にするようにリクエストしてください。

    US Governmentリージョンには次が含まれます:

  • Oracle以外のデータベースに接続する場合、データベース・リンクは、パブリックIPまたはパブリック・ホスト名を介してターゲット・データベースにアクセスできる場合にのみサポートされます。
  • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKをADMIN以外のユーザーで実行するには、そのユーザーにEXECUTEおよびCREATE DATABASE LINK権限を付与する必要があります。たとえば、ADMINとして次のコマンドを実行して、atpc_userに権限を付与します:

    GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO atpc_user;
    GRANT CREATE DATABASE LINK TO atpc_user;

    また、ADMINスキーマ以外のスキーマ(atpc_userという名前のスキーマなど)でデータベース・リンクを作成する場合、atpc_userスキーマは、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKで使用する資格証明を所有している必要があります。

  • ウォレット・ファイルは、directory_nameパラメータで指定されたディレクトリごとに1つのみ有効です。ウォレット・ファイル用に選択したディレクトリに一度にアップロードできるのは1つのcwallet.ssoのみです。つまり、ディレクトリのcwallet.ssoでは、ディレクトリ内のウォレットが有効であるデータベースへのデータベース・リンクのみを作成できます。複数のcwallet.ssoファイルをデータベース・リンクで使用するには、追加のディレクトリを作成し、各cwallet.ssoを異なるディレクトリに配置する必要があります。

    ディレクトリの作成の詳細は、Autonomous Databaseのディレクトリの作成を参照してください。

  • Autonomous Databaseへのデータベース・リンクを作成するには、ソース・データベース(Autonomous Database以外)でGLOBAL_NAMESFALSEに設定します。

    SQL> ALTER SYSTEM SET GLOBAL_NAMES = FALSE;
     
    System altered.
    
    SQL> SHOW PARAMETER GLOBAL_NAMES
    NAME                     TYPE        VALUE
    ----------------------   ----------- -----------
    global_names             boolean     FALSE
    
  • private_targetパラメータがTRUEの場合、hostnameパラメータはVCN内のプライベート・ホストを指定します。

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'DB_LINK_CRED',
     username => 'adb_user',
     password => 'password');
  DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
     db_link_name => 'SALESLINK', 
     hostname => 'adb.eu-frankfurt-1.oraclecloud.com', 
     port => '1522',
     service_name => 'example_medium.atpc.example.oraclecloud.com',
     ssl_server_cert_dn => 'CN=atpc.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US',
     credential_name => 'DB_LINK_CRED');
END;
/
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'AWS_REDSHIFT_LINK_CRED',
    username => 'NICK',
    password => 'password'
  );
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
          db_link_name => 'AWSREDSHIFT_LINK', 
          hostname => 'example.com', 
          port => '5439',
          service_name => 'example_service_name',
          ssl_server_cert_dn => NULL,
          credential_name => 'AWS_REDSHIFT_LINK_CRED',
          gateway_params => JSON_OBJECT('db_type'  value 'awsredshift'));
END;
/
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'PRIVATE_ENDPOINT_CRED',
    username => 'db_user',
    password => 'password'
  );
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
          db_link_name => 'PRIVATE_ENDPOINT_DB_LINK', 
          hostname => 'exampleHostname', 
          port => '1521',
          service_name => 'exampleServiceName',
          credential_name => 'PRIVATE_ENDPOINT_CRED',
          ssl_server_cert_dn => NULL,
          directory_name => NULL,
          private_target => TRUE);
END;
/
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'GOOGLE_BIGQUERY_CRED',
    params => JSON_OBJECT( 'gcp_oauth2' value JSON_OBJECT(
          'client_id' value 'client_id',
          'client_secret' value 'client_secret', 
          'refresh_token' value 'refresh_token' )));

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
          db_link_name => 'GOOGLE_BIGQUERY_LINK', 
          hostname => 'example.com', 
          port => '443',
          service_name => 'example_service_name',
          credential_name => 'GOOGLE_BIGQUERY_CRED',
          gateway_params => JSON_OBJECT(
                     'db_type' value 'google_bigquery',
                     'project' value 'project_name1' ));
END;
/

Google BigQueryまたはGoogle AnalyticsでSELECTを使用するときに指定する表名は引用符で囲む必要があります。たとえば次のようにします。

SELECT * FROM "sales"@GOOGLE_BIGQUERY_LINK

rac_hostnamesパラメータは、プライベート・エンドポイントのターゲットOracle RACデータベースとともに使用します。

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'DB_LINK_CRED1',
     username => 'adb_user',
     password => 'password');
      DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
     db_link_name => 'SALESLINK', 
     rac_hostnames => '["sales1-svr1.example.adb.us-ashburn-1.oraclecloud.com",
                        "sales1-svr2.example.adb.us-ashburn-1.oraclecloud.com",
                        "sales1-svr3.example.adb.us-ashburn-1.oraclecloud.com"]',
     port => '1522',
     service_name => 'example_high.adb.oraclecloud.com',
     ssl_server_cert_dn => 'CN=adb.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US',
     credential_name => 'DB_LINK_CRED1',
     directory_name => 'EXAMPLE_WALLET_DIR',
     private_target => TRUE);
END;
/

DETACH_FILE_SYSTEMプロシージャ

このプロシージャは、データベースからファイル・システムを連結解除します。

DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEMプロシージャは、データベースからファイル・システムをデタッチします。また、DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEMプロシージャは、DBA_CLOUD_FILE_SYSTEMSビューからファイル・システムに関する情報も削除します。

構文

DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM(
    file_system_name         IN VARCHAR2
);

Parameters

パラメータ 説明

file_system_name

ファイル・システムの名前を指定します。

このパラメータは必須です。

次に例を示します:

BEGIN
   DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM (
    file_system_name      => 'FSS'                                       
  );                                                                          
END;                                                                          
/     

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーでログインするか、DBMS_CLOUD_ADMINに対するEXECUTE権限を持っている必要があります。

  • DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEMプロシージャを使用してファイル・システムをディレクトリからデタッチするには、データベース内のディレクトリ・オブジェクトに対するWRITE権限が必要です。

  • DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEMプロシージャは、プライベート・エンドポイントが有効なデータベースでのみプライベート・ファイル・ストレージ・サービスをデタッチできます。

    詳細は、OCIファイル・ストレージ・サービスおよびデータベースにアクセスするための開発システムの構成を参照してください。

  • DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEMプロシージャは、顧客の仮想クラウド・ネットワーク(VCN)上のネットワーク・ファイル・システムのホスト名を検索します。場所で指定されたホスト名が見つからない場合は、エラー"ORA-20000: Mounting NFS fails"が返されます。

DISABLE_EXTERNAL_AUTHENTICATIONプロシージャ

データベースの外部認証スキームでのユーザー認証を無効にします。

構文

DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;

例外

例外 エラー・コード 説明
invalid_ext_auth ORA-20004

詳細な説明は、付随するメッセージを参照してください。

BEGIN 
   DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/

PL/SQL procedure successfully completed.

DROP_DATABASE_LINKプロシージャ

このプロシージャは、データベース・リンクを削除します。

構文

DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK(
        db_link_name      IN VARCHAR2,
        public_link       IN BOOLEAN DEFAULT);

Parameters

パラメータ 説明

db_link_name

削除するデータベース・リンクの名前。

public_link

public_linkTRUEに設定してDBMS_CLOUD_ADMIN.DROP_DATABASE_LINKを実行するには、DROP PUBLIC DATABASE LINKシステム権限が必要です。

デフォルト値はFALSEです。

BEGIN
    DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK(
        db_link_name => 'SALESLINK' );
END;
/

使用上のノート

データベース・リンクの使用が完了したら、DBMS_CLOUD_ADMIN.DROP_DATABASE_LINKを実行して、Oracleデータベースのセキュリティを確保し、格納されているウォレット・ファイルを削除します。たとえば次のようにします。

  • オブジェクト・ストア内のウォレット・ファイルを削除します。

  • DBMS_CLOUD.DELETE_FILEを使用して、ウォレット・ファイルをdata_pump_dirディレクトリから、またはウォレット・ファイルがアップロードされたユーザー定義ディレクトリから削除します。

ENABLE_EXTERNAL_AUTHENTICATIONプロシージャ

ユーザーが外部認証スキームを使用してデータベースにログインできるようにします。

構文

DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
   type         IN VARCHAR2,
   force        IN BOOLEAN DEFAULT FALSE,
   params       IN CLOB DEFAULT NULL
);

パラメータ

パラメータ 説明

type

外部認証タイプを指定します。有効な値: または。

  • 'OCI_IAM'
  • 'AZURE_AD'
  • 'CMU'
  • 'KERBEROS'

force

(オプション)現在有効になっている外部認証スキームをオーバーライドします。有効な値は、TRUEまたはFALSEです。

デフォルト値はFALSEです。

params

外部認証の追加パラメータを提供するJSON文字列。

CMUパラメータ:

  • location_uri: CMUに必要なファイルが格納されているバケットのクラウド・ストレージURIを指定します。

    location_uriを指定すると、CMU構成ファイルを保存するために、パス'cmu_wallet'でデータベースに固定名のディレクトリ・オブジェクトCMU_WALLET_DIRが作成されます。この場合、directory_nameパラメータを指定する必要はありません。

  • credential_name: CMU構成ファイルをオブジェクト・ストアからディレクトリ・オブジェクトにダウンロードするために使用される資格証明を指定します。

    デフォルト値はNULLで、オブジェクト・ストア・バケットまたはサブフォルダのパブリック、事前認証済または事前署名済URLを指定できます。

  • directory_name: CMUに必要な構成ファイルが格納されているディレクトリ名を指定します。directory_nameが指定されている場合は、CMU構成ファイルのdsi.oraおよびcwallet.ssoをこのディレクトリ・オブジェクトにコピーする必要があります。

KERBEROSパラメータ:

  • location_uri: Kerberosに必要なファイルが格納されるバケットのクラウド・ストレージURIを指定します。

    location_uriを指定すると、Kerberos構成ファイルを保存するために、データベースに固定名のディレクトリ・オブジェクトKERBEROS_DIRが作成されます。この場合、directory_nameパラメータを指定する必要はありません。

  • credential_name: Kerberos構成ファイルをオブジェクト・ストアの場所からディレクトリ・オブジェクトにダウンロードするために使用される資格証明を指定します。

    デフォルト値はNULLで、オブジェクト・ストア・バケットまたはサブフォルダのパブリック、事前認証済または事前署名済URLを指定できます。

  • directory_name: Kerberosに必要なファイルが格納されているディレクトリ名を指定します。directory_nameが指定されている場合は、Kerberos構成ファイルをこのディレクトリ・オブジェクトにコピーする必要があります。
  • kerberos_service_name: Kerberosサービス名として使用する名前を指定します。このパラメータはオプション。

    デフォルト値: 指定しない場合、kerberos_service_name値はAutonomous DatabaseインスタンスのGUIDに設定されます。

AZURE_ADパラメータ:

  • tenant_id: AzureアカウントのテナントID。テナントIDでは、Autonomous DatabaseインスタンスのAzure ADアプリケーション登録を指定します。
  • application_id: Azure ADで作成されたAzureアプリケーションID。Autonomous Databaseインスタンスの外部認証用にロール/スキーマ・マッピングを割り当てます。
  • application_id_uri: Azureアプリケーションに割り当てられた一意のURI。

    これは、Autonomous Databaseインスタンスの識別子です。名前はドメイン修飾である必要があります(これはクロス・テナンシのリソース・アクセスをサポートします)。

    このパラメータの最大長は256文字です。

例外

例外 エラー・コード 説明
invalid_ext_auth ORA-20004

詳細な説明は、付随するメッセージを参照してください。

使用上のノート

  • typeOCI_IAMで、リソース・プリンシパルがAutonomous Databaseインスタンスで有効になっていない場合、このルーチンはDBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPALでリソース・プリンシパルを有効にします。

  • このプロシージャは、システム・パラメータIDENTITY_PROVIDER_TYPEおよびIDENTITY_PROVIDER_CONFIGを、Oracle Cloud Infrastructure Identity and Access Managementの認証および認可を使用してインスタンスにアクセスするために必要なユーザーに設定します。

OCI_IAM認証の有効化

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'OCI_IAM',
     force=> TRUE );
END;
/

PL/SQL procedure successfully completed.

Microsoft Active DirectoryのCMU認証の有効化

params JSON引数を使用して、CMU構成ファイルを含むディレクトリ名を渡します。

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'CMU',
     force => TRUE,
     params => JSON_OBJECT('directory_name' value 'CMU_DIR'); // CMU_DIR directory object already exists
END;
/

PL/SQL procedure successfully completed.

params JSON引数を使用して、CMU構成ファイルを含むオブジェクト・ストレージの場所を指すロケーションURIを渡します。

BEGIN
   DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
       type     => 'CMU',
       params   => JSON_OBJECT('location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                               'credential_name' value 'my_credential_name')
   );
END;
/

PL/SQL procedure successfully completed.

Azure AD認証の有効化

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'AZURE_AD',
     force => TRUE,
     params   => JSON_OBJECT( 'tenant_id' VALUE '....',
                              'application_id' VALUE '...',
                              'application_id_uri' VALUE '.....' ));
END;
/

PL/SQL procedure successfully completed.

Kerberos認証の有効化

params JSON引数を使用して、Kerberos構成ファイルを含むディレクトリ名を渡します。

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'KERBEROS',
     force => TRUE,
     params => JSON_OBJECT('directory_name' value 'KERBEROS_DIR'); // KERBEROS_DIR directory object already exists
END;
/

PL/SQL procedure successfully completed.

params JSON引数を使用して、Kerberos構成ファイルを含むオブジェクト・ストレージの場所を指す場所URIを渡します:

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'KERBEROS',
     force => TRUE,
     params => JSON_OBJECT('location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                           'credential_name' value 'my_credential_name');
END;
/

params JSON引数にkerberos_service_nameを指定してサービス名を渡します。

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'KERBEROS',
     force => TRUE,
     params => JSON_OBJECT('directory_name' value 'KERBEROS_DIR', // KERBEROS_DIR directory object already exists
                           'kerberos_service_name' value 'oracle' ));
END;
/

Autonomous DatabaseインスタンスでKerberosを有効にした後、次の問合せを使用してKerberosサービス名を表示します:

SELECT SYS_CONTEXT('USERENV','KERBEROS_SERVICE_NAME') FROM DUAL;

DBMS_CLOUD_ADMIN例外

次の表に、DBMS_CLOUD_ADMINの例外を示します。

例外 コード 説明
invalid_service 20001 無効なサービスが指定されました。
service_not_exist 20002 指定されたサービスは存在しません。
default_service 20003 指定したサービスは変更できません。
invalid_char_set 20029 事前条件がないか、無効な(各国語)文字セットです。
invalid_enc_key_attr 20030 キー管理の引数がないか、無効です。
Already Using Oracle Managed Key 000000

データベースはすでにOracle管理キーを使用しています。Oracle管理キーをすでに使用しているときにプロシージャをコールしようとしています。

Argument Provided for the procedure オラ-0000

プロシージャに引数が提供されています。予期されるエラー・メッセージ: このプロシージャに引数は必要ありません。