46 DBMS_CLOUD
DBMS_CLOUDパッケージは、クラウド・リソースを操作するためのデータベース・ルーチンを提供します。
この章のトピックは、次のとおりです:
- DBMS_CLOUDのインストール
この項では、
DBMS_CLOUDパッケージのインストールについて説明します。 - DBMS_CLOUDエンドポイント管理
DBMS_CLOUDを使用した操作での事前構成済エンドポイントURIの形式について説明します。
- DBMS_CLOUDサブプログラムおよびREST API
この項では、Oracle Databaseで提供されているDBMS_CLOUDサブプログラムおよびREST APIについて説明します。
- DBMS_CLOUDのURI形式
DBMS_CLOUDの操作でのソース・ファイルURIの形式について説明します。 この形式は、どのオブジェクト記憶域サービスを使用するかによって異なります。
- DBMS_CLOUDパッケージのフォーマット・オプション
DBMS_CLOUDのフォーマット引数では、ソース・ファイルの形式を指定します。
- EXPORT_DATAのDBMS_CLOUDパッケージ形式オプション
テキスト・ファイル形式、CSV、JSONまたはXMLを使用したDBMS_CLOUD.EXPORT_DATAおよびOracle Data Pumpの有効なフォーマット・パラメータ・オプションについて説明します。
- DBMS_CLOUDのAvroおよびParquetのサポート
この項では、Oracle Databaseで提供されるDBMS_CLOUDのAvroおよびParquetのサポートについて説明します。
- DBMS_CLOUDの例外
この項では、DBMS_CLOUDの例外について説明します。
46.1 DBMS_CLOUDのインストール
パッケージのDBMS_CLOUDファミリは、Oracle Databaseで事前インストールまたは構成されていません。 DBMS_CLOUDパッケージを手動でインストールし、このパッケージを使用するようにユーザーまたはロールを構成する必要があります。
Oracle Database 23.7を使用したインストールおよび構成の詳細は、「DBMS_CLOUD Autonomous Databaseパッケージの使用」を参照してください。
DBMS_CLOUD パッケージのインストールおよびユーザー/ロールの構成でサポートされているその他のリリースについては、Doc ID 2748362.1のMOS-NOTEを参照してください。
46.2 DBMS_CLOUDエンドポイント管理
DBMS_CLOUDを使用した操作での事前構成済エンドポイントURIsの形式について説明します。
DBMS_CLOUDパッケージは、サービス用に事前構成された多数のオブジェクト・ストアおよびRESTエンドポイントをサポートしています。 また、このパッケージでは、ネットワーク・アクセス制御リスト(ACLs)を介してそのようなエンドポイントを適切に有効化した後に、事前構成されていない追加のエンドポイントにアクセスすることもできます。
事前構成済エンドポイントの認証は、DBMS_CLOUDで自動的に理解され、導出されます。 追加の顧客管理エンドポイントの適切な認証タイプを知るために、DBMS_CLOUDは、URIエンドポイントの認証タイプを示すURIスキームをサポートしています。 URIエンドポイントは、セキュアなHTTPリクエストのためにポート443でHTTPSをサポートする必要があります。
-
事前構成済URIの詳細は、「DBMS_CLOUD URI形式」を参照してください。
- 顧客管理URIの詳細は、「顧客管理の追加のURI形式」を参照してください。
46.3 DBMS_CLOUDサブプログラムおよびREST API
この項では、Oracle Databaseで提供されているDBMS_CLOUDサブプログラムおよびREST APIについて説明します。
DBMS_CLOUDパッケージは次のもので構成されます:
46.3.1 アクセス管理用のDBMS_CLOUD
資格証明の作成、削除および更新を含む、DBMS_CLOUDパッケージ内の資格証明管理用のサブプログラム。
| サブプログラム | 説明 |
|---|---|
| このプロシージャでは、クラウド・サービスの資格証明をOracle Databaseに格納します。 | |
| このプロシージャでは、Oracle Databaseから既存の資格証明を削除します。 | |
| このプロシージャでは、Oracle Database内のクラウド・サービス資格証明の属性を更新します。 |
46.3.1.1 CREATE_CREDENTIALプロシージャ
このプロシージャでは、クラウド・サービスの資格証明をOracle Databaseに格納します。
格納されているクラウド・サービス資格証明はデータのロードやクラウドに存在する外部データの問合せのためにクラウド・サービスにアクセスする場合や、credential_nameパラメータを指定したDBMS_CLOUDプロシージャを使用する場合に使用します。 このプロシージャはオーバーロードされています。
-
Oracle Cloud Infrastructure関連のパラメータ(
user_ocid、tenancy_ocid、private_key、fingerprintなど)は、Oracle Cloud Infrastructure署名キー認証を使用している場合にのみ使用します。
構文
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name IN VARCHAR2,
username IN VARCHAR2,
password IN VARCHAR2 DEFAULT NULL);
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name IN VARCHAR2,
user_ocid IN VARCHAR2,
tenancy_ocid IN VARCHAR2,
private_key IN VARCHAR2,
fingerprint IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
格納する資格証明の名前。 |
|
|
|
|
|
|
|
|
ユーザーのOCIDを指定します。 ユーザーのOCIDを取得する方法の詳細は、テナンシのOCIDとユーザーのOCIDの取得場所に関する項を参照してください。 |
|
|
テナンシのOCIDを指定します。 テナンシのOCIDを取得する方法の詳細は、テナンシのOCIDとユーザーのOCIDの取得場所に関する項を参照してください。 |
|
|
生成した秘密キーを指定します。 パスフレーズ付きで生成したプライベート・キーはサポートされていません。 この秘密キーは、パスフレーズなしで生成する必要があります。 PEM形式でキー・ペアを生成する方法の詳細は、API署名キーの生成方法に関する項を参照してください。 |
|
|
フィンガープリントを指定します。 ユーザーのアカウントに生成した公開キーをアップロードすると、コンソールにフィンガープリントが表示されます。 この引数には表示されたフィンガープリントを使用します。 詳細は、キーのフィンガープリントの取得方法に関する項およびAPI署名キーの生成方法に関する項を参照してください。 |
使用上のノート
-
この操作では、資格証明が暗号化形式でデータベースに格納されます。
-
user_credentials表を問い合せると、自分のスキーマの資格証明を確認できます。 -
ADMINユーザーは、dba_credentials表を問い合せると、すべての資格証明を確認できます。 -
資格証明の作成は、クラウド・サービスの資格証明が変更されないかぎり1回のみ必要です。 資格証明を格納すると、
credential_nameパラメータが必要になるDBMS_CLOUDプロシージャに同じ名前の資格証明を使用できるようになります。 -
このプロシージャはオーバーロードされています。 キー・ベース認証の属性
user_ocid、tenancy_ocid、private_keyまたはfingerprintのいずれかを指定すると、コールはOracle Cloud Infrastructure署名キー・ベースの資格証明とみなされます。 -
ALL_CREDENTIALSビューから資格証明をリストできます。 たとえば、次のコマンドを実行して資格証明をリストします。SELECT credential_name, username, comments FROM all_credentials;
Oracle Cloud Infrastructure資格証明(認証トークン)
Oracle Cloud Infrastructureの場合、usernameはOracle Cloud Infrastructureユーザー名です。 passwordは、Oracle Cloud Infrastructure認証トークンです。 認証トークンの使用を参照してください。
たとえば:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'DEF_CRED_NAME',
username => 'adb_user@example.com',
password => 'password' );
END;
/
へのコールを認証する場合は、認証トークン・ベースの資格証明を使用します。 他のタイプのOracle Cloud Infrastructureクラウド・サービスへのコールには、Oracle Cloud Infrastructure署名キー・ベースの資格証明を使用します。
場合、usernameパラメータ値には、アイデンティティ・ドメインとプロファイルからのユーザー名を含める必要があります。 ユーザーに関連付けられているアイデンティティ・ドメインは、Oracle Cloud Infrastructureコンソールで確認できます。
たとえば:
oracleidentitycloudservice/adb_user@example.com
デフォルトのアイデンティティ・ドメインでは、ドメイン名Defaultを含める必要はありません。 たとえば:
adb_user@example.com
Oracle Cloud Infrastructure署名キー・ベースの資格証明
Oracle Cloud Infrastructure署名キー認証では、Oracle Cloud Infrastructure署名キー関連のパラメータ(user_ocid、tenancy_ocid、private_key、fingerprintなど)を使用します。
たとえば:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name => âOCI_KEY_CREDâ,
user_ocid => âocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoaâ,
tenancy_ocid => âocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2aâ,
private_key => âMIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=â,
fingerprint => âf2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27â);
END;
/
パスフレーズ付きで生成したプライベート・キーはサポートされていません。 この秘密キーは、パスフレーズなしで生成する必要があります。 詳細は、API署名キーの生成方法に関する項を参照してください。
Oracle Cloud Infrastructure Object Storage Classicの資格証明
ソース・ファイルがOracle Cloud Infrastructure Object Storage Classicにある場合、usernameはOracle Cloud Infrastructure Classicユーザー名になり、passwordはOracle Cloud Infrastructure Classicパスワードになります。
Amazon Web Services (AWS)資格証明
ソース・ファイルがAmazon S3にある場合やAWS APIをコールする場合、usernameはAWSアクセス・キーIDになり、passwordはAWSシークレット・アクセス・キーになります。 AWS IDとアクセス管理を参照してください。
Microsoft Azure資格証明
ソース・ファイルがAzure Blob Storageにある場合やAzure APIをコールする場合、usernameはAzureストレージのアカウント名になり、passwordはAzureストレージのアカウント・アクセス・キーになります。 Azureストレージ・アカウントについてを参照してください。
GitHubの個人アクセス・トークン
ソース・ファイルがGitHubリポジトリにある場合、またはGitHub APIをコールする場合、usernameはGitHubの電子メールで、passwordはGitHubの個人アクセス・トークンです。 詳細は、「個人用アクセス トークンの作成」を参照してください。
たとえば:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'MY_GITHUB_CRED',
username => 'user@example.com',
password => 'your_personal_access_token' );
END;
/
46.3.1.2 DROP_CREDENTIALプロシージャ
このプロシージャでは、Oracle Databaseから既存の資格証明を削除します。
構文
DBMS_CLOUD.DROP_CREDENTIAL (
credential_name IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
削除する資格証明の名前。 |
46.3.1.3 UPDATE_CREDENTIALプロシージャ
このプロシージャは、指定されたcredential_nameの新しい値で属性を更新します。
格納した資格証明は、データのロードやクラウドに存在する外部データを問い合せる場合や、DBMS_CLOUDプロシージャの使用時にcredential_nameパラメータを指定する場合に使用します。
構文
DBMS_CLOUD.UPDATE_CREDENTIAL (
credential_name IN VARCHAR2,
attribute IN VARCHAR2,
value IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
更新する資格証明の名前。 |
|
|
更新する属性の名前。 ユーザー名/パスワード・タイプの資格証明の場合、有効な 詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。 |
|
|
指定された属性の新しい値。 |
使用上のノート
-
ユーザー名の値では大文字と小文字が区別されます。 二重引用符または空白を含むことはできません。
-
DBA権限を持つユーザーは、
dba_credentialsを問い合せることで、すべての資格証明を表示できます。 -
資格証明の作成は、クラウド・サービスの資格証明が変更されないかぎり1回のみ必要です。 資格証明を格納すると、
credential_nameパラメータが必要になるDBMS_CLOUDプロシージャに同じ名前の資格証明を使用できるようになります。 -
ALL_CREDENTIALSビューから資格証明をリストできます。 たとえば、次のコマンドを実行して資格証明をリストします。SELECT credential_name, username, comments FROM all_credentials;
例
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL(
credential_name => 'OBJ_STORE_CRED',
attribute => 'PASSWORD',
value => 'password');
END;
/
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL(
credential_name => 'ARN_CRED',
attribute => 'aws_role_arn',
value => 'NEW_AWS_ARN');
END;
/
46.3.2 オブジェクトおよびファイル用のDBMS_CLOUD
DBMS_CLOUDパッケージ内のオブジェクトおよびファイル管理のサブプログラム。
| サブプログラム | 説明 |
|---|---|
| このプロシージャは、クラウド・オブジェクト・ストレージまたはディレクトリ内のファイルから、既存のJSONコレクションにデータをロードします。 | |
| このプロシージャは、クラウド・オブジェクト・ストレージまたはディレクトリ内のファイルから、既存のOracle Database表にデータをロードします。 | |
formatパラメータtypeを値orc、parquetまたはavroに設定したこのプロシージャは、クラウドのORC、ParquetまたはAvroファイルから、またはディレクトリ内のORC、ParquetまたはAvroファイルから、既存のOracle Database表にデータをロードします。
テキスト・ファイルと同様に、データはソースORC、ParquetまたはAvroファイルから既存の内部表にコピーされます。 |
|
| このプロシージャは、あるクラウド・オブジェクト・ストレージ・バケットから別のクラウド・オブジェクト・ストレージ・バケットにファイルをコピーします。 | |
| このプロシージャは、クラウド内のファイルまたはディレクトリ内のファイルに外部表を作成します。 これにより、Oracle Databaseから外部データに対する問合せを実行できるようになります。 | |
|
このプロシージャは、サポートされている構成の「Apache Iceberg」表の外部表を作成します。 |
|
formatパラメータtypeを値parquet、orcまたはavroに設定したこのプロシージャは、クラウドまたはディレクトリ内のParquet、ORCまたはAvro形式のファイルを使用して外部表を作成します。
これにより、Oracle Databaseから外部データに対する問合せを実行できるようになります。 |
|
| このプロシージャでは、クラウド内のファイルにパーティション化された外部表を作成します。 これにより、Oracle Databaseから外部データに対する問合せを実行できるようになります。 | |
| このプロシージャでは、ハイブリッド・パーティション表を作成します。 これにより、Oracle Databaseからハイブリッド・パーションデータに対する問合せを実行できるようになります。 | |
このプロシージャでは、スキーマ内のuser_load_operations表に記録されているすべてのデータ・ロード操作をクリアするか、typeパラメータで指定したタイプのすべてのデータ・ロード操作をクリアします。
|
|
| このプロシージャでは、Oracle Databaseの指定したディレクトリから指定したファイルを削除します | |
| このプロシージャでは、オブジェクト・ストアの指定したオブジェクトを削除します。 | |
|
このプロシージャは、入力として |
|
このプロシージャは、問合せの結果に基づいて、Oracle Databaseからクラウド内のファイルにデータをエクスポートします。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。 指定したformatパラメータのtypeオプションに応じて、プロシージャはCSV、JSONまたはXML 「;または、ORACLE_DATAPUMPアクセス・ドライバを使用してダンプ・ファイルにデータを書き込む」のオプションを含むテキストとして行をクラウド・オブジェクト・ストアにエクスポートします。 |
|
このプロシージャはオーバーロードされています。 プロシージャ形式では、Cloud Object Storageからオブジェクトを読み取り、そのオブジェクトをOracle Databaseにコピーします。 ファンクション形式では、Cloud Object Storageからオブジェクトを読み取り、BLOBをOracle Databaseに返します。
|
|
| このファンクションでは、指定されたディレクトリにあるファイルをリストします。 結果には、ファイル名とファイルに関する追加のメタデータ(バイト単位のファイル・サイズ、作成タイムスタンプ、最終変更タイムスタンプなど)が含まれます。 | |
| このファンクションでは、オブジェクト・ストア内の指定された場所にあるオブジェクトをリストします。 結果には、オブジェクト名とオブジェクトに関する追加のメタデータ(サイズ、チェックサム、作成タイムスタンプ、最終変更タイムスタンプなど)が含まれます。 | |
| このプロシージャは、あるクラウド・オブジェクト・ストレージ・バケットから別のバケットにオブジェクトを移動します。 | |
このプロシージャはオーバーロードされています。 このプロシージャには、Oracle DatabaseからCloud Object Storageにファイルをコピーする形式があります。 また、このプロシージャには、Oracle DatabaseからCloud Object StorageにBLOBをコピーする形式もあります。
|
|
|
このプロシージャは、クラウド内のファイルからの外部パーティション表の更新を簡略化します。 このプロシージャは、新しいパーティションが追加されたとき、または外部パーティション表のオブジェクト・ストア・ソースからパーティションが削除されたときに実行します。 |
|
| このプロシージャでは、外部表のソース・ファイルを検証して、ログ情報を生成し、外部表に指定したフォーマット・オプションと一致しない行をOracle Databaseのbadfile表に格納します。 | |
| このプロシージャでは、パーティション化された外部表のソース・ファイルを検証して、ログ情報を生成し、外部表に指定したフォーマット・オプションと一致しない行をOracle Databaseのbadfile表に格納します。 | |
| このプロシージャでは、ハイブリッド・パーション表のソース・ファイルを検証して、ログ情報を生成し、ハイブリッド表に指定したフォーマット・オプションと一致しない行をOracle Databaseのbadfile表に格納します。 |
46.3.2.1 COPY_COLLECTIONプロシージャ
このプロシージャは、クラウド・オブジェクト・ストレージまたはディレクトリからJSONコレクションにデータをロードします。 指定されたJSONコレクションが存在しない場合は、プロシージャによって作成されます。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。
構文
DBMS_CLOUD.COPY_COLLECTION (
collection_name IN VARCHAR2,
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB,
format IN CLOB DEFAULT NULL
);
DBMS_CLOUD.COPY_COLLECTION (
collection_name IN VARCHAR2,
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB,
format IN CLOB DEFAULT NULL,
operation_id OUT NOCOPY NUMBER
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
データのロード先となるJSONコレクションの名前。 この名前のコレクションがすでに存在する場合は、指定したデータがロードされ、そうでない場合は新しいコレクションが作成されます。 |
|
|
Cloud Object Storageにアクセスするための資格証明の名前。
|
|
|
このパラメータでは、ソース・ファイルURIのカンマ区切りリスト、または1つ以上のディレクトリとソース・ファイルを指定します。 クラウドのソース・ファイルURI クラウド・ソース・ファイルURIのファイル名には、ワイルドカードおよび正規表現を使用できます。 正規表現を使用できるのは、
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は たとえば: URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。
ディレクトリ 1つのディレクトリと1つ以上のファイル名を指定することも、ディレクトリとファイル名のカンマ区切りリストを使用することもできます。 ディレクトリを指定する形式は、 ワイルドカードを使用して、ディレクトリ内のファイル名を指定できます。 文字"*"は、複数の文字に対応するワイルドカードとして使用できます。文字"?"は、1文字に対応するワイルドカードとして使用できます。 例: 複数のディレクトリを指定するには、ディレクトリのカンマ区切りリストを使用します。例: 大/小文字を区別するディレクトリ名を指定するには、二重引用符を使用します。 例: 引用符文字を含めるには、2つの引用符を使用します。 例: |
|
|
ソース・ファイルの形式を示すオプション。 これらのオプションはJSON文字列として指定されます。 サポートされている形式は次のとおりです: 前述したJSONデータのフォーマットとは別に、Autonomous Databaseでは他のフォーマットもサポートされています。 Autonomous Databaseでサポートされている書式引数のリストについては、「DBMS_CLOUDパッケージ形式オプション」を参照してください。 |
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
例
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OBJ_STORE_CRED',
username => 'user_name@oracle.com',
password => 'password'
);
DBMS_CLOUD.COPY_COLLECTION(
collection_name => 'myCollection',
credential_name => 'OBJ_STORE_CRED',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/myCollection.json'
);
END;
/
46.3.2.2 COPY_DATAプロシージャ
このプロシージャでは、クラウド内のファイルまたはディレクトリ内のファイルから既存のOracle Database表にデータをロードします。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。
構文
DBMS_CLOUD.COPY_DATA (
table_name IN VARCHAR2,
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB,
schema_name IN VARCHAR2,
field_list IN CLOB,
format IN CLOB);
DBMS_CLOUD.COPY_DATA (
table_name IN VARCHAR2,
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB DEFAULT NULL,
schema_name IN VARCHAR2 DEFAULT NULL,
field_list IN CLOB DEFAULT NULL,
format IN CLOB DEFAULT NULL
operation_id OUT NOCOPY NUMBER);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
データベースのターゲット表の名前。 ターゲット表は、 |
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 このパラメータは、 |
|
|
このパラメータでは、次のいずれかを指定します:
クラウド・ソース・ファイルURIのファイル名には、ワイルドカードおよび正規表現を使用できます。 クラウドのソース・ファイルURI このパラメータでは、ソース・ファイルURIのカンマ区切りリスト、または1つ以上のディレクトリとソース・ファイルを指定します。 正規表現を使用できるのは、
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は たとえば: URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 事前認証済リクエスト(PAR) URL 次のものに対して外部表を作成できます:
ディレクトリ 1つのディレクトリと1つ以上のファイル名を指定することも、ディレクトリとファイル名のカンマ区切りリストを使用することもできます。 ディレクトリを指定する形式は、 ワイルドカードを使用して、ディレクトリ内のファイル名を指定できます。 文字"*"は、複数の文字に対応するワイルドカードとして使用できます。文字"?"は、1文字に対応するワイルドカードとして使用できます。 例: 複数のディレクトリを指定するには、ディレクトリのカンマ区切りリストを使用します。例: 大/小文字を区別するディレクトリ名を指定するには、二重引用符を使用します。 例: 引用符文字を含めるには、2つの引用符を使用します。 例: |
|
|
ターゲット表が存在するスキーマの名前。 デフォルト値は、NULLです。この値は、ターゲット表がプロシージャを実行するユーザーと同じスキーマ内にあることを意味します。 |
|
|
ソース・ファイル内のフィールドとそのデータ型を識別します。 デフォルト値は、NULLです。この値は、フィールドとそのデータ型がターゲット表の定義によって決まることを意味します。 この引数の構文は、通常のOracle外部表の
|
|
|
ソース・ファイル、ログ・ファイルおよび不良ファイルの形式を示すオプション。 オプションのリストと値の指定方法は、「DBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。 AvroまたはParquetファイル・フォーマットのオプションについては、「AvroまたはParquetに対応するDBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。 |
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
使用上のノート
デフォルトのレコード・デリミタはdetected newlineです。 detected newlineを指定すると、DBMS_CLOUDは、レコード・デリミタとして使用する適切な改行文字を自動的に見つけようとします。 DBMS_CLOUDは、最初にWindowsの改行文字\r\nを検索します。 Windowsの改行文字が見つかると、それがプロシージャのすべてのファイルのレコード・デリミタとして使用されます。 Windowsの改行文字が見つからない場合、DBMS_CLOUDは、UNIX/Linuxの改行文字\nを検索し、見つかった場合は\nがプロシージャのすべてのファイルのレコード・デリミタとして使用されます。 ソース・ファイルで異なるレコード・デリミタの組合せが使用されている場合は、KUP-04020: found record longer than buffer size supportedなどのエラーが発生する可能性があります。 この場合、同じレコード・デリミタを使用するようにソース・ファイルを変更するか、同じレコード・デリミタを使用するソース・ファイルのみを指定する必要があります。
recorddelmiterフォーマット・オプションの詳細は、「DBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。
例
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'DEF_CRED_NAME',
username => 'user_name@oracle.com',
password => 'password'
);
END;
/
BEGIN
DBMS_CLOUD.COPY_DATA(
table_name =>'CHANNELS',
credential_name =>'DEF_CRED_NAME',
file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
format => json_object('delimiter' value ',')
);
END;
/
BEGIN
DBMS_CLOUD.COPY_DATA(
table_name => 'ORDERS',
schema_name => 'TEST_SCHEMA',
credential_name => 'DEF_CRED_NAME',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/orde[r]s.tbl.1'
format => json_object('ignoreblanklines' value TRUE,
'rejectlimit' value '0',
'dateformat' value 'yyyy-mm-dd',
'regexuri' value TRUE)
);
END;
/46.3.2.3 AvroまたはParquetファイルに対応するCOPY_DATAプロシージャ
formatパラメータのtypeを値avroまたはparquetに設定することで、クラウド内のAvroまたはParquetファイルあるいはディレクトリ内のファイルから既存のOracle Database表にデータをロードします。
テキスト・ファイルと同様に、データはソースのAvroまたはParquetファイルから既存の内部表にコピーされます。
構文
DBMS_CLOUD.COPY_DATA (
table_name IN VARCHAR2,
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB,
schema_name IN VARCHAR2 DEFAULT,
field_list IN CLOB DEFAULT,
format IN CLOB DEFAULT);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
データベースのターゲット表の名前。 ターゲット表は、 |
|
|
Cloud Object Storageにアクセスするための資格証明の名前。
|
|
|
このパラメータでは、ソース・ファイルURIのカンマ区切りリスト、または1つ以上のディレクトリとソース・ファイルを指定します。 クラウドのソース・ファイルURI クラウド・ソース・ファイルURIのファイル名には、ワイルドカードおよび正規表現を使用できます。 正規表現を使用できるのは、
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は たとえば: URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 ディレクトリ 1つのディレクトリと1つ以上のファイル名を指定することも、ディレクトリとファイル名のカンマ区切りリストを使用することもできます。 ディレクトリを指定する形式は、 ワイルドカードを使用して、ディレクトリ内のファイル名を指定できます。 文字"*"は、複数の文字に対応するワイルドカードとして使用できます。文字"?"は、1文字に対応するワイルドカードとして使用できます。 例: 複数のディレクトリを指定するには、ディレクトリのカンマ区切りリストを使用します。例: 大/小文字を区別するディレクトリ名を指定するには、二重引用符を使用します。 例: 引用符文字を含めるには、2つの引用符を使用します。 例: |
|
|
ターゲット表が存在するスキーマの名前。 デフォルト値は、NULLです。この値は、ターゲット表がプロシージャを実行するユーザーと同じスキーマ内にあることを意味します。 |
|
|
AvroまたはParquetファイルの場合は無視されます。 ソースのフィールドは、名前によって外部表の列と一致します。 ソースのデータ型は、外部表の列データ型に変換されます。 Parquetファイルに対するマッピングの詳細は、「DBMS_CLOUDパッケージのParquetからOracleデータ型へのマッピング」を参照してください。 Avroファイルに対するマッピングの詳細は、「DBMS_CLOUDパッケージのAvroからOracleデータ型へのマッピング」を参照してください。 |
|
|
ソース・ファイルの形式を示すオプション。 「AvroまたはParquet」ファイルでは、2つのオプションのみがサポートされています: 「DBMS_CLOUD ORCからOracleデータ型へのマッピングのパッケージ化」を参照してください。 |
使用上のノート
-
その他のデータ・ファイルと同様に、AvroとParquetのデータ・ロードにより、表
dba_load_operationsとuser_load_operationsで表示可能なログが生成されます。 ロード操作ごとに、ログが含まれている表を示すレコードがdba[user]_load_operationsに追加されます。このログ表では、ロードに関するサマリー情報が示されます。
-
AvroまたはParquetの場合、
formatのパラメータtypeが値avroまたはparquetに設定されていると、BADFILE_TABLE表は常に空になります。-
Parquetファイルの場合は、
PRIMARY KEY制約のエラーによってORAエラーがスローされます。 -
列のデータに変換エラーが発生した場合(たとえば、ターゲット列の大きさが変換後の値を保持するには不十分な場合)、その列の値は
NULLに設定されます。 これにより拒否されたレコードの生成がなくなります。
-
46.3.2.4 COPY_OBJECTプロシージャ
このプロシージャは、あるクラウド・オブジェクト・ストレージ・バケットまたはフォルダから別のクラウド・オブジェクト・ストレージ・バケットにオブジェクトをコピーします。
ソース・バケットまたはターゲット・フォルダは、同じまたは異なるクラウド・オブジェクト・ストア・プロバイダに配置できます。
ソースとターゲットが個別のオブジェクト・ストアにある場合、または同じクラウド・プロバイダを持つ異なるアカウントがある場合、ソースとターゲットのロケーションに個別の資格証明名を指定できます。
ターゲット資格証明名が指定されていない場合、ソース資格証明名はターゲットのロケーションでもデフォルトで使用されます。
構文
DBMS_CLOUD.COPY_OBJECT (
source_credential_name IN VARCHAR2 DEFAULT NULL,
source_object_uri IN VARCHAR2,
target_object_uri IN VARCHAR2,
target_credential_name IN VARCHAR2 DEFAULT NULL
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ソース・クラウド・オブジェクト・ストレージにアクセスするための資格証明の名前。
|
|
|
ソース・オブジェクト・ストレージ・バケットまたはフォルダのロケーションを指すURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ターゲット・オブジェクト・ストアのURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ターゲットのクラウド・オブジェクト・ストレージのロケーションにアクセスするための資格証明の名前。
|
例
BEGIN
DBMS_CLOUD.COPY_OBJECT (
source_credential_name => 'OCI_CRED',
source_object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
target_object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/
46.3.2.5 CREATE_EXTERNAL_PART_TABLEプロシージャ
このプロシージャは、クラウド内のファイルまたはディレクトリ内のファイルから外部パーティション表を作成します。 これにより、Oracle Databaseから外部データに対する問合せを実行できるようになります。
構文
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
table_name IN VARCHAR2,
credential_name IN VARCHAR2,
partitioning_clause IN CLOB,
column_list IN CLOB,
field_list IN CLOB DEFAULT,
format IN CLOB DEFAULT);
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
table_name IN VARCHAR2,
credential_name IN VARCHAR2,
file_uri_list IN VARCHAR2,
column_list IN CLOB,
field_list IN CLOB DEFAULT,
format IN CLOB DEFAULT);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部表の名前。 |
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 |
|
|
個別のパーティションの場所情報を含む、完全なパーティション化句を指定します。
|
|
|
このパラメータでは、次のいずれかを指定します:
クラウドのソース・ファイルURI クラウド・ソース・ファイルURIのファイル名には、ワイルドカードおよび正規表現を使用できます。 正規表現を使用できるのは、
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は このオプションは、オブジェクト・ストレージのファイルに作成された外部表でのみサポートされます。 たとえば: パラメータ URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 事前認証済リクエスト(PAR) URL 次のものに対して外部表を作成できます:
|
|
|
外部表の列名とデータ型のカンマ区切りリスト。 このパラメータには、
|
|
|
ソース・ファイル内のフィールドとそのデータ型を識別します。 デフォルト値は、NULLです。この値は、フィールドとそのデータ型がcolumn_listパラメータによって決まることを意味します。 この引数の構文は、通常のOracle外部表の |
|
|
フォーマット・オプション
データ・ファイルが構造化されておらず、 Hive形式に基づかないオブジェクト名の場合、 ソース・ファイルの形式を説明するすべての |
使用上のノート
-
partitioning_clauseパラメータとfile_uri_listパラメータの両方を使用してこのプロシージャをコールすることはできません。 -
Avro、ParquetまたはORCデータ・ファイルを含む構造化データ・ファイルでは、
column_listパラメータの指定はオプションです。column_listを指定しない場合、formatパラメータのpartition_columnsオプションには、nameとtypeの両方を含める必要があります。 -
CSVテキスト・ファイルなどの非構造化データ・ファイルでは、
column_listパラメータは必須です。 -
プロシージャ
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEでは、次のものを含むサポート対象クラウド・オブジェクト・ストレージ・サービスでパーティション化された外部ファイルをサポートしています。-
Oracle Cloud Infrastructureオブジェクト・ストレージ
-
Azure Blob Storage
-
Amazon S3
-
GitHubリポジトリ
詳細は、「DBMS_CLOUD URI形式」を参照してください。
-
-
プロシージャ
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEは、ローカル・ファイル・システムまたはネットワーク・ファイル・システム内のディレクトリ内の外部パーティション・ファイルをサポートします。 -
file_uri_listパラメータを指定してDBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEをコールする場合、クラウド・オブジェクト・ストアのファイル名で指定される列の型は、次のいずれかの型である必要があります。VARCHAR2(n) NUMBER(n) NUMBER(p,s) NUMBER DATE TIMESTAMP(9) -
デフォルトのレコード・デリミタは
detected newlineです。detected newlineを指定すると、DBMS_CLOUDは、レコード・デリミタとして使用する適切な改行文字を自動的に見つけようとします。DBMS_CLOUDは、最初にWindowsの改行文字\r\nを検索します。 Windowsの改行文字が見つかると、それがプロシージャのすべてのファイルのレコード・デリミタとして使用されます。 Windowsの改行文字が見つからない場合、DBMS_CLOUDは、UNIX/Linuxの改行文字\nを検索し、見つかった場合は\nがプロシージャのすべてのファイルのレコード・デリミタとして使用されます。 ソース・ファイルで異なるレコード・デリミタの組合せが使用されている場合は、KUP-04020: found record longer than buffer size supportedなどのエラーが発生する可能性があります。 この場合、同じレコード・デリミタを使用するようにソース・ファイルを変更するか、同じレコード・デリミタを使用するソース・ファイルのみを指定する必要があります。recorddelmiterフォーマット・オプションの詳細は、「DBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。 -
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEを使用して作成する外部パーティション表には、2つの非表示列file$pathおよびfile$nameが含まれます。 これらの列は、レコードの取得元ファイルの識別に役立ちます。-
file$path: オブジェクト名の先頭までのファイル・パス・テキストを指定します。 -
file$name: バケット名に続くすべてのテキストを含め、オブジェクト名を指定します。
-
例
partitioning_clauseパラメータを使用した例:
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
table_name =>'PET1',
credential_name =>'OBJ_STORE_CRED',
format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
column_list => 'col1 number, col2 number, col3 number',
partitioning_clause => 'partition by range (col1)
(partition p1 values less than (1000) location
( ''&base_URL//file_11.txt'')
,
partition p2 values less than (2000) location
( ''&base_URL/file_21.txt'')
,
partition p3 values less than (3000) location
( ''&base_URL/file_31.txt'')
)'
);
END;
/
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
table_name => 'PET',
format => json_object('delimiter'value ','),
column_list => 'name varchar2(20), gender varchar2(10), salary number',
partitioning_clause => 'partition by range (salary)
( -- Use test1.csv in the DEFAULT DIRECTORY DATA_PUMP_DIR
partition p1 values less than (100) LOCATION (''test1.csv''),
-- Use test2.csv in a specified directory MY_DIR
partition p2 values less than (300) DEFAULT DIRECTORY MY_DIR LOCATION (''test2.csv'') )' );
END;
/
非構造化データ・ファイルでfile_uri_listおよびcolumn_listパラメータを使用した例:
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
table_name => 'MYSALES',
credential_name => 'DEF_CRED_NAME',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.csv',
column_list => 'product varchar2(100), units number, country varchar2(100), year number, month varchar2(2)',
field_list => 'product, units', --[Because country, year and month are not in the file, they are not listed in the field list]
format => '{"type":"csv", "partition_columns":["country","year","month"]}');
END;
/
構造化データ・ファイルでcolumn_listパラメータを指定せずにfile_uri_listを使用した例:
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
table_name => 'MYSALES',
credential_name => 'DEF_CRED_NAME',
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
table_name => 'MYSALES',
credential_name => 'DEF_CRED_NAME',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.parquet',
format =>
json_object('type' value 'parquet', 'schema' value 'first',
'partition_columns' value
json_array(
json_object('name' value 'country', 'type' value 'varchar2(100)'),
json_object('name' value 'year', 'type' value 'number'),
json_object('name' value 'month', 'type' value 'varchar2(2)')
)
)
);
END;
/
46.3.2.6 CREATE_EXTERNAL_TABLEプロシージャ
このプロシージャでは、クラウド内のファイルに基づいて、またはディレクトリ内のファイルから外部表を作成します。 これにより、Oracle Databaseから外部データに対する問合せを実行できるようになります。
構文
DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
table_name IN VARCHAR2,
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB,
column_list IN CLOB,
field_list IN CLOB DEFAULT,
format IN CLOB DEFAULT);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部表の名前。 |
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 このパラメータは、 |
|
|
このパラメータでは、次のいずれかを指定します:
クラウドのソース・ファイルURI クラウド・ソース・ファイルURIのファイル名には、ワイルドカードおよび正規表現を使用できます。 正規表現を使用できるのは、
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は このオプションは、オブジェクト・ストレージのファイルに作成された外部表でのみサポートされます。 たとえば:
URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 事前認証済リクエスト(PAR) URL 次のものに対して外部表を作成できます:
ディレクトリ
1つのディレクトリと1つ以上のファイル名を指定することも、ディレクトリとファイル名のカンマ区切りリストを使用することもできます。 ディレクトリを指定する形式は、 ワイルドカードを使用して、ディレクトリ内のファイル名を指定できます。 文字"*"は、複数の文字に対応するワイルドカードとして使用できます。文字"?"は、1文字に対応するワイルドカードとして使用できます。 例: 複数のディレクトリを指定するには、ディレクトリのカンマ区切りリストを使用します。例: 大/小文字を区別するディレクトリ名を指定するには、二重引用符を使用します。 例: 引用符文字を含めるには、2つの引用符を使用します。 例: |
|
|
外部表の列名とデータ型のカンマ区切りリスト。 |
|
|
ソース・ファイル内のフィールドとそのデータ型を識別します。 デフォルト値は、NULLです。この値は、フィールドとそのデータ型が |
|
|
ソース・ファイルの形式を示すオプション。 オプションのリストと値の指定方法は、「DBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。 AvroまたはParquet形式のファイルについては、「AvroまたはParquetファイルに対応するCREATE_EXTERNAL_TABLEプロシージャ」を参照してください。 |
使用上のノート
-
プロシージャ
DBMS_CLOUD.CREATE_EXTERNAL_TABLEでは、次のものを含むサポート対象クラウド・オブジェクト・ストレージ・サービスでパーティション化された外部ファイルをサポートしています。-
Oracle Cloud Infrastructureオブジェクト・ストレージ
-
Azure Blob Storage
-
Amazon S3
-
GitHubリポジトリ
資格証明は表レベルのプロパティであるため、外部ファイルは同じオブジェクト・ストアに存在している必要があります。
詳細は、「DBMS_CLOUD URI形式」を参照してください。
-
-
デフォルトのレコード・デリミタは
detected newlineです。detected newlineを指定すると、DBMS_CLOUDは、レコード・デリミタとして使用する適切な改行文字を自動的に見つけようとします。DBMS_CLOUDは、最初にWindowsの改行文字\r\nを検索します。 Windowsの改行文字が見つかると、それがプロシージャのすべてのファイルのレコード・デリミタとして使用されます。 Windowsの改行文字が見つからない場合、DBMS_CLOUDは、UNIX/Linuxの改行文字\nを検索し、見つかった場合は\nがプロシージャのすべてのファイルのレコード・デリミタとして使用されます。 ソース・ファイルで異なるレコード・デリミタの組合せが使用されている場合は、KUP-04020: found record longer than buffer size supportedなどのエラーが発生する可能性があります。 この場合、同じレコード・デリミタを使用するようにソース・ファイルを変更するか、同じレコード・デリミタを使用するソース・ファイルのみを指定する必要があります。recorddelimiterフォーマット・オプションの詳細は、「DBMS_CLOUDパッケージ形式オプション」を参照してください。
例
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
table_name =>'WEATHER_REPORT_DOUBLE_DATE',
credential_name =>'OBJ_STORE_CRED',
file_uri_list =>'&base_URL/Charlotte_NC_Weather_History_Double_Dates.csv',
format => json_object('type' value 'csv', 'skipheaders' value '1'),
field_list => 'REPORT_DATE DATE''mm/dd/yy'',
REPORT_DATE_COPY DATE ''yyyy-mm-dd'',
ACTUAL_MEAN_TEMP,
ACTUAL_MIN_TEMP,
ACTUAL_MAX_TEMP,
AVERAGE_MIN_TEMP,
AVERAGE_MAX_TEMP,
AVERAGE_PRECIPITATION',
column_list => 'REPORT_DATE DATE,
REPORT_DATE_COPY DATE,
ACTUAL_MEAN_TEMP NUMBER,
ACTUAL_MIN_TEMP NUMBER,
ACTUAL_MAX_TEMP NUMBER,
AVERAGE_MIN_TEMP NUMBER,
AVERAGE_MAX_TEMP NUMBER,
AVERAGE_PRECIPITATION NUMBER');
END;
/
SELECT * FROM WEATHER_REPORT_DOUBLE_DATE where
actual_mean_temp > 69 and actual_mean_temp < 74
46.3.2.7 Apache IcebergのCREATE_EXTERNAL_TABLEプロシージャ
このプロシージャは、サポートされている構成の「Apache Iceberg」表の外部表を作成します。
サポートされている構成の詳細は、「Apache Iceberg表の問合せについて」を参照してください
構文
DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
table_name IN VARCHAR2,
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB,
column_list IN CLOB DEFAULT NULL,
field_list IN CLOB DEFAULT NULL,
format IN CLOB DEFAULT NULL
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部表の名前。 |
|
|
データ・ファイル、メタデータ・ファイルおよびIcebergカタログ(使用する場合)へのアクセスに使用される資格証明の名前。 AWSおよびOCI構成の場合、資格証明は「CREATE_CREDENTIALプロシージャ」の説明に従って作成する必要があります。 現在、AWS Amazonリソース名(ARN)資格証明はサポートされていません。 |
|
|
Icebergカタログが指定されている場合、NULLである必要があります(次のformatパラメータを参照)。 アイスバーグ・カタログを使用しない場合は、file_uri_listにアイスバーグ・メタデータ・ファイルへのURIが含まれている必要があります。
|
|
|
列名および型はIcebergメタデータから自動的に導出されるため、NULLである必要があります。 列名は、基礎となるデータ・ファイル(Parquet、Avro、ORC)で見つかった名前と一致します。 Oracleデータ型は、Icebergデータ型とParquetデータ型、Avroデータ型およびORCデータ型の間のParquet/Avro/ORCマッピングを使用して導出されます。 したがって、ユーザーは |
|
|
列名およびデータ型はIcebergメタデータから自動的に導出されるため、NULLである必要があります。 |
|
|
例および詳細情報: 次の例を参照してください。「OCIデータ・フロー・サンプルでのIcebergのサポート」、「DBMS_CLOUD URI形式」。 |
例A WSAWS Glueカタログを使用したIceberg表
AWS Glueカタログを使用して「AWS Iceberg」表に表を作成する場合のformatパラメータは、次のとおりです:
format => json_object('access_protocol' value
json_object('protocol_type' value 'iceberg',
'protocol_config' value
json_object('iceberg_catalog_type' value 'aws_glue',
'iceberg_glue_region' value 'glue region',
'iceberg_table_path' value 'database_name.table_name')));
access_protocolパラメータには、次の2つの要素を持つJSONオブジェクトが含まれます:
protocol_type: 'iceberg'である必要がありますprotocol_config: アイスバーグ・カタログの詳細を指定するネストされたJSONオブジェクト。iceberg_catalog_type:'aws_glue'である必要がありますiceberg_glue_region: カタログ・リージョン('us-west-1'など)iceberg_table_path:glue database.glue table nameパス。
例A WSメタデータ・ファイルURIを使用したIceberg表
formatパラメータは次のとおりです:format => json_object('access_protocol' value
json_object('protocol_type' value 'iceberg')例O CIHadoopCatalogカタログを使用したIceberg表
formatパラメータは、次のとおりです:format => json_object('access_protocol' value
json_object('protocol_type' value 'iceberg',
'protocol_config' value
json_object('iceberg_catalog_type' value 'hadoop',
'iceberg_warehouse' value '<OCI folder URI>',
'iceberg_table_path' value 'database_name.table_name')));access_protocolパラメータには、次の2つの要素を持つJSONオブジェクトが含まれます:
protocol_type:'iceberg'である必要がありますprotocol_config: アイスバーグ・カタログの詳細を指定するネストされたJSONオブジェクト。iceberg_catalog_type:'hadoop'である必要がありますiceberg_warehouse: 表の生成時に使用されるウェアハウス・ディレクトリ・パス(ネイティブURI形式)。iceberg_table_path: 表の作成時に使用されるdatabase_name.table nameパス。
例O CIメタデータ・ファイルのURIを使用したIceberg表
formatパラメータは次のとおりです:format => json_object('access_protocol' value
json_object('protocol_type' value 'iceberg')access_protocolパラメータには、次のように1つの要素を持つJSONオブジェクトが含まれます:
protocol_type:'iceberg'である必要があります
46.3.2.8 AvroまたはParquetファイルに対応するCREATE_EXTERNAL_TABLEプロシージャ
formatパラメータtypeを値「avroまたはparquet」に設定したこのプロシージャは、クラウドまたはディレクトリ内の「AvroまたはParquet」フォーマット・ファイルを使用して外部表を作成します。
これにより、Oracle Databaseから外部データに対する問合せを実行できるようになります。
構文
DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
table_name IN VARCHAR2,
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB,
column_list IN CLOB,
field_list IN CLOB DEFAULT,
format IN CLOB DEFAULT);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部表の名前。 |
|
|
Cloud Object Storageにアクセスするための資格証明の名前。
|
|
|
このパラメータでは、ソース・ファイルURIのカンマ区切りリスト、または1つ以上のディレクトリとソース・ファイルを指定します。 クラウドのソース・ファイルURI クラウド・ソース・ファイルURIのファイル名には、ワイルドカードおよび正規表現を使用できます。 正規表現を使用できるのは、
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は このオプションは、オブジェクト・ストレージのファイルに作成された外部表でのみサポートされます。 たとえば: URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 ディレクトリ 1つのディレクトリと1つ以上のファイル名を指定することも、ディレクトリとファイル名のカンマ区切りリストを使用することもできます。 ディレクトリを指定する形式は、 ワイルドカードを使用して、ディレクトリ内のファイル名を指定できます。 文字"*"は、複数の文字に対応するワイルドカードとして使用できます。文字"?"は、1文字に対応するワイルドカードとして使用できます。 例: 複数のディレクトリを指定するには、ディレクトリのカンマ区切りリストを使用します。例: 大/小文字を区別するディレクトリ名を指定するには、二重引用符を使用します。 例: 引用符文字を含めるには、2つの引用符を使用します。 例: |
|
|
(オプション)このフィールドを指定すると、スキーマ、列およびデータ型の自動導出を指定する AvroまたはParquetソースに対して Parquetファイルの詳細は、「DBMS_CLOUDパッケージのParquetからOracleデータ型へのマッピング」を参照してください。 Avroファイルの詳細は、「DBMS_CLOUDパッケージのAvroからOracleデータ型へのマッピング」を参照してください。 |
|
|
AvroまたはParquetファイルの場合は無視されます。 ソースのフィールドは、名前によって外部表の列と一致します。 ソースのデータ型は、外部表の列データ型に変換されます。 Parquetファイルの詳細は、「DBMS_CLOUDパッケージのParquetからOracleデータ型へのマッピング」を参照してください。 Avroファイルの詳細は、「DBMS_CLOUDパッケージのAvroからOracleデータ型へのマッピング」を参照してください。 |
|
|
「AvroまたはParquet」 |
Avroの例
format => '{"type":"avro", "schema": "all"}'
format => json_object('type' value 'avro', 'schema' value 'first')
Parquetの例
format => '{"type":"parquet", "schema": "all"}'format => json_object('type' value 'parquet', 'schema' value 'first')AvroまたはParquet列名のOracle列名へのマッピング
Oracle SQLの列名のマッピング方法と列名の変換の使用方法の詳細は、「DBMS_CLOUDパッケージのAvroおよびParquetからOracle列名へのマッピング」を参照してください。
46.3.2.9 CREATE_HYBRID_PART_TABLEプロシージャ
このプロシージャでは、ハイブリッド・パーティション表を作成します。 これにより、クラウドのデータベース・オブジェクトおよびファイル、またはディレクトリ内のデータベース・オブジェクトおよびファイルを使用して、Oracle Databaseのハイブリッド・パーティション・データに対して問合せを実行できます。
構文
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE (
table_name IN VARCHAR2,
credential_name IN VARCHAR2,
partitioning_clause IN CLOB,
column_list IN CLOB,
field_list IN CLOB DEFAULT,
format IN CLOB DEFAULT);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部表の名前。 |
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 |
|
|
個別のパーティションの場所情報を含む、完全なパーティション化句を指定します。 ディレクトリを使用するには、パーティション化句で クラウド・ソース・ファイルURIのファイル名には、ワイルドカードおよび正規表現を使用できます。 正規表現を使用できるのは、
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は たとえば: 次のように、事前認証済リクエスト(PAR) URLを使用して外部表を作成できます:
|
|
|
外部表の列名とデータ型のカンマ区切りリスト。 |
|
|
ソース・ファイル内のフィールドとそのデータ型を識別します。 デフォルト値は、NULLです。この値は、フィールドとそのデータ型がcolumn_listパラメータによって決まることを意味します。 この引数の構文は、通常のOracle外部表の |
|
|
ソース・ファイルの形式を示すオプション。 オプションのリストと値の指定方法は、「DBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。 |
使用上のノート
-
プロシージャ
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEでは、次のものを含むサポート対象クラウド・オブジェクト・ストレージ・サービスでパーティション化された外部ファイルをサポートしています。-
Oracle Cloud Infrastructureオブジェクト・ストレージ
-
Azure Blob Storage
-
Amazon S3
-
GitHubリポジトリ
資格証明は表レベルのプロパティであるため、外部ファイルは同じオブジェクト・ストアに存在している必要があります。
詳細は、「DBMS_CLOUD URI形式」を参照してください。
-
-
プロシージャ
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEは、ローカル・ファイル・システムまたはネットワーク・ファイル・システム内のディレクトリ内のハイブリッド・パーティション・ファイルをサポートします。 -
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEを使用して作成する外部パーティション表には、2つの非表示列file$pathおよびfile$nameが含まれます。 これらの列は、レコードの取得元ファイルの識別に役立ちます。-
file$path: オブジェクト名の先頭までのファイル・パス・テキストを指定します。 -
file$name: バケット名に続くすべてのテキストを含め、オブジェクト名を指定します。
-
例
BEGIN
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
table_name =>'HPT1',
credential_name =>'OBJ_STORE_CRED',
format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
column_list => 'col1 number, col2 number, col3 number',
partitioning_clause => 'partition by range (col1)
(partition p1 values less than (1000) external location
( ''&base_URL/file_11.txt'')
,
partition p2 values less than (2000) external location
( ''&base_URL/file_21.txt'')
,
partition p3 values less than (3000)
)'
);
END;
/
BEGIN
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
table_name => 'HPT1',
format => json_object('delimiter'value ',', 'recorddelimiter'value 'newline'),
column_list => 'NAME VARCHAR2(30), GENDER VARCHAR2(10), BALANCE number',
partitioning_clause => 'partition by range (B 2 ALANCE)
(partition p1 values less than (1000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Scott_male_1000.csv''),
partition p2 values less than (2000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Mary_female_3000.csv''),
partition p3 values less than (3000))' );
END;
/46.3.2.10 DELETE_ALL_OPERATIONSプロシージャ
このプロシージャでは、スキーマ内のuser_load_operations表に記録されているすべてのデータ・ロード操作をクリアするか、typeパラメータで指定したタイプのすべてのデータ・ロード操作をクリアします。
構文
DBMS_CLOUD.DELETE_ALL_OPERATIONS (
type IN VARCHAR DEFAULT NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
削除する操作のタイプを指定します。 Typeの値は、 |
使用上のノート
-
DBMS_CLOUD.DELETE_ALL_OPERATIONSでは、現在実行中の操作(「実行中」ステータスの操作)は削除されません。
46.3.2.11 DELETE_FILEプロシージャ
このプロシージャでは、Oracle Databaseの指定したディレクトリから指定したファイルを削除します。
構文
DBMS_CLOUD.DELETE_FILE (
directory_name IN VARCHAR2,
file_name IN VARCHAR2); パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Oracle Databaseインスタンスにあるディレクトリの名前。 |
|
|
削除するファイルの名前。 |
ノート:
DBMS_CLOUD.DELETE_FILEを実行するには、そのユーザーに対象ファイルを格納しているディレクトリに対する書込み権限を付与する必要があります。 たとえば、次のコマンドをADMINとして実行し、db_userに書込み権限を付与します。 GRANT WRITE ON DIRECTORY data_pump_dir TO db_user;例
BEGIN
DBMS_CLOUD.DELETE_FILE(
directory_name => 'DATA_PUMP_DIR',
file_name => 'exp1.dmp' );
END;
/
46.3.2.12 DELETE_OBJECTプロシージャ
このプロシージャでは、オブジェクト・ストアの指定したオブジェクトを削除します。
構文
DBMS_CLOUD.DELETE_OBJECT (
credential_name IN VARCHAR2,
object_uri IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 |
object_uri |
削除するオブジェクトのオブジェクトまたはファイルURI。 URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
force |
オブジェクトが存在しない場合、エラーを無視して報告しません。 有効な値は |
例
BEGIN
DBMS_CLOUD.DELETE_OBJECT(
credential_name => 'DEF_CRED_NAME',
object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp' );
END;
/
46.3.2.13 DELETE_OPERATIONプロシージャ
このプロシージャは、スキーマのuser_load_operationsまたはdba_load_operations表に記録された、指定された操作IDのデータ・ロード・エントリをクリアします。
構文
DBMS_CLOUD.DELETE_OPERATION (
id IN NUMBER);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
削除するログ・ファイル・エントリに関連付けられた操作IDを指定します。 |
例
SELECT id FROM user_load_operations WHERE type LIKE '%BAD%';
EXEC DBMS_CLOUD.DELETE_OPERATION(id);
46.3.2.14 EXPORT_DATAプロシージャ
このプロシージャは、format typeパラメータに基づいて、CSV、JSONまたはXML形式のテキスト・ファイルとしてクラウドまたはディレクトリのロケーションにファイルをエクスポートするか、またはORACLE_DATAPUMPアクセス・ドライバを使用してOracle Datapumpダンプ・ファイルにデータを書き込みます。
構文
DBMS_CLOUD.EXPORT_DATA (
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB,
format IN CLOB,
query IN CLOB);
DBMS_CLOUD.EXPORT_DATA (
credential_name IN VARCHAR2 DEFAULT NULL,
file_uri_list IN CLOB DEFAULT NULL,
format IN CLOB DEFAULT NULL,
query IN CLOB DEFAULT NULL,
operation_id OUT NOCOPY NUMBER);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 資格証明パラメータが含まれていない場合、ディレクトリへの出力を指定します。 |
|
|
formatパラメータの値、および資格証明パラメータを含めるかどうかに応じて、様々な形式があります:
URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
エクスポート形式オプションを提供するJSON文字列。 サポートされるオプションは次のとおりです。
|
|
|
このパラメータを使用して、必要なデータのみがエクスポートされるように SELECT warehouse_id, quantity FROM inventories
たとえば: SELECT JSON_OBJECT(* RETURNING CLOB) from(SELECT warehouse_id, quantity FROM inventories) |
|
|
このパラメータを使用して、 |
使用上のノート:
-
指定する
queryパラメータ値は、結合または副問合せを含む問合せなど、必要に応じて拡張問合せにできます。 -
指定したフォーマット・パラメータに応じて、
DBMS_CLOUD.EXPORT_DATAは、指定した問合せの結果をクラウド・オブジェクト・ストアまたはディレクトリのロケーションに次のいずれかの形式で出力します:-
CSV、JSONまたはXMLファイル。
CSV、JSONまたはXML出力ファイルでの
DBMS_CLOUD.EXPORT_DATAの使用の詳細は、「オブジェクト・ストアへのデータのテキストとしてのエクスポート」および「ディレクトリへのデータのエクスポート」を参照してください。 -
ORACLE_DATAPUMPアクセス・ドライバを使用したダンプ・ファイルへのデータの書込み。
-
-
CSV、JSONまたはXML出力の場合、生成されたファイルに10MBのデータが含まれていると、新しい出力ファイルが作成されます。 ただし、結果データが10MB未満の場合は、データベース・サービスおよびAutonomous DatabaseインスタンスのECPU (OCPUを使用している場合のOCPU)の数に応じて、複数の出力ファイルが存在する場合があります。
詳細は、「テキスト出力のファイル・ネーミング(CSV、JSON、ParquetまたはXML)」を参照してください。
デフォルトの出力ファイルのチャンク・サイズは、CSV、JSONまたはXMLの場合は10MBです。 この値は、
formatパラメータのmaxfilesizeオプションを使用して変更できます。 詳細は、「EXPORT_DATAのDBMS_CLOUDパッケージ形式オプション」を参照してください。
ORACLE_DATAPUMP出力の使用上のノート(formatパラメータtypeオプションdatapumpを指定したDBMS_CLOUD.EXPORT_DATA):
-
EXPORT_DATAは、デフォルトのロギング・ディレクトリとしてDATA_PUMP_DIRを使用します。 そのため、ORACLE_DATAPUMP出力を使用する場合は、DATA_PUMP_DIRに対する書込み権限が必要です。 -
formatパラメータtypeオプションdatapumpを指定したDBMS_CLOUD.EXPORT_DATAを使用したOracle Databaseエクスポートでは、Oracle Cloud Infrastructure Object Storage、Oracle Cloud Infrastructure Object Storage Classicオブジェクト・ストアまたはディレクトリ出力のみがサポートされます。 -
Oracle Data Pumpでは、各ダンプ・ファイルの部分を小さなチャンクに分割してアップロードを高速化します。 Oracle Cloud Infrastructure Object Storageコンソールには、エクスポートするダンプ・ファイル部分ごとに複数のファイルが表示されます。 実際のダンプファイルのサイズはゼロ(0)、関連するファイル・チャンクは10mb以下と表示されます。 たとえば:
Oracle Cloud InfrastructureコンソールまたはOracle Cloud Infrastructure CLIを使用してゼロ・バイト・ダンプ・ファイルをダウンロードしても、完全なダンプ・ファイルは得られません。 オブジェクト・ストアから完全なダンプ・ファイルをダウンロードするには、curlなどのSwiftをサポートするツールを使用して、ユーザー・ログインおよびSwift認証トークンを指定します。exp01.dmp exp01.dmp_aaaaaa exp02.dmp exp02.dmp_aaaaaacurl -O -v -X GET -u 'user1@example.com:auth_token' \ https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp値'
datapump'のformatパラメータtypeをサポートするDBMS_CLOUDプロシージャを使用してファイルをインポートする場合、プライマリ・ファイル名のみを指定する必要があります。datapump形式タイプをサポートするプロシージャは、チャンクを自動的に検出してダウンロードします。DBMS_CLOUD.DELETE_OBJECTを使用すると、プロシージャによってプライマリ・ファイルが削除されると、チャンクが自動的に検出され、削除されます。 -
DBMS_CLOUD.EXPORT_DATAプロシージャは、次のように、指定したfile_uri_list値からダンプ・ファイルを作成します:-
より多くのファイルが必要になると、このプロシージャは
file_uri_listから追加のファイルを作成します。 -
このプロシージャはファイルを上書きしません。
file_uri_listにダンプ・ファイルが存在する場合、DBMS_CLOUD.EXPORT_DATAはエラーを報告します。 -
DBMS_CLOUD.EXPORT_DATAではバケットは作成されません。
-
-
DBMS_CLOUD.EXPORT_DATAが生成するダンプ・ファイルの数は、プロシージャの実行時に決定されます。 生成されるダンプ・ファイルの数は、file_uri_listパラメータで指定するファイル名の数によって異なります。 -
DBMS_CLOUD.EXPORT_DATAで作成したダンプ・ファイルは、Oracle Data Pumpimpdpを使用してインポートできません。 データベースに応じて、これらのファイルを次のように使用できます:-
Oracle Databaseインスタンスでは、値'
datapump'を持つformatパラメータtypeをサポートするDBMS_CLOUDプロシージャでダンプ・ファイルを使用できます。DBMS_CLOUD.COPY_DATAを使用してダンプ・ファイルをインポートすることも、DBMS_CLOUD.CREATE_EXTERNAL_TABLEをコールして外部表を作成することもできます。 -
他のOracle Databaseでは、
ORACLE_DATAPUMPアクセス・ドライバを使用して、プロシージャDBMS_CLOUD.EXPORT_DATAで作成されたダンプ・ファイルをインポートできます。
-
-
指定する
queryパラメータ値は、結合または副問合せを含む問合せなど、必要に応じて拡張問合せにできます。
ディレクトリへの出力でのDBMS_CLOUD.EXPORT_DATAの使用上のノート
-
指定されたディレクトリが存在している必要があり、
ADMINユーザーとしてログインしているか、ディレクトリへのWRITEアクセス権を持っている必要があります。 -
DBMS_CLOUD.EXPORT_DATAではディレクトリは作成されません。 -
このプロシージャはファイルを上書きしません。 たとえば、
file_uri_listにダンプ・ファイルが存在する場合、DBMS_CLOUD.EXPORT_DATAは次のようなエラーを報告します:ORA-31641: unable to create dump file "/u02/exports/123.dmp" ORA-27038: created file already exists
例
次の例は、値がdatapumpのtypeパラメータ形式のDBMS_CLOUD.EXPORT_DATAを示しています:
BEGIN
DBMS_CLOUD.EXPORT_DATA(
credential_name =>'OBJ_STORE_CRED',
file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp',
format => json_object('type' value 'datapump', 'compression' value 'basic', 'version' value 'latest'),
query => 'SELECT warehouse_id, quantity FROM inventories'
);
END;
/
この例では、namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。
次の例は、値がjsonのtypeパラメータ形式のDBMS_CLOUD.EXPORT_DATAを示しています:
BEGIN
DBMS_CLOUD.EXPORT_DATA(
credential_name => 'OBJ_STORE_CRED',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.json',
query => 'SELECT * FROM DEPT',
format => JSON_OBJECT('type' value 'json', 'compression' value 'gzip'));
);
END;
/
次の例は、値がxmlのtypeパラメータ形式のDBMS_CLOUD.EXPORT_DATAを示しています:
BEGIN
DBMS_CLOUD.EXPORT_DATA(
credential_name => 'OBJ_STORE_CRED',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.xml',
query => 'SELECT * FROM DEPT',
format => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip'));
);
END;
/次の例は、値がcsvのtypeパラメータ形式のDBMS_CLOUD.EXPORT_DATAを示しています:
BEGIN
DBMS_CLOUD.EXPORT_DATA(
credential_name => 'OBJ_STORE_CRED',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp.csv',
query => 'SELECT * FROM DEPT',
format => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip', 'header' value true, 'encryption' value ('user_defined_function' value 'ADMIN.decryption_callback')));
);
END;
/ 次の例は、値がdatapumpのtypeパラメータを使用して、ディレクトリのロケーションにデータをエクスポートするDBMS_CLOUD.EXPORT_DATAを示しています:
BEGIN
DBMS_CLOUD.EXPORT_DATA(
file_uri_list => 'export_dir:sales.dmp',
format => json_object('type' value 'datapump'),
query => 'SELECT * FROM sales'
);
END;
/
46.3.2.15 GET_OBJECTプロシージャ/ファンクション
このプロシージャはオーバーロードされています。 プロシージャ形式では、Cloud Object Storageからオブジェクトを読み取り、そのオブジェクトをOracle Databaseにコピーします。 ファンクション形式では、Cloud Object Storageからオブジェクトを読み取り、BLOBをOracle Databaseに返します。
構文
DBMS_CLOUD.GET_OBJECT (
credential_name IN VARCHAR2,
object_uri IN VARCHAR2,
directory_name IN VARCHAR2,
file_name IN VARCHAR2 DEFAULT NULL,
startoffset IN NUMBER DEFAULT 0,
endoffset IN NUMBER DEFAULT 0,
compression IN VARCHAR2 DEFAULT NULL);
DBMS_CLOUD.GET_OBJECT(
credential_name IN VARCHAR2 DEFAULT NULL,
object_uri IN VARCHAR2,
startoffset IN NUMBER DEFAULT 0,
endoffset IN NUMBER DEFAULT 0,
compression IN VARCHAR2 DEFAULT NULL)
RETURN BLOB;パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 |
|
|
オブジェクトまたはファイルURI。 URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
データベースにあるディレクトリの名前。 脚注 1次のように、事前認証済リクエスト(PAR) URLを使用して外部表を作成できます:
|
|
|
作成するファイルの名前を指定します。 ファイル名の指定がない場合、ファイル名は |
startoffset |
プロシージャが読取りを開始する場所のオフセット(バイト単位)。 |
endoffset |
プロシージャが読取りを終了する場所のオフセット(バイト単位)。 |
|
|
オブジェクトの格納に使用する圧縮を指定します。 |
脚注1
ノート:
DBMS_CLOUD.GET_OBJECTを実行するには、ディレクトリに対するWRITE権限をそのユーザーに付与する必要があります。 たとえば、db_userに書込み権限を付与するには、権限のあるユーザーとして次のコマンドを実行します:
GRANT WRITE ON DIRECTORY data_pump_dir TO db_user;
戻り値
ファンクション形式では、オブジェクト・ストアから読み取り、DBMS_CLOUD.GET_OBJECTはBLOBを戻します。
例
BEGIN
DBMS_CLOUD.GET_OBJECT(
credential_name => 'OBJ_STORE_CRED',
object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt',
directory_name => 'DATA_PUMP_DIR');
END;
/
オブジェクト・ストア内のファイルから文字データを読み取るには:
SELECT to_clob(
DBMS_CLOUD.GET_OBJECT(
credential_name => 'OBJ_STORE_CRED',
object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt'))
FROM DUAL;
オブジェクト・ストア内に格納されているイメージをデータベース内のBLOBに追加するには:
DECLARE
l_blob BLOB := NULL;
BEGIN
l_blob := DBMS_CLOUD.GET_OBJECT(
credential_name => 'OBJ_STORE_CRED',
object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/MyImage.gif' );
END;
/
この例では、namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。
46.3.2.16 LIST_FILESファンクション
このファンクションでは、指定されたディレクトリにあるファイルをリストします。 結果には、ファイル名とファイルに関する追加のメタデータ(バイト単位のファイル・サイズ、作成タイムスタンプ、最終変更タイムスタンプなど)が含まれます。
構文
DBMS_CLOUD.LIST_FILES (
directory_name IN VARCHAR2)
RETURN TABLE;
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
データベースにあるディレクトリの名前。 |
使用上のノート
-
DBMS_CLOUD.LIST_FILESは、Oracle File System (OFS)またはデータベース・ファイル・システム(DBFS)のファイル・システムへのディレクトリ・オブジェクト・マッピングでのみサポートされます。 -
DBMS_CLOUD.LIST_FILESを実行するには、そのユーザーにそのディレクトリに対する読取り権限を付与する必要があります。 たとえば、次のコマンドをADMINとして実行し、db_userに読取り権限を付与します。GRANT READ ON DIRECTORY data_pump_dir TO db_user; -
これは、戻り値のタイプが
DBMS_CLOUD_TYPES.list_object_ret_tのパイプライン・テーブル・ファンクションです。 -
DBMS_CLOUD.LIST_FILESはチェックサム値を取得せず、このフィールドに対してNULLを返します。
例
これは、各ファイルの行を返すパイプライン関数です。 たとえば、このファンクションを使用するには、次の問合せを使用します。
SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');
OBJECT_NAME BYTES CHECKSUM CREATED LAST_MODIFIED
------------ ---------- ---------- --------------------- ---------------------
cwallet.sso 2965 2018-12-12T18:10:47Z 2019-11-23T06:36:54Z
46.3.2.17 LIST_OBJECTSファンクション
このファンクションでは、オブジェクト・ストア内の指定された場所にあるオブジェクトをリストします。 結果には、オブジェクト名とオブジェクトに関する追加のメタデータ(サイズ、チェックサム、作成タイムスタンプ、最終変更タイムスタンプなど)が含まれます。
構文
DBMS_CLOUD.LIST_OBJECTS (
credential_name IN VARCHAR2,
location_uri IN VARCHAR2)
RETURN TABLE;
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 |
location_uri |
オブジェクトまたはファイルURI。 URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
使用上のノート
-
オブジェクト・ストアの機能によって、
DBMS_CLOUD.LIST_OBJECTSが特定の属性の値を返さないことがあります。その場合、フィールドの戻り値はNULLになります。サポートされているすべてのオブジェクト・ストアは、
OBJECT_NAME、BYTESおよびCHECKSUMフィールドの戻り値を返します。次の表に、オブジェクト・ストアごとのフィールド
CREATEDおよびLAST_MODIFIEDのサポートを示します。オブジェクト・ストア CREATEDLAST_MODIFIEDOracle Cloud Infrastructure Native タイムスタンプが戻されます タイムスタンプが戻されます Oracle Cloud Infrastructure Swift NULLが戻されますタイムスタンプが戻されます Oracle Cloud Infrastructure Classic NULLが戻されますタイムスタンプが戻されます Amazon S3 NULLが戻されますタイムスタンプが戻されます Azure タイムスタンプが戻されます タイムスタンプが戻されます GitHubリポジトリ -
チェックサム値は、MD5チェックサムです。 これは、オブジェクトの内容に対して計算される32文字の16進数です。
-
これは、戻り値のタイプが
DBMS_CLOUD_TYPES.list_object_ret_tのパイプライン・テーブル・ファンクションです。
例
これは、オブジェクトごとの行を返すパイプライン関数です。 たとえば、このファンクションを使用するには、次の問合せを使用します。
SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('OBJ_STORE_CRED',
'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/');
OBJECT_NAME BYTES CHECKSUM CREATED LAST_MODIFIED
------------ ---------- -------------------------------- --------------------- --------------------
cwallet.sso 2965 2339a2731ba24a837b26d344d643dc07 2019-11-23T06:36:54Z
この例では、namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。
46.3.2.18 MOVE_OBJECTプロシージャ
このプロシージャは、あるクラウド・オブジェクト・ストレージ・バケットまたはフォルダから別のクラウド・オブジェクト・ストレージ・バケットにオブジェクトを移動します。
ソース・バケットまたはターゲット・フォルダは、同じまたは異なるクラウド・オブジェクト・ストア・プロバイダに配置できます。
ソースとターゲットが個別のオブジェクト・ストアにある場合、または同じクラウド・プロバイダを持つ異なるアカウントがある場合、ソースとターゲットのロケーションに個別の資格証明名を指定できます。
ターゲット資格証明名が指定されていない場合、ソース資格証明名はターゲットのロケーションでもデフォルトで使用されます。
構文
DBMS_CLOUD.MOVE_OBJECT (
source_credential_name IN VARCHAR2 DEFAULT NULL,
source_object_uri IN VARCHAR2,
target_object_uri IN VARCHAR2,
target_credential_name IN VARCHAR2 DEFAULT NULL
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ソース・クラウド・オブジェクト・ストレージにアクセスするための資格証明の名前。
|
|
|
ソース・オブジェクト・ストレージ・バケットまたはフォルダのロケーションを指すURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ターゲット・オブジェクト・ストレージ・バケットまたはフォルダのURIを指定します。このURIでは、ファイルを移動する必要があります。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ターゲットのクラウド・オブジェクト・ストレージのロケーションにアクセスするための資格証明の名前。
|
例
BEGIN
DBMS_CLOUD.MOVE_OBJECT (
source_credential_name => 'OCI_CRED',
source_object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
target_object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/
46.3.2.19 PUT_OBJECTプロシージャ
このプロシージャはオーバーロードされています。 このプロシージャには、Oracle DatabaseからCloud Object Storageにファイルをコピーする形式があります。 また、このプロシージャには、Oracle DatabaseからCloud Object StorageにBLOBをコピーする形式もあります。
構文
DBMS_CLOUD.PUT_OBJECT (
credential_name IN VARCHAR2,
object_uri IN VARCHAR2,
directory_name IN VARCHAR2,
file_name IN VARCHAR2
compression IN VARCHAR2 DEFAULT NULL);
DBMS_CLOUD.PUT_OBJECT (
credential_name IN VARCHAR2,
object_uri IN VARCHAR2,
contents IN BLOB
compression IN VARCHAR2 DEFAULT NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。 |
|
|
オブジェクトまたはファイルURI。 URIの形式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
Oracle Databaseにあるディレクトリの名前。 脚注 2 |
|
|
Oracle Databaseからクラウド・オブジェクト・ストレージにコピーする |
|
|
指定したディレクトリ内のファイルの名前。 |
|
|
オブジェクトの格納に使用する圧縮を指定します。 デフォルト値: |
脚注2
ノート:
DBMS_CLOUD.PUT_OBJECTを実行するには、そのユーザーにそのディレクトリに対する読取り権限を付与する必要があります。 たとえば、db_userに読取り権限を付与するには、特権ユーザーとして次のコマンドを実行します:
GRANT READ ON DIRECTORY data_pump_dir TO db_user;
例
データベース内処理後にBLOBデータを処理して、そのデータをオブジェクト・ストアのファイルに直接格納するには:
DECLARE
my_blob_data BLOB;
BEGIN
/* Some processing producing BLOB data and populating my_blob_data */
DBMS_CLOUD.PUT_OBJECT(
credential_name => 'OBJ_STORE_CRED',
object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/my_new_file',
contents => my_blob_data));
END;
/
使用上のノート
Cloud Object Storageに応じて、転送するオブジェクトのサイズが次のように制限されます。
| Cloud Object Storageサービス | オブジェクトの転送サイズ制限 |
|---|---|
|
Oracle Cloud Infrastructureオブジェクト・ストレージ |
50GB |
|
Amazon S3 |
5GB |
|
Azure Blob Storage |
256MB |
Oracle Cloud Infrastructureオブジェクト・ストアでは、資格証明を指定していないとパブリック・バケットにファイルを書き込むことができません(Oracle Cloud Infrastructureでは、パブリック・バケットからユーザーがオブジェクトをダウンロードできます)。 そのため、PUT_OBJECTを使用してOracle Cloud Infrastructureパブリック・バケットにオブジェクトを格納するには、有効な資格証明が含まれている資格証明の名を指定する必要があります。
詳細は、「DBMS_CLOUD URI形式」を参照してください。
46.3.2.20 SYNC_EXTERNAL_PART_TABLEプロシージャ
このプロシージャは、クラウド内のファイルからの外部パーティション表の更新を簡略化します。 このプロシージャは、新しいパーティションが追加されたとき、または外部パーティション表のオブジェクト・ストア・ソースからパーティションが削除されたときに実行します。
構文
DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE (
table_name IN VARCHAR2,
schema_name IN VARCHAR2 DEFAULT,
update_columns IN BOOLEAN DEFAULT);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ターゲット表の名前 |
|
|
ターゲット表が存在するスキーマの名前。 デフォルト値は、NULLです。この値は、ターゲット表がプロシージャを実行するユーザーと同じスキーマ内にあることを意味します。 |
|
|
新しいファイルによってスキーマが変更される場合があります。 サポートされる更新内容: 新しい列、削除された列。 既存の列に対する更新(データ型の変更など)では、エラーがスローされます。 デフォルト値: False |
46.3.2.21 VALIDATE_EXTERNAL_PART_TABLEプロシージャ
このプロシージャでは、パーティション化された外部表のソース・ファイルを検証して、ログ情報を生成し、外部表に指定したフォーマット・オプションと一致しない行をOracle Databaseのbadfile表に格納します。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。
構文
DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
table_name IN VARCHAR2,
partition_name IN CLOB DEFAULT,
subpartition_name IN CLOB DEFAULT,
schema_name IN VARCHAR2 DEFAULT,
rowcount IN NUMBER DEFAULT,
partition_key_validation IN BOOLEAN DEFAULT,
stop_on_error IN BOOLEAN DEFAULT);
DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
table_name IN VARCHAR2,
operation_id OUT NUMBER,
partition_name IN CLOB DEFAULT,
subpartition_name IN CLOB DEFAULT,
schema_name IN VARCHAR2 DEFAULT,
rowcount IN NUMBER DEFAULT,
partition_key_validation IN BOOLEAN DEFAULT,
stop_on_error IN BOOLEAN DEFAULT);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部表の名前。 |
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
|
|
定義すると場合、特定のパーティションのみが検証されます。 指定がない場合は、 |
|
|
定義した場合、特定のサブパーティションのみが検証されます。 指定しない場合は、 |
|
|
外部表が存在するスキーマの名前。 デフォルト値は、NULLです。この値は、外部表がプロシージャを実行するユーザーと同じスキーマ内にあることを意味します。 |
|
|
スキャンされる行数 デフォルト値は、NULLです。ソース・ファイルのすべての行がスキャンされることを意味します。 |
|
|
内部使用のみに対応しています。 このパラメータは使用しないでください。 |
|
|
行が拒否されたときに検証を停止するかどうかを決定します。 デフォルト値は、 |
46.3.2.22 VALIDATE_EXTERNAL_TABLEプロシージャ
このプロシージャでは、外部表のソース・ファイルを検証して、ログ情報を生成し、外部表に指定したフォーマット・オプションと一致しない行をOracle Databaseのbadfile表に格納します。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。
構文
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name IN VARCHAR2,
schema_name IN VARCHAR2 DEFAULT,
rowcount IN NUMBER DEFAULT,
stop_on_error IN BOOLEAN DEFAULT);
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE(
table_name IN VARCHAR2,
operation_id OUT NOCOPY NUMBER,
schema_name IN VARCHAR2 DEFAULT NULL,
rowcount IN NUMBER DEFAULT 0,
stop_on_error IN BOOLEAN DEFAULT TRUE);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部表の名前。 |
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
|
|
外部表が存在するスキーマの名前。 デフォルト値は、NULLです。この値は、外部表がプロシージャを実行するユーザーと同じスキーマ内にあることを意味します。 |
|
|
スキャンされる行数 デフォルト値は、NULLです。ソース・ファイルのすべての行がスキャンされることを意味します。 |
|
|
行が拒否されたときに検証を停止するかどうかを決定します。 デフォルト値は、 外部表がAvroまたはParquetファイルを参照している場合は、最初に拒否された行で検証が停止します。 外部表で |
使用上のノート
-
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLEは、パーティション化された外部表とハイブリッド・パーティション表の両方に機能します。 これは、rowcountに達するか、stop_on_errorが適用されるまで、すべての外部パーティションからデータを読み取る可能性があります。 読み取るパーティションまたはパーティションの部分の順序は制御できません。
46.3.2.23 VALIDATE_HYBRID_PART_TABLEプロシージャ
このプロシージャでは、ハイブリッド・パーション表のソース・ファイルを検証して、ログ情報を生成し、ハイブリッド表に指定したフォーマット・オプションと一致しない行をOracle Databaseのbadfile表に格納します。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。
構文
DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
table_name IN VARCHAR2,
partition_name IN CLOB DEFAULT,
subpartition_name IN CLOB DEFAULT,
schema_name IN VARCHAR2 DEFAULT,
rowcount IN NUMBER DEFAULT,
partition_key_validation IN BOOLEAN DEFAULT,
stop_on_error IN BOOLEAN DEFAULT);
DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
table_name IN VARCHAR2,
operation_id OUT NUMBER,
partition_name IN CLOB DEFAULT,
subpartition_name IN CLOB DEFAULT,
schema_name IN VARCHAR2 DEFAULT,
rowcount IN NUMBER DEFAULT,
partition_key_validation IN BOOLEAN DEFAULT,
stop_on_error IN BOOLEAN DEFAULT);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部表の名前。 |
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
|
|
定義すると場合、特定のパーティションのみが検証されます。 指定がない場合は、 |
|
|
定義した場合、特定のサブパーティションのみが検証されます。 指定しない場合は、 |
|
|
外部表が存在するスキーマの名前。 デフォルト値は、NULLです。この値は、外部表がプロシージャを実行するユーザーと同じスキーマ内にあることを意味します。 |
|
|
スキャンされる行数 デフォルト値は、NULLです。ソース・ファイルのすべての行がスキャンされることを意味します。 |
|
|
内部使用のみに対応しています。 このパラメータは使用しないでください。 |
|
|
行が拒否されたときに検証を停止するかどうかを決定します。 デフォルト値は、 |
46.3.3 DBMS_CLOUD:一括ファイル管理
DBMS_CLOUDパッケージ内のバルク・ファイル操作のサブプログラム。
| サブプログラム | 説明 |
|---|---|
| BULK_COPYプロシージャ |
このプロシージャは、あるクラウド・オブジェクト・ストレージ・バケットから別のクラウド・オブジェクト・ストレージ・バケットにファイルをコピーします。 |
| BULK_DELETEプロシージャ |
このプロシージャは、クラウド・オブジェクト・ストレージ・バケットまたはフォルダからファイルを削除します。 |
| BULK_DOWNLOADプロシージャ |
このプロシージャは、クラウド・オブジェクト・ストア・バケットからAutonomous Databaseのディレクトリにファイルをダウンロードします。 |
| BULK_MOVEプロシージャ |
このプロシージャは、あるクラウド・オブジェクト・ストレージ・バケットから別のクラウド・オブジェクト・ストレージ・バケットにファイルを移動します。 |
| BULK_UPLOADプロシージャ |
このプロシージャは、Autonomous Databaseのディレクトリからクラウド・オブジェクト・ストレージにファイルをアップロードします。 |
46.3.3.1 BULK_COPYプロシージャ
このプロシージャは、あるクラウド・オブジェクト・ストレージ・バケットから別のクラウド・オブジェクト・ストレージ・バケットにファイルを一括コピーします。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。
削除するファイルのリストをフィルタするには、REGEXP_LIKE演算子と互換性のある正規表現パターンを使用します。
ソース・バケットまたはターゲット・フォルダは、同じまたは異なるクラウド・オブジェクト・ストア・プロバイダに配置できます。
ソースとターゲットが個別のオブジェクト・ストアにある場合、または同じクラウド・プロバイダを持つ異なるアカウントがある場合、ソースとターゲットのロケーションに個別の資格証明名を指定できます。
デフォルトでは、ソース資格証明名はターゲットのロケーションでも使用されます。
構文
DBMS_CLOUD.BULK_COPY (
source_credential_name IN VARCHAR2 DEFAULT NULL,
source_location_uri IN VARCHAR2,
target_location_uri IN VARCHAR2,
target_credential_name IN VARCHAR2 DEFAULT NULL,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL
);
DBMS_CLOUD.BULK_COPY (
source_credential_name IN VARCHAR2 DEFAULT NULL,
source_location_uri IN VARCHAR2,
target_location_uri IN VARCHAR2,
target_credential_name IN VARCHAR2 DEFAULT NULL,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL,
operation_id OUT NUMBER
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。
|
|
|
ソース・オブジェクト・ストレージ・バケットまたはフォルダのロケーションを指すURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ファイルをコピーする必要があるターゲット・オブジェクト・ストレージ・バケットまたはフォルダのURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ターゲットのクラウド・オブジェクト・ストレージのロケーションにアクセスするための資格証明の名前。
|
|
|
ファイルをフィルタするREGEX式を指定します。 REGEX式パターンは、
|
|
|
ファイル操作の追加の構成オプションを指定します。 これらのオプションはJSON文字列として指定されます。 サポートされているフォーマット・オプションは次のとおりです:
|
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
使用上のノート
-
ソースとターゲットのURIが同じオブジェクト・ストレージ・バケットまたはフォルダを指している場合、エラーが返されます。
例
BEGIN
DBMS_CLOUD.BULK_COPY (
source_credential_name => 'OCI_CRED',
source_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/
46.3.3.2 BULK_DELETEプロシージャ
このプロシージャは、クラウド・オブジェクト・ストレージからファイルを一括削除します。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。 削除するファイルのリストをフィルタするには、REGEXP_LIKE演算子と互換性のある正規表現パターンを使用します。
構文
DBMS_CLOUD.BULK_DELETE(
credential_name IN VARCHAR2 DEFAULT NULL,
location_uri IN VARCHAR2,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL
);
DBMS_CLOUD.BULK_DELETE (
credential_name IN VARCHAR2 DEFAULT NULL,
location_uri IN VARCHAR2,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL,
operation_id OUT NUMBER
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。
|
|
|
Autonomous Databaseのオブジェクト・ストレージのロケーションを指すURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ファイルをフィルタするREGEX式を指定します。 REGEX式パターンは、
|
|
|
ファイル操作の追加の構成オプションを指定します。 これらのオプションはJSON文字列として指定されます。 サポートされているフォーマット・オプションは次のとおりです:
|
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
例
BEGIN
DBMS_CLOUD.BULK_DELETE (
credential_name => 'OCI_CRED',
location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
format => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKDEL')
);
END;
/
46.3.3.3 BULK_DOWNLOADプロシージャ
このプロシージャは、クラウド・オブジェクト・ストレージからAutonomous Databaseディレクトリにファイルをダウンロードします。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。 REGEXP_LIKE演算子と互換性のある正規表現パターンを使用して、ダウンロードするファイルのリストをフィルタできます。
構文
DBMS_CLOUD.BULK_DOWNLOAD (
credential_name IN VARCHAR2 DEFAULT NULL,
location_uri IN VARCHAR2,
directory_name IN VARCHAR2,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL
);
DBMS_CLOUD.BULK_DOWNLOAD (
credential_name IN VARCHAR2 DEFAULT NULL,
location_uri IN VARCHAR2,
directory_name IN VARCHAR2,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL,
operation_id OUT NUMBER
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。
|
|
|
Autonomous Databaseのオブジェクト・ストレージのロケーションを指すURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ファイルのダウンロード元となるAutonomous Database上のディレクトリの名前。 このパラメータは必須です。 |
|
|
ファイルをフィルタするREGEX式を指定します。 REGEX式パターンは、
|
|
|
ファイル操作の追加の構成オプションを指定します。 これらのオプションはJSON文字列として指定されます。 サポートされているフォーマット・オプションは次のとおりです:
|
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
例
BEGIN
DBMS_CLOUD.BULK_DOWNLOAD (
credential_name => 'OCI_CRED',
location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
directory_name => 'BULK_TEST',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/
46.3.3.4 BULK_MOVEプロシージャ
このプロシージャは、クラウド・オブジェクト・ストレージのバケットまたはフォルダ間でファイルを一括移動します。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。
削除するファイルのリストをフィルタするには、REGEXP_LIKE演算子と互換性のある正規表現パターンを使用します。
ソース・バケットまたはターゲット・フォルダは、同じまたは異なるクラウド・オブジェクト・ストア・プロバイダに配置できます。
ソースとターゲットが個別のオブジェクト・ストアにある場合、または同じクラウド・プロバイダを持つ異なるアカウントがある場合、ソースとターゲットのロケーションに個別の資格証明名を指定できます。
ターゲット資格証明名が指定されていない場合、ソース資格証明名はターゲットのロケーションでもデフォルトで使用されます。
ファイルを移動する最初のステップは、ファイルをターゲットのロケーションにコピーしてから、正常にコピーされたソース・ファイルを削除することです。
オブジェクト・ストアでソースとターゲットのロケーション間の名前変更操作が許可されている場合、オブジェクトの名前は移動されずに変更されます。
構文
DBMS_CLOUD.BULK_MOVE (
source_credential_name IN VARCHAR2 DEFAULT NULL,
source_location_uri IN VARCHAR2,
target_location_uri IN VARCHAR2,
target_credential_name IN VARCHAR2 DEFAULT NULL,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL
);
DBMS_CLOUD.BULK_MOVE (
source_credential_name IN VARCHAR2 DEFAULT NULL,
source_location_uri IN VARCHAR2,
target_location_uri IN VARCHAR2,
target_credential_name IN VARCHAR2 DEFAULT NULL,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL,
operation_id OUT NUMBER
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ソース・クラウド・オブジェクト・ストレージにアクセスするための資格証明の名前。
|
|
|
ソース・オブジェクト・ストレージ・バケットまたはフォルダのロケーションを指すURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ターゲット・オブジェクト・ストレージ・バケットまたはフォルダのURIを指定します。このURIでは、ファイルを移動する必要があります。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ターゲットのクラウド・オブジェクト・ストレージのロケーションにアクセスするための資格証明の名前。
|
|
|
ファイルをフィルタするREGEX式を指定します。 REGEX式パターンは、
|
|
|
ファイル操作の追加の構成オプションを指定します。 これらのオプションはJSON文字列として指定されます。 サポートされているフォーマット・オプションは次のとおりです:
|
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
例
BEGIN
DBMS_CLOUD.BULK_MOVE (
source_credential_name => 'OCI_CRED',
source_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKMOVE')
);
END;
/ノート:
ソースとターゲットのURIが同じオブジェクト・ストレージ・バケットまたはフォルダを指している場合、エラーが返されます。46.3.3.5 BULK_UPLOADプロシージャ
このプロシージャは、Autonomous Databaseディレクトリからクラウド・オブジェクト・ストレージにファイルをコピーします。 オーバーロードされた形式では、operation_idパラメータを使用できるようになります。
構文
DBMS_CLOUD.BULK_UPLOAD (
credential_name IN VARCHAR2 DEFAULT NULL,
location_uri IN VARCHAR2,
directory_name IN VARCHAR2,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL
);
DBMS_CLOUD.BULK_UPLOAD (
credential_name IN VARCHAR2 DEFAULT NULL,
location_uri IN VARCHAR2,
directory_name IN VARCHAR2,
regex_filter IN VARCHAR2 DEFAULT NULL,
format IN CLOB DEFAULT NULL,
operation_id OUT NUMBER
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Cloud Object Storageにアクセスするための資格証明の名前。
|
|
|
ファイルをアップロードするオブジェクト・ストレージのロケーションを指すURIを指定します。 このパラメータは必須です。 URIの形式は、Cloud Object Storageサービスによって異なります。 詳細は、「DBMS_CLOUD URI形式」を参照してください。 |
|
|
ファイルのアップロード元となるAutonomous Database上のディレクトリの名前。 このパラメータは必須です。 |
regex_filter |
ファイルをフィルタするREGEX式を指定します。 REGEX式パターンは、
|
|
|
ファイル操作の追加の構成オプションを指定します。 これらのオプションはJSON文字列として指定されます。 サポートされているフォーマット・オプションは次のとおりです:
|
|
|
このパラメータは、ロード操作の進行状況および最終ステータスを |
例
BEGIN
DBMS_CLOUD.BULK_UPLOAD (
credential_name => 'OCI_CRED',
location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
directory_name => 'BULK_TEST',
format => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKUPLOAD')
);
END;
/
46.3.4 DBMS_CLOUD REST APIs
この項では、Autonomous Databaseで提供されるDBMS_CLOUD REST APIについて説明します。
| REST API | 説明 |
|---|---|
| このファンクションは、Oracle DatabaseのJSONオブジェクトでHTTPレスポンス・ヘッダーをJSONデータとして返します。 | |
| このファンクションは、HTTPレスポンスをRAW形式Oracle Databaseで返します。 これは、HTTPレスポンスがバイナリ形式であることが予想される場合に役立ちます。 | |
| このファンクションは、HTTPレスポンス・ステータス・コードをOracle Databaseの整数として返します。 ステータス・コードは、リクエストが成功したかどうかを識別するのに役立ちます。 | |
このファンクションは、HTTPレスポンスをOracle DatabaseのTEXT形式(VARCHAR2またはCLOB)で返します。 通常、ほとんどのクラウドREST APIはJSONレスポンスをテキスト形式で返します。 このファンクションは、HTTPレスポンスがテキスト形式であることが予想される場合に役立ちます。
|
|
|
このファンクションは、構成された結果キャッシュ・サイズを返します。 |
|
| このファンクションは、HTTPリクエストを開始し、レスポンスを取得し、Oracle Databaseでレスポンスを終了します。 このファンクションは、引数、リターン・レスポンス・コードおよびペイロードを含むクラウドREST APIリクエストを送信するためのワークフローを提供します。 | |
|
このプロシージャは、現在のセッションの最大キャッシュ・サイズを設定します。 |
46.3.4.1 DBMS_CLOUD REST APIの概要
アプリケーションでPL/SQLを使用し、クラウドREST APIをコールする必要がある場合、DBMS_CLOUD.SEND_REQUESTを使用してREST APIリクエストを送信できます。
DBMS_CLOUD REST APIファンクションを使用すると、DBMS_CLOUD.SEND_REQUESTを使用してHTTPリクエストを作成し、結果を取得して保存できます。 これらのファンクションは、サポートされている次のクラウド・サービス:を使用して任意のREST APIをコールできる汎用APIを提供
- Oracle Cloud Infrastructure
Oracle Cloud Infrastructure REST APIの詳細は、「APIリファレンスとエンドポイント」を参照してください。
- Amazon Web Services (AWS)
Amazon Web Services REST APIの詳細は、「ガイドとAPIリファレンス」を参照してください。
- Azureクラウド「フィート3」
Azure REST APIの詳細は、「Azure REST APIリファレンス」を参照してください。
- Oracle Cloud Infrastructure Classic
Oracle Cloud Infrastructure Classic REST APIの詳細は、「すべてのRESTエンドポイント」を参照してください。
- GitHubリポジトリ
詳細は、GitHub REST APIを参照してください。
46.3.4.2 DBMS_CLOUD REST APIの定数
DBMS_CLOUD.SEND_REQUESTを使用してHTTPリクエストを行うためのDBMS_CLOUD定数について説明します。
DBMS_CLOUDは、GET, PUT, POST, HEADおよびDELETE HTTPメソッドをサポートします。 HTTPリクエストに使用されるREST APIメソッドは、通常、クラウドREST APIドキュメントに記載されています。
| 名前 | タイプ | 値 |
|---|---|---|
METHOD_DELETE |
VARCHAR2(6) |
'DELETE' |
METHOD_GET |
VARCHAR2(3) |
'GET' |
METHOD_HEAD |
VARCHAR2(4) |
'HEAD' |
METHOD_POST |
VARCHAR2(4) |
'POST' |
METHOD_PUT |
VARCHAR2(3) |
'PUT' |
46.3.4.3 DBMS_CLOUD REST API結果キャッシュ
DBMS_CLOUD.SEND_REQUESTでcacheパラメータをtrueに設定すると、DBMS_CLOUD REST APIの結果を保存できます。 SESSION_CLOUD_API_RESULTSビューは、REST API結果の保存時に使用できる列を示します。
デフォルトでは、DBMS_CLOUD REST APIコールはセッションの結果を保存しません。 この場合、DBMS_CLOUD.SEND_REQUESTファンクションを使用して結果を返します。
DBMS_CLOUD.SEND_REQUESTを使用してcacheパラメータをTRUEに設定すると、結果が保存され、SESSION_CLOUD_API_RESULTSビューで過去の結果を表示できます。 DBMS_CLOUD REST APIリクエストの履歴結果を保存および問合せすると、アプリケーションで前回の結果を操作する必要がある場合に役立ちます。
たとえば、最近のDBMS_CLOUD REST API結果を問い合せるには、ビューSESSION_CLOUD_API_RESULTSを使用します:
SELECT timestamp FROM SESSION_CLOUD_API_RESULTS;
DBMS_CLOUD REST APIの結果をDBMS_CLOUD.SEND_REQUESTで保存すると、保存されたデータは同じセッション(接続)内でのみ使用できます。 セッションが終了すると、保存されたデータは使用できなくなります。
DBMS_CLOUD.GET_API_RESULT_CACHE_SIZEおよびDBMS_CLOUD.SET_API_RESULT_CACHE_SIZEを使用して、DBMS_CLOUD REST APIキャッシュ・サイズを表示および設定し、キャッシュを無効にします。
46.3.4.4 GET_RESPONSE_HEADERSファンクション
このファンクションは、HTTPレスポンス・ヘッダーをJSONオブジェクト内のJSONデータとして返します。
構文
DBMS_CLOUD.GET_RESPONSE_HEADERS(
resp IN DBMS_CLOUD_TYPES.resp)
RETURN JSON_OBJECT_T;
パラメータ
| パラメータ | 説明 |
|---|---|
resp |
|
例外
| 例外 | エラー | 説明 |
|---|---|---|
invalid_response |
ORA-20025 |
無効なレスポンス・タイプ・オブジェクトが |
46.3.4.5 GET_RESPONSE_RAWファンクション
このファンクションは、HTTPレスポンスをRAW形式で返します。 これは、HTTPレスポンスがバイナリ形式であることが予想される場合に役立ちます。
構文
DBMS_CLOUD.GET_RESPONSE_RAW(
resp IN DBMS_CLOUD_TYPES.resp)
RETURN BLOB;
パラメータ
| パラメータ | 説明 |
|---|---|
resp |
|
例外
| 例外 | エラー | 説明 |
|---|---|---|
invalid_response |
ORA-20025 |
無効なレスポンス・タイプ・オブジェクトが |
46.3.4.6 GET_RESPONSE_STATUS_CODEファンクション
このファンクションは、HTTPレスポンス・ステータス・コードを整数として返します。 ステータス・コードは、リクエストが成功したかどうかを識別するのに役立ちます。
構文
DBMS_CLOUD.GET_RESPONSE_STATUS_CODE(
resp IN DBMS_CLOUD_TYPES.resp)
RETURN PLS_INTEGER;
パラメータ
| パラメータ | 説明 |
|---|---|
resp |
|
例外
| 例外 | エラー | 説明 |
|---|---|---|
invalid_response |
ORA-20025 |
無効なレスポンス・タイプ・オブジェクトが |
46.3.4.7 GET_RESPONSE_TEXTファンクション
このファンクションは、HTTPレスポンスをTEXT形式(VARCHAR2またはCLOB)で返します。 通常、ほとんどのクラウドREST APIはJSONレスポンスをテキスト形式で返します。 このファンクションは、HTTPレスポンスがテキスト形式であることが予想される場合に役立ちます。
構文
DBMS_CLOUD.GET_RESPONSE_TEXT(
resp IN DBMS_CLOUD_TYPES.resp)
RETURN CLOB;
パラメータ
| パラメータ | 説明 |
|---|---|
resp |
|
例外
| 例外 | エラー | 説明 |
|---|---|---|
invalid_response |
ORA-20025 |
無効なレスポンス・タイプ・オブジェクトが |
46.3.4.8 GET_API_RESULT_CACHE_SIZEファンクション
このファンクションは、構成された結果キャッシュ・サイズを返します。 キャッシュ・サイズの値は、現在のセッションにのみ適用されます。
構文
DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE()
RETURN NUMBER;
46.3.4.9 SEND_REQUESTファンクションおよびプロシージャ
このファンクションおよびプロシージャは、HTTPリクエストを開始し、レスポンスを取得し、レスポンスを終了します。 このファンクションは、引数を指定してクラウドREST APIリクエストを送信するためのワークフローを提供し、ファンクションはレスポンス・コードおよびペイロードを返します。 このプロシージャを使用すると、SESSION_CLOUD_API_RESULTSビューを使用して、保存された結果から結果およびレスポンスの詳細を表示できます。
構文
DBMS_CLOUD.SEND_REQUEST(
credential_name IN VARCHAR2,
uri IN VARCHAR2,
method IN VARCHAR2,
headers IN CLOB DEFAULT NULL,
async_request_url IN VARCHAR2 DEFAULT NULL,
wait_for_states IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
timeout IN NUMBER DEFAULT 0,
cache IN PL/SQL BOOLEAN DEFAULT FALSE,
cache_scope IN VARCHAR2 DEFAULT 'PRIVATE',
body IN BLOB DEFAULT NULL)
RETURN DBMS_CLOUD_TYPES.resp;
DBMS_CLOUD.SEND_REQUEST(
credential_name IN VARCHAR2,
uri IN VARCHAR2,
method IN VARCHAR2,
headers IN CLOB DEFAULT NULL,
async_request_url IN VARCHAR2 DEFAULT NULL,
wait_for_states IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
timeout IN NUMBER DEFAULT 0,
cache IN PL/SQL BOOLEAN DEFAULT FALSE,
cache_scope IN VARCHAR2 DEFAULT 'PRIVATE',
body IN BLOB DEFAULT NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
対応するクラウド・ネイティブAPIで認証するための資格証明の名前。 |
uri |
リクエストを行うHTTP URI。 |
method |
HTTPリクエスト・メソッド: 詳細は、「DBMS_CLOUD REST APIの定数」を参照してください。 |
headers |
対応するクラウド・ネイティブAPIのHTTPリクエスト・ヘッダー(JSON形式)。 認証ヘッダーは自動的に設定され、カスタム・ヘッダーのみが渡されます。 |
|
|
非同期リクエストURL。 URLを取得するには、APIのリストからリクエストAPIを選択します(https://docs.cloud.oracle.com/en-us/iaas/api/を参照)。 次に、左側のペインでリクエストのAPIを検索します。 たとえば、「データベース・サービスAPI」→「Autonomous Database」→「StopAutonomousDatabase」です。 このページには、APIホームが表示されます(およびベース・エンドポイントが表示されます)。 次に、作業リクエストWorkRequestリンクに対して取得された相対パスにベース・エンドポイントを追加します。 |
wait_for_states |
待機状態はタイプのステータスです:
|
timeout |
パラメータ デフォルト値は |
cache |
デフォルト値は |
cache_scope |
すべてのユーザーがこのリクエスト結果キャッシュにアクセスできるかどうかを指定します。 有効な値: |
body |
|
例外
| 例外 | エラー | 説明 |
|---|---|---|
invalid_req_method |
ORA-20023 |
|
invalid_req_header |
ORA-20024 |
|
使用上のノート
-
Oracle Cloud Infrastructureを使用している場合は、
credential_nameに署名キー・ベースの資格証明値を使用する必要があります。 詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。 -
オプションのパラメータ
async_request_url、wait_for_statesおよびtimeoutを使用すると、長時間実行リクエストを処理できます。 この非同期形式のsend_requestを使用して、ファンクションはwait_for_statesで指定された完了ステータスを待機してから戻ります。 送信リクエストでこれらのパラメータを使用して、wait_for_statesパラメータで予想される戻り状態を渡し、async_request_urlパラメータを使用して関連する作業リクエストを指定すると、リクエストはすぐには返されません。 かわりに、リクエストは、戻り状態が予想される状態の1つになるか、timeoutを超える(timeoutはオプション)までasync_request_urlをプローブします。timeoutが指定されていない場合、リクエストはwait_for_statesで検出された状態が発生するまで待機します。
46.3.4.10 SET_API_RESULT_CACHE_SIZEプロシージャ
このプロシージャは、現在のセッションの最大キャッシュ・サイズを設定します。 キャッシュ・サイズの値は、現在のセッションにのみ適用されます。
構文
DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(
cache_size IN NUMBER);
パラメータ
| パラメータ | 説明 |
|---|---|
cache_size |
最大キャッシュ・サイズを指定された値 キャッシュ・サイズが デフォルトのキャッシュ・サイズは |
例外
| 例外 | エラー | 説明 |
|---|---|---|
invalid API result cache size |
ORA-20032 |
最小値は0で、最大値は10000です。 この例外は、入力値が0より小さいか、または10000より大きい場合に表示されます。 |
例
EXEC DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(101);
46.3.4.11 DBMS_CLOUD REST APIの例
DBMS_CLOUD.SEND_REQUESTを使用してOracle Cloud Infrastructureオブジェクト・ストレージ・バケットを作成および削除する例と、テナンシ内のすべてのコンパートメントをリストする例を示しています。
ノート:
これらの例は、Oracle Cloud InfrastructureリクエストAPIを示し、credential_nameの署名キー・ベースの資格証明を使用する必要があります。 Oracle Cloud Infrastructure署名キー・ベースの資格証明には、private_keyおよびfingerprint引数が含まれます。
たとえば:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name => âOCI_KEY_CREDâ,
user_ocid => âocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoaâ,
tenancy_ocid => âocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2aâ,
private_key => âMIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=â,
fingerprint => âf2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27â);
END;
/DBMS_CLOUD.CREATE_CREDENTIALの詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。
バケットの作成の例
DBMS_CLOUD.SEND_REQUESTをHTTP POSTメソッドとともに使用して、bucketnameという名前のオブジェクト・ストア・バケットを作成する例を示します。
この例のOracle Cloud Infrastructure Object Storage Service APIの詳細は、CreateBucketを参照してください。
SET SERVEROUTPUT ON
DECLARE
resp DBMS_CLOUD_TYPES.resp;
BEGIN
-- Send request
resp := DBMS_CLOUD.send_request(
credential_name => 'OCI_KEY_CRED',
uri => 'https://objectstorage.region.oraclecloud.com/n/namespace-string/b/',
method => DBMS_CLOUD.METHOD_POST,
body => UTL_RAW.cast_to_raw(
JSON_OBJECT('name' value 'bucketname',
'compartmentId' value 'compartment_OCID'))
);
-- Response Body in TEXT format
dbms_output.put_line('Body: ' || '------------' || CHR(10) ||
DBMS_CLOUD.get_response_text(resp) || CHR(10));
-- Response Headers in JSON format
dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) ||
DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
-- Response Status Code
dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) ||
DBMS_CLOUD.get_response_status_code(resp));
END;
/
ノート:
-
この例では、
namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。 -
場所:
regionはエンドポイント・リージョンです。 詳細は、「APIリファレンスとエンドポイント」のオブジェクト・ストレージAPIリファレンスを参照してください。 たとえば、regionは:us-phoenix-1.
バケットの削除の例
DBMS_CLOUD.SEND_REQUESTをHTTP DELETEメソッドとともに使用して、bucketnameという名前のオブジェクト・ストア・バケットを削除する例を示します。
この例のOracle Cloud Infrastructure Object Storage Service APIの詳細は、DeleteBucketを参照してください。
SET SERVEROUTPUT ON
DECLARE
resp DBMS_CLOUD_TYPES.resp;
BEGIN
-- Send request
resp := DBMS_CLOUD.send_request(
credential_name => 'OCI_KEY_CRED',
uri => 'https://objectstorage.region.oraclecloud.com/n/namespace-string/b/bucketname',
method => DBMS_CLOUD.METHOD_DELETE
);
-- Response Body in TEXT format
dbms_output.put_line('Body: ' || '------------' || CHR(10) ||
DBMS_CLOUD.get_response_text(resp) || CHR(10));
-- Response Headers in JSON format
dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) ||
DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
-- Response Status Code
dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) ||
DBMS_CLOUD.get_response_status_code(resp));
END;
/
ノート:
-
この例では、
namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。 -
場所:
regionはエンドポイント・リージョンです。 詳細は、「APIリファレンスとエンドポイント」のオブジェクト・ストレージAPIリファレンスを参照してください。 たとえば、regionは:us-phoenix-1.
コンパートメントのリストの例
DBMS_CLOUD.SEND_REQUESTをHTTP GETメソッドとともに使用して、テナンシ(ルート・コンパートメント)内のすべてのコンパートメントをリストする例を示します。 この例では、DBMS_CLOUD.SEND_REQUESTでリクエスト・ヘッダーを渡す方法を示します。
この例のOracle Cloud Infrastructure Identity and Access Management Service APIの詳細は、ListCompartmentsを参照してください。
--
-- List compartments
--
DECLARE
resp DBMS_CLOUD_TYPES.resp;
root_compartment_ocid VARCHAR2(512) := '&1';
BEGIN
-- Send request
dbms_output.put_line('Send Request');
resp := DBMS_CLOUD.send_request(
credential_name => 'OCI_KEY_CRED',
uri => 'https://identity.region.oraclecloud.com/20160918/compartments?compartmentId=' || root_compartment_ocid,
method => DBMS_CLOUD.METHOD_GET,
headers => JSON_OBJECT('opc-request-id' value 'list-compartments')
);
dbms_output.put_line('Body: ' || '------------' || CHR(10) || DBMS_CLOUD.get_response_text(resp) || CHR(10));
dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) || DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) || DBMS_CLOUD.get_response_status_code(resp));
dbms_output.put_line(CHR(10));
END;
/
場所: regionはエンドポイント・リージョンです。 詳細は、「APIリファレンスとエンドポイント」のIdentity and Access Management (IAM) APIリファレンスを参照してください。 たとえば、regionは: uk-london-1.
非同期リクエストの例
DBMS_CLOUD.SEND_REQUESTをHTTP POSTメソッドとともに使用して、Autonomous Database停止操作を実行し、ステータスを待機する例を示します。 この例では、DBMS_CLOUD.SEND_REQUESTをasync_request_url、wait_for_statesおよびtimeoutパラメータとともに使用する方法を示します。
--
-- Sent Work Request Autonomous Database Stop Request with Wait for Status
DECLARE
l_resp DBMS_CLOUD_TYPES.resp;
l_resp_json JSON_OBJECT_T;
l_key_shape JSON_OBJECT_T;
l_body JSON_OBJECT_T;
status_array DBMS_CLOUD_TYPES.wait_for_states_t;
BEGIN
status_array := DBMS_CLOUD_TYPES.wait_for_states_t('SUCCEEDED');
l_body := JSON_OBJECT_T('{}');
l_body.put('autonomousDatabaseId', 'ocid');
-- Send request
dbms_output.put_line(l_body.to_clob);
dbms_output.put_line('Send Request');
l_resp := DBMS_CLOUD.send_request(
credential_name => 'NATIVE_CRED_OCI',
uri => 'https://database.region.oraclecloud.com/20160918/autonomousDatabases/ocid/actions/stop',
method => DBMS_CLOUD.METHOD_POST,
body => UTL_RAW.cast_to_raw(l_body.to_clob),
async_request_url => 'https://iaas.region.oraclecloud.com/20160918/workRequests',
wait_for_states => status_array,
timeout => 600
);
dbms_output.put_line('resp body: '||DBMS_CLOUD.get_response_text(l_resp));
dbms_output.put_line('resp headers: '||DBMS_CLOUD.get_response_headers(l_resp).to_clob);
END;
/
場所: regionはエンドポイント・リージョンです。 詳細は、「APIリファレンスとエンドポイント」のIdentity and Access Management (IAM) APIリファレンスを参照してください。 たとえば、regionは: uk-london-1.
ocidは、Oracle Cloud Infrastructureリソース識別子です。 詳細は、「リソース識別子」を参照してください。
46.4 DBMS_CLOUD URI形式
DBMS_CLOUDの操作におけるソース・ファイルURIの形式について説明します。 この形式は、どのオブジェクト記憶域サービスを使用するかによって異なります。
DBMS_CLOUDでは、セキュアな通信が保証され、URIの指定にはHTTPS (URIの接頭辞がhttps://)を使用する必要があります。
46.4.1 Oracle Cloud Infrastructure Object Storage NativeのURI形式
ソース・ファイルが商用レルム(OC1)のOracle Cloud Infrastructure Object Storageにある場合は、オブジェクト・ストレージ専用エンドポイントを使用する次のURI形式を使用することをお薦めします。 詳細は、「オブジェクト・ストレージ専用エンドポイント」を参照してください。
https://namespace-string.objectstorage.region.oci.customer-oci.com/n/namespace-string/b/bucketname/o/filenameノート:
OCIオブジェクト・ストアの専用エンドポイントURLは、商用レルム(OC1)でのみサポートされています。ソース・ファイルがOracle Cloud Infrastructure Object Storageに存在し、商用レルム(OC1)にない場合は、次の形式を使用する必要があります:
https://objectstorage.region.oraclecloud.com/n/namespace-string/b/bucket/o/filenameたとえば、商用レルム(OC1)では、Phoenixデータ・センターのbucketnameバケット内のファイルchannels.txtのネイティブURIは次のようになります:
https://namespace.objectstorage.region.oci.customer-oci.com/n/namespace/b/bucketname/o/channels.txtこの例では、namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。
このURIは、オブジェクト・ストアの右側の省略記号メニューにあるOracle Cloud Infrastructure Object Storageの「オブジェクトの詳細」から確認できます。
- Oracle Cloudの横にある
をクリックすることで、Oracle Cloud Infrastructureコンソールを開きます。
- Oracle Cloud Infrastructureの左側のナビゲーション・メニューから、「コア・インフラストラクチャ」をクリックします。 「オブジェクト・ストレージ」の下で、「オブジェクト・ストレージ」をクリックします。
- 「リスト範囲」の下で、「コンパートメント」を選択します。
- 「名前」列からバケットを選択します。
- 「オブジェクト」領域で、「オブジェクト詳細の表示」をクリックします。
- 「オブジェクトの詳細」ページの「URLパス(URI)」フィールドに、オブジェクトにアクセスするためのURIが表示されます。
ノート:
ソース・ファイルは、オブジェクト・ストレージ層バケットに格納されている必要があります。 Oracle Databaseでは、アーカイブ・ストレージ層のバケットはサポートされません。 詳細は、オブジェクト・ストレージの概要に関する項を参照してください。
46.4.2 Oracle Cloud Infrastructure Object Storage SwiftのURI形式
ソース・ファイルが商用レルム(OC1)のOracle Cloud Infrastructure Object Storageにある場合は、オブジェクト・ストレージ専用エンドポイントを使用する次のURI形式を使用することをお薦めします。 詳細は、「オブジェクト・ストレージ専用エンドポイント」を参照してください。
https://namespace-string.swiftobjectstorage.region.oci.customer-oci.com/v1/namespace-string/bucket/filenameノート:
OCIオブジェクト・ストアの専用エンドポイントURLは、商用レルム(OC1)でのみサポートされています。ソース・ファイルがOracle Cloud Infrastructure Object Storageに存在し、商用レルム(OC1)にない場合は、次の形式を使用する必要があります:
https://swiftobjectstorage.region.oraclecloud.com/v1/namespace-string/bucket/filenameたとえば、商用レルム(OC1)では、Phoenixデータ・センターのbucketnameバケット内のファイルchannels.txtのSwift URIは次のようになります:
https://namespace-string.swiftobjectstorage.us-phoenix-1.oci.customer-oci.com/v1/namespace-string/bucketname/channels.txtこの例では、namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。
ノート:
ソース・ファイルは、オブジェクト・ストレージ層バケットに格納されている必要があります。 Oracle Databaseでは、アーカイブ・ストレージ層のバケットはサポートされません。 詳細は、オブジェクト・ストレージの概要に関する項を参照してください。
46.4.3 Oracle Cloud Infrastructure Object Storage事前認証済リクエストURLを使用したURI形式
ソース・ファイルがOracle Cloud Infrastructure Object Storageに存在する場合は、Oracle Cloud Infrastructure事前認証済URIを使用できます。 事前認証済リクエストの作成時に、一意のURLが生成されます。 この一意のURLを組織内のユーザー、パートナーまたはサード・パーティに提供することで、事前認証済リクエストで識別されるオブジェクト・ストレージ・リソースのターゲットにアクセスできるようにします。
ノート:
事前認証済アクセスのビジネス要件とセキュリティへの影響は慎重に評価してください。 事前認証済リクエストURLの作成時には、有効期限とアクセス・タイプをメモして、使用目的に適していることを確認します。事前認証済リクエストURLは、リクエストがアクティブであるかぎり、そのURLを持つすべてのユーザーにリクエストで特定されるターゲットへのアクセス権を与えます。 事前認証済アクセスの運用ニーズについて考慮することに加えて、その配布について管理することも同様に重要です。
ソース・ファイルが商用レルム(OC1)のOracle Cloud Infrastructure Object Storageにある場合は、オブジェクト・ストレージ専用エンドポイントを使用する次のURI形式を使用することをお薦めします。 詳細は、「オブジェクト・ストレージ専用エンドポイント」を参照してください。
https://namespace-string.objectstorage.region.oci.customer-oci.com/p/encrypted_string/n/namespace-string/b/bucket/o/filename
ノート:
OCIオブジェクト・ストアの専用エンドポイントURLは、商用レルム(OC1)でのみサポートされています。ソース・ファイルがOracle Cloud Infrastructure Object Storageに存在し、商用レルム(OC1)にない場合は、次の形式を使用する必要があります:
https://objectstorage.region.oraclecloud.com.com/p/encrypted_string/n/namespace-string/b/bucket/o/filename
たとえば、商用レルム(OC1)では、Phoenixデータ・センターの「バケット名」バケットにあるファイルchannels.txtの事前認証済URIのサンプルは次のとおりです:
https://namespace-string.objectstorage.us-phoenix-1.oci.customer-oci.com/p/2xN-uDtWJNsiD910UCYGue/n/namespace-string/b/bucketname/o/channels.txt
この例では、namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。
事前認証済URLは、資格証明を作成することなくOracle Cloud Infrastructureオブジェクト・ストア内のファイルにアクセスするURLを取得するために、どのDBMS_CLOUDプロシージャでも使用できます。 credential_nameパラメータをNULLとして指定するか、credential_nameパラメータの指定を省略する必要があります。
たとえば:
BEGIN
DBMS_CLOUD.COPY_DATA(
table_name =>'CHANNELS',
file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/p/unique-pre-authenticated-string/n/namespace-string/b/bucketname/o/channels.txt',
format => json_object('delimiter' value ',') );
END;
/ノート:
URLの混在しているリストは有効です。 URLリストに事前認証済URLと認証が必要なURLの両方が含まれているときに、DBMS_CLOUDは、認証が必要なURLにアクセスする場合には指定されたcredential_nameを使用し、事前認証済URLについては指定されたcredential_nameを無視します。
詳細は、事前認証済リクエストの使用方法に関する項を参照してください。
46.4.4 パブリックURLを使用したURI形式
ソース・ファイルがパブリックURLを提供するオブジェクト・ストアに存在している場合は、DBMS_CLOUDプロシージャでパブリックURLを使用できます。 パブリックとは、オブジェクト・ストレージ・サービスが、オブジェクト・ストア・ファイルへの匿名の未認証アクセスをサポートすることを意味します。 サポートされているオブジェクト・ストアでオブジェクトをパブリックにする方法の詳細は、対象のCloud Object Storageサービスを参照してください。
ノート:
パブリックURLの使用に関して、ビジネス要件とセキュリティへの影響は慎重に評価してください。 パブリックURLの使用時にはファイル・コンテンツが認証されなくなるため、これが使用目的に適していることを確認してください。パブリックURLは、資格証明を作成することなくオブジェクト・ストア内のファイルにアクセスするURLを取得するために、どのDBMS_CLOUDプロシージャでも使用できます。 credential_nameパラメータをNULLとして指定するか、credential_nameパラメータの指定を省略する必要があります。
次の例では、credential_nameの指定なしでDBMS_CLOUD.COPY_DATAを使用しています。
BEGIN
DBMS_CLOUD.COPY_DATA(
table_name =>'CHANNELS',
file_uri_list =>'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/chan_v3.dat',
format => json_object('delimiter' value ',') );
END;
/この例では、namespace-stringは、Oracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースです。また、bucketnameはバケット名です。 詳細は、オブジェクト・ストレージ・ネームスペースの概要に関する項を参照してください。
ノート:
URLの混在しているリストは有効です。 URLリストにパブリックURLと認証が必要なURLの両方が含まれているときに、DBMS_CLOUDは、認証が必要なURLにアクセスする場合には指定されたcredential_nameを使用し、パブリックURLについては指定されたcredential_nameを無視します。
Oracle Cloud Infrastructureパブリック・バケットの使用方法の詳細は、パブリック・バケットに関する項を参照してください。
46.4.5 Oracle Cloud Infrastructure Object Storage ClassicのURI形式
ソース・ファイルがOracle Cloud Infrastructure Object Storage Classicにある場合は、ファイルにアクセスするためのURI形式の説明について、RESTのページ(Oracle Cloud Infrastructure Object Storage ClassicリソースのREST URLの概要に関する項)を参照してください。
46.4.6 Amazon S3のURI形式
ソース・ファイルがAmazon S3にある場合、ファイルにアクセスするためのURI形式の説明は、「バケットへのアクセス」 を参照してください。
次の例では、us-west-2地域のadbバケット内にあるファイルchannels.txtを参照します。
https://s3-us-west-2.amazonaws.com/adb/channels.txt 資格証明を作成する必要なく、Amazon S3オブジェクト・ストア内のファイルにアクセスするために、URLを取得するどのDBMS_CLOUDプロシージャでも署名付きURLを使用できます。 DBMS_CLOUDプロシージャで署名付きURLを使用するには、credential_nameパラメータをNULLとして指定するか、credential_nameパラメータを指定しないようにします。
ノート:
DBMS_CLOUDでは、バケットにアクセスするための標準のAmazon S3エンドポイント構文がサポートされています。 DBMS_CLOUDでは、Amazon S3のレガシー・エンドポイントはサポートされていません。
46.4.7 Amazon S3互換URI形式
DBMS_CLOUDは、次のサービスを含む、Amazon S3互換URLをサポートするオブジェクト・ストレージ・サービスの実装をサポートします:
- Amazon S3互換URLを持つOracle Cloud Infrastructure Object Storage
- Amazon S3互換URLを持つGoogle Cloud Storage
- Amazon S3互換URLを持つWasabi Hot Cloud Storage
ノート:
Amazon S3互換オブジェクト・ストアでDBMS_CLOUDを使用するには、有効な資格証明を指定する必要があります。 詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。
ソース・ファイルがAmazon S3互換URIをサポートするサービス上に存在する場合は、次のURI形式を使用してファイルにアクセスします:
-
Oracle Cloud Infrastructure Object Storage S3互換URL
ソース・ファイルが商用レルム(OC1)のOracle Cloud Infrastructure Object Storageにある場合は、商用レルム(OC1)に次に示すオブジェクトURLおよびバケットURL形式を使用することをお薦めします。 詳細は、「オブジェクト・ストレージ専用エンドポイント」を参照してください。
ノート:
OCIオブジェクト・ストアの専用エンドポイントURLは、商用レルム(OC1)でのみサポートされています。オブジェクトURL形式
-
商用レルム(OC1)でのみサポートされます:
https://mynamespace.compat.objectstorage.region.oci.customer-oci.com/bucket_name/object_name -
すべてのゾーンでサポート:
https://mynamespace.compat.objectstorage.region.oraclecloud.com/bucket_name/object_name
バケットURLフォーマット:
-
商用レルム(OC1)でのみサポートされます:
https://mynamespace.compat.objectstorage.region.oci.customer-oci.com/bucket_name -
すべてのゾーンでサポート:
https://mynamespace.compat.objectstorage.region.oraclecloud.com/bucket_name
詳細は、「Amazon S3の互換性」およびObject Storage Service APIを参照してください。
-
-
Google Cloud Storage S3互換URL
オブジェクトURL形式:
https://bucketname.storage.googleapis.com/object_nameバケットURL形式:
https://bucketname.storage.googleapis.com/詳細は、「Amazon S3からCloud Storageへの移行」および「リクエスト・エンドポイント」を参照してください。
-
Wasabi S3互換URL
オブジェクトURL形式:
https://bucketname.s3.region.wasabisys.com/object_nameバケットURL形式:
https://bucketname.s3.region.wasabisys.com/詳細は、「Wasabi S3 APIリファレンス」および「Wasabiのストレージ・リージョンのサービスURL」を参照してください。
46.4.8 GitHub Raw URL形式
DBMS_CLOUDは、「GitHubリポジトリ」のデータにアクセスするためのGitHub Raw URLをサポートしています。
ノート:
GitHub Raw URLを使用したDBMS_CLOUDアクセスの場合、リポジトリ・アクセスは読取り専用機能に制限されます。 データを書き込むDBMS_CLOUD.PUT_OBJECTなどのDBMS_CLOUD APIは、「GitHubリポジトリ」のDBMS_CLOUD APIではサポートされていません。
または、DBMS_CLOUD_REPO.PUT_FILEを使用して、「GitHubリポジトリ」にデータをアップロードします。
GitHub Raw URLをDBMS_CLOUD APIとともに使用して、「GitHubリポジトリ」に存在するソース・ファイルにアクセスします。 GitHubでファイルを参照し、Rawリンクをクリックすると、GitHub Raw URLが表示されます。 raw.githubusercontent.comドメインは、GitHubリポジトリに格納されているファイルの未処理バージョンを提供します。
たとえば、DBMS_CLOUD.GET_OBJECTを使用します:
BEGIN
DBMS_CLOUD.GET_OBJECT(
credential_name => 'MY_CRED',
object_uri => 'https://raw.githubusercontent.com/myaccount/myrepo/master/data-management-library/autonomous-database/adb-loading.csv',
directory_name => 'DATA_PUMP_DIR'
);
END;
/たとえば、DBMS_CLOUD.CREATE_EXTERNAL_TABLEを使用します:
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
credential_name => 'MY_CRED',
table_name => 'EMPLOYEES_EXT',
file_uri_list => 'https://raw.githubusercontent.com/myaccount/myrepo/master/data-management-library/autonomous-database/*.csv',
column_list => 'name varchar2(30), gender varchar2(30), salary number',
format => JSON_OBJECT('type' value 'csv')
);
END;
/
SELECT * FROM employees_ext;URLを使用して「GitHubリポジトリ」にアクセスするDBMS_CLOUDプロシージャでは、パブリック可視性のGitHubリポジトリを持つ資格証明は必要ありません。 パブリック可視性URLを使用するには、credential_nameパラメータをNULLとして指定するか、credential_nameパラメータを指定しません。 詳細は、「リポジトリの表示設定」を参照してください。
46.4.9 顧客管理の追加のURI形式
DBMS_CLOUDは、完全修飾ドメイン名(FQDNs)を持つ事前構成済で認識されたURIsに加えて、顧客管理エンドポイントURIsの適切な認証スキームを決定できません。 このような場合、DBMS_CLOUDは、適切なURIスキームに依存して、顧客管理エンドポイントの認証スキームを識別します。
| URIスキーム | 認証タイプ | アクセス・メソッド摘要 | URIの例 |
|---|---|---|---|
| basic:// | 基本認証 | データベース資格証明オブジェクトに格納されているユーザー名とパスワードは、HTTPリクエストの認証に使用されます | basic://api.github.com/users/myaccount |
| bearer:// | Bearerトークン認証 | データベース資格証明オブジェクトのパスワード・フィールドに格納されたBearerトークンは、HTTPリクエストの認可ヘッダーを指定するために使用されます | bearer://api.sendgrid.com/v3/resource |
| oci:// | OCIネイティブ | OCI認証プロトコルを使用したリクエストの署名に使用され、格納されたデータベース資格証明オブジェクトから取得されたOCI署名キー | oci://objectstorage.us-ashburn-1.oraclecloud.com |
| public:// | 認証なし | パブリックURL | public://cms.data.gov/ |
| s3:// | Amazon Web Services S3-compatible | データベース資格証明オブジェクトのユーザー名/パスワード・フィールドから取得されたアクセス・キーと秘密キー、およびHTTPリクエストに対して実行されたS3互換認証。 | s3://bucket.myprivatesite.com/file1.csv |
例:
S3互換認証を使用する顧客管理エンドポイント。
この例では、新しいURIsについて、顧客はDBMS_NETWORK_ACL_ADMINパッケージを使用してパブリックまたはプライベートのホスト名パターンを追加する方法を示します。 コード・ブロックは、ユーザーADMINによって実行され、ユーザーSCOTTのHTTPSアクセスをドメイン*.myprivatesite.comのエンドポイントに有効化します。 次に、ユーザーSCOTTが新しく有効化されたエンドポイントにどのようにアクセスするかを示します。 ユーザーSCOTTの資格証明MY_CREDには、URIプレフィクスで示されるHTTPリクエストに対して実行されるS3互換認証のアクセス・キーおよび秘密キーを格納する必要があります。
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*.myprivatesite.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'SCOTT',
principal_type => xs_acl.ptype_db),
private_target => TRUE );
END;
/
BEGIN
DBMS_CLOUD.get_object(
credential_name => 'MY_CRED',
object_uri => 's3://bucket.myprivatesite.com/file1.csv',
directory_name => 'MY_DIR' );
END;
/
パブリック・アクセスを持つ顧客管理エンドポイント
この例では、SCOTTユーザーを登録してパブリックREST APIにアクセスする方法を示します。 ADMINユーザーは、SCOTTユーザーへのアクセスを提供するホストのネットワークACLを作成します。
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'data.cms.gov',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'SCOTT',
principal_type => xs_acl.ptype_db)
);
END;
/
SELECT DBMS_CLOUD.get_response_text(
DBMS_CLOUD.send_request(
uri => 'public://data.cms.gov/provider-data/api/1/datastore/imports/a',
method => DBMS_CLOUD.METHOD_GET,
headers => JSON_OBJECT('Accept' VALUE 'application/json')
)
)
FROM DUAL;
/46.5 DBMS_CLOUDパッケージのフォーマット・オプション
DBMS_CLOUDのformat引数では、ソース・ファイルのフォーマットを指定します。
format引数は、次の2つの方法で指定します。
format => '{"format_option" : âformat_valueâ }' および
format => json_object('format_option' value 'format_value'))次に例を示します。
format => json_object('type' VALUE 'CSV')複数のフォーマット・オプションを指定するには、値を,で区切ります。
たとえば:
format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true',
'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true', 'logretention' value 7)ノート:
AvroまたはParquetのフォーマット・オプションについては、「AvroまたはParquetに対応するDBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。| フォーマット・オプション | 説明 | 構文 |
|---|---|---|
|
|
AWSやOCIオブジェクト・ストレージなどの「Apache Iceberg」表のタイプと、データ・カタログや直接メタデータURIからの情報など、外部表の作成に使用される情報を指定します。 |
|
|
|
|
デフォルト値: |
|
|
ソース・ファイルの文字セットを指定します |
デフォルト値: データベースの文字セット |
|
|
JSONレコードから抽出する必要があるフィールドに対応するJSONパス式の配列。 配列内の各JSONパス式は、「SQL/JSONパス式」で説明されているルールに従う必要があります。 JSON形式および |
文字列形式で表されたJSONパス式のJSON配列。 例: 'columnpath' value |
|
|
ソース・ファイルの圧縮タイプを指定します Zipアーカイブ形式はサポートされていません。 この値に |
デフォルト値: 圧縮しないことを意味するNULL値。 |
|
|
データ型の変換エラーで行が拒否されたときに、関連する列をNULLとして格納するか、その行を拒否します。 |
デフォルト値: |
|
|
ソース・ファイル内の日付書式を指定します。 フォーマット・オプション J MM-DD-YYYYBC MM-DD-YYYY YYYYMMDD HHMISS YYMMDD HHMISS YYYY.DDD YYYY-MM-DD |
デフォルト値: データベースの日付書式 |
|
|
フィールド・デリミタを指定します 特殊文字をデリミタとして使用する場合は、その文字のASCIIコードのHEX値を指定します。 たとえば、次のようにタブ文字をデリミタとして指定します。
|
デフォルト値: |
|
|
外部データ・ファイルのフィールドが表内の列とは異なる順序になるように指定します。 各外部データ・ファイルの最初の行を使用してフィールドの順序を検出し、表の列にマップします。 外部データ・ファイルのフィールド名は、表列の名前と大/小文字を区別しない方法で比較されます。 この形式オプションは、次のプロシージャに適用されます:
|
デフォルト値: |
|
|
フォーマット・オプション
たとえば: format => JSON_OBJECT('enablelogs' value FALSE) |
デフォルト値: |
|
|
フォーマット・オプション
これらのパラメータの値を指定しない場合、ブロック暗号連鎖修飾子およびブロック暗号埋込み修飾子の値は、デフォルトで フォーマット・オプション
encryptionは、次のDBMS_CLOUDプロシージャで使用されます:
たとえば: format => JSON_OBJECT('encryption' value json_object ('type' value DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, 'credential_name' value 'ENCRYPTION_CRED')) |
encryption:value「値」は、暗号化のための追加パラメータを提供するJSON文字列です:
暗号化タイプを指定します。
暗号化キーを格納するために使用される資格証明を指定します。 user_defined_function: value指定されたBLOB (バイナリ・ラージ・オブジェクト)を復号化または暗号化するための完全修飾ユーザー定義ファンクションを指定します。 |
|
|
データは、 たとえば: format => JSON_OBJECT(‘quote’ value ‘(’, ‘endquote’ value ‘)’) |
デフォルト値: |
|
|
指定時にはエスケープ文字として文字""が使用されます。 |
デフォルト値: |
|
|
trueに設定すると、空白行は無視されます。 |
デフォルト値: |
|
|
|
デフォルト値: |
|
|
暗黙的なパーティション化は、次の方法で有効化されます:
|
デフォルト値: |
|
|
|
デフォルト値: |
keyassignment
|
新しいコレクションをモンゴ互換コレクションとして作成するか、JSONコレクションとして作成するかを指定します。 値が デフォルトでは、このパラメータは設定されていません。つまり、新しいコレクションがJSONコレクションとして作成されます。 |
デフォルト: |
|
|
ロードするデータの属性を
このパラメータはオプションであり、モンゴ互換のコレクションへのロードにのみ有効です。 指定しない場合、Oracleは12バイトの一意のシステムIDを生成し、ロードするデータに |
デフォルト:
|
|
|
ロケールに依存する情報を導出可能な言語名(FRENCHなど)を指定します。 |
デフォルト値: Null |
|
|
デフォルトでは、 たとえば:
上の例で指定した
上の例で指定した |
デフォルト値: |
|
|
ログ表名の形式は、logprefix デフォルトでは、logprefixは大文字ですが、指定された値が二重引用符で囲まれている場合は大/小文字が保持されます。 たとえば: format => JSON_OBJECT ('logprefix' value 'TEST')ログ・ファイルでは、 |
デフォルト値: |
|
|
有効な値: たとえば: format => JSON_OBJECT ('logretention' value 7) |
デフォルト値: |
|
|
グループ・セパレータおよび小数点として使用する文字を指定します。 decimal_character: 小数点では、数値の整数部と小数部を区切ります。 group_separator: グループ・セパレータは、整数グループ(千、100万、10億など)を区切ります。 |
デフォルト値: |
|
|
数値書式モデルを指定します。 数値書式モデルでは、指定された有効桁数に数値が丸められます。 数値書式モデルは、1つ以上の数値書式要素で構成されます。
|
デフォルト値: |
|
|
フォーマット・オプション
データ・ファイルが構造化されておらず、 Hive形式に基づかないオブジェクト名の場合、 |
|
|
|
フィールドの引用符文字を指定します。指定した場合、 |
デフォルト値: NULL (引用符なしを意味します) |
|
|
レコード・デリミタを指定します デフォルトでは、 この引数は、デフォルトの動作をオーバーライドする場合に明示的に指定します。たとえば:
レコード・デリミタが存在しないことを示すために、入力ファイルに出現しない
|
デフォルト値: detected newline |
|
|
フォーマット・オプション
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は 外部表の場合、このオプションは、オブジェクト・ストレージのファイルに作成された表でのみサポートされます。 たとえば:
|
デフォルト値 : |
|
|
指定した数の行が拒否された後で、操作をエラー終了します。 |
デフォルト値: |
|
|
ソース・ファイル内のフィールドを囲む引用符を削除します。 |
デフォルト値: |
|
|
ファイルの先頭からスキップする行数を指定します。 |
デフォルト値: 未指定の場合は0、値なしで指定した場合は1 |
|
|
入力データの特性をさらに判断するために地域名を指定します。 |
デフォルト値: Null Oracleがサポートするテリトリの一覧は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のロケール・データに関する項を参照してください。 |
|
|
ソース・ファイル内のタイムスタンプ書式を指定します。 フォーマット・オプション YYYY-MM-DD HH:MI:SS.FF YYYY-MM-DD HH:MI:SS.FF3 YYYY-MM-DD HH24:MI:SS.FF3 MM/DD/YYYY HH:MI:SS.FF3 |
デフォルト値: データベースのタイムスタンプ書式 この文字列には、"$"などのワイルドカード文字を使用できます。 |
|
|
ソース・ファイル内のローカル・タイムゾーン付きタイムスタンプ書式を指定します。 フォーマット・オプション DD Mon YYYY HH:MI:SS.FF TZR MM/DD/YYYY HH:MI:SS.FF TZR YYYY-MM-DD HH:MI:SS+/-TZR YYYY-MM-DD HH:MI:SS.FF3 DD.MM.YYYY HH:MI:SS TZR |
デフォルト値: ローカル・タイムゾーン付きのデータベースのタイムスタンプ書式 |
|
|
ソース・ファイル内のタイムゾーン付きタイムスタンプ書式を指定します。 フォーマット・オプション DD Mon YYYY HH:MI:SS.FF TZR MM/DD/YYYY HH:MI:SS.FF TZR YYYY-MM-DD HH:MI:SS+/-TZR YYYY-MM-DD HH:MI:SS.FF3 DD.MM.YYYY HH:MI:SS TZR |
デフォルト値: タイムゾーン付きのデータベースのタイムスタンプ書式 |
|
|
フィールドの先頭と末尾の空白を切り捨てる方法を指定します。 |
デフォルト値: |
|
|
ファイルのデータがフィールドに対して長すぎる場合、このオプションでは、行を拒否するかわりにフィールドの値を切り捨てます。 |
デフォルト値: |
46.6 EXPORT_DATAのDBMS_CLOUDパッケージ形式オプション
テキスト・ファイル形式、CSV、JSONまたはXML 「Oracle Data Pumpの場合」を使用したDBMS_CLOUD.EXPORT_DATAの有効なフォーマット・パラメータ・オプションについて説明します。
これらは、DBMS_CLOUD.EXPORT_DATAで使用する有効なformatパラメータです。 format typeオプションを使用し、値が次のいずれかである場合、テキスト・ファイルの出力を指定: csv、jsonまたはxml。 また、format typeがdatapumpの場合のformatオプションも表示されます。
format引数は、次の2つの方法で指定します。
format => '{"format_option" : âformat_valueâ }'
および
format => json_object('format_option' value 'format_value'))
次に例を示します。
format => json_object('type' VALUE 'json')
複数のフォーマット・オプションを指定するには、値を,で区切ります。
たとえば:
format => json_object('compression' value 'gzip', 'type' value 'json')
この表は、formatパラメータのtypeオプションが次のいずれかの場合のDBMS_CLOUD.EXPORT_DATAのフォーマット・オプションについて説明しています: CSV、JSONまたはXML。 その他のプロシージャおよびその他の出力タイプについては、「DBMS_CLOUDパッケージ形式オプション」でフォーマット・オプションのリストを参照してください。
| フォーマット・オプション | 説明 | 構文 |
|---|---|---|
|
|
ソース・ファイルの圧縮タイプを指定します ノート: ZIPアーカイブ形式はサポートされていません。
|
デフォルト値: 圧縮しないことを意味するNULL値。
デフォルト値: 型が
|
|
|
カスタム・フィールドのデリミタを指定します。 format => json_object('delimiter' value '|')デリミタ値は、ASCIIコードまたはエスケープ文字にできません。 ノート: このオプションは、csv typeでのみ適用されます。
|
デフォルト値 |
|
|
たとえば: format => JSON_OBJECT(‘quote’ value ‘(’, ‘endquote’ value ‘)’)ノート: このオプションは、csv typeでのみ適用されます。
|
デフォルト値: |
|
|
ノート: このオプションは、csv typeでのみ適用されます。
|
デフォルト値: |
|
|
フォーマット・オプション
これらのパラメータの値を指定しない場合、ブロック暗号連鎖修飾子およびブロック暗号埋込み修飾子の値は、デフォルトで フォーマット・オプション
encryptionは、次のDBMS_CLOUDプロシージャで使用されます:
たとえば: format => JSON_OBJECT('encryption' value json_object ('type' value DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, 'credential_name' value 'ENCRYPTION_CRED')) |
encryption:value「値」は、暗号化のための追加パラメータを提供するJSON文字列です:
暗号化タイプを指定します。
暗号化キーを格納するために使用される資格証明を指定します。 user_defined_function: value指定されたBLOB (バイナリ・ラージ・オブジェクト)を復号化または暗号化するための完全修飾ユーザー定義ファンクションを指定します。 |
|
|
列名を 有効な値は次のとおりです。
たとえば: format => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip', 'header' value true)ノート: このオプションは、csv typeでのみ適用されます。
|
デフォルト値: |
|
|
フォーマット・タイプのデフォルトの選択肢をオーバーライドするカスタム・ファイル拡張子。 これは、 指定した文字列がピリオド(ドット)で始まらない場合、最終的なファイル名でファイル拡張子の前に自動的にドットが挿入されます。 ファイル拡張子を指定しない場合は、値を使用: |
有効な値: 任意のファイル拡張子。 デフォルト値:
format typeオプションに依存します:
|
|
|
生成される出力の最大サイズを表すバイト数。 これは、 |
最小値: 最大値: 1 GB デフォルト値: |
|
|
「CSV内」形式。フィールドは2つのデリミタで囲むことができます。 ノート: このオプションは、csv typeでのみ適用されます。
|
デフォルト値: NULLの意味では、フィールドは引用符で囲みません。 |
|
|
フィールドの先頭と末尾のスペースをCSV形式で切り捨てる方法を指定します。 ノート: このオプションは、csv typeでのみ適用されます。
|
デフォルト値: |
46.7 DBMS_CLOUDのAvroおよびParquetのサポート
この項では、Oracle Databaseで提供されるDBMS_CLOUDのAvroおよびParquetのサポートについて説明します。
46.7.1 AvroまたはParquetに対応するDBMS_CLOUDパッケージのフォーマット・オプション
DBMS_CLOUDのformat引数では、ソース・ファイルのフォーマットを指定します。
format引数は、次の2つの方法で指定します。
format => '{"format_option" : âformat_valueâ }' および
format => json_object('format_option' value 'format_value'))次に例を示します。
format => json_object('type' VALUE 'CSV')複数のフォーマット・オプションを指定するには、値を,で区切ります。
たとえば:
format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
| フォーマット・オプション | 説明 | 構文 |
|---|---|---|
|
|
正規表現パターンは、URI内のファイル名またはサブフォルダ・パスでのみサポートされ、パターン一致は 外部表の場合、このオプションは、オブジェクト・ストレージのファイルに作成された表でのみサポートされます。 たとえば:
|
デフォルト値: |
|
|
ファイル・タイプを指定します。 |
|
|
|
スキーマが 列名はAvroまたはParquetにある列名と一致します。 データ型は、AvroまたはParquetのデータ型からOracleデータ型に変換されます。 すべての列が表に追加されます。 値 値 デフォルト: ノート: AvroまたはParquet形式のファイルの場合、 |
|
46.7.2 DBMS_CLOUDパッケージのAvroからOracleデータ型へのマッピング
Avroデータ型からOracleデータ型へのマッピングについて説明します。
ノート:
複合タイプ(マップ、配列、構造体など)は、Oracle Database 19c以降でサポートされます。 Avro複合タイプの使用方法の詳細は、「DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ」を参照してください。| Avroタイプ | Oracleタイプ |
|---|---|
| INT | NUMBER(10) |
| LONG | NUMBER(19) |
| BOOL | NUMBER(1) |
| UTF8 BYTE_ARRAY | RAW(2000) |
| FLT | BINARY_FLOAT |
| DBL | BINARY_DOUBLE |
| DECIMAL(p) | NUMBER(p) |
| DECIMAL(p,s) | NUMBER(p,s) |
| DATE | DATE |
| STRING | VARCHAR2 |
| TIME_MILLIS | VARCHAR2(20バイト) |
| TIME_MICROS | VARCHAR2(20バイト) |
| TIMESTAMP_MILLIS | TIMESTAMP(3) |
| TIMESTAMP_MICROS | TIMESTAMP(6) |
| ENUM | VARCHAR2( n)。"n"はAVRO ENUMの使用可能な値の実際の最大長です |
| DURATION | RAW(2000) |
| FIXED | RAW(2000) |
| NULL | VARCHAR2(1)バイト |
Avro複合タイプの使用方法の詳細は、「DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ」を参照してください。
46.7.3 DBMS_CLOUD ORCからOracleデータ型へのマッピングのパッケージ化
ORCデータ型からOracleデータ型へのマッピングについて説明します。
ORC複合型の使用の詳細は、「DBMS_CLOUDパッケージAvroおよびParquet複合型」を参照してください。
| ORCタイプ | Oracleタイプ | 詳細情報 |
|---|---|---|
| array | VARCHAR2(n) JSON形式 | DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ |
| bigint (64ビット) | NUMBER(19) | |
| バイナリ | BLOB | |
| ブール(1ビット) | NUMBER(1) | |
| CHAR | CHAR(n) | |
| date | DATE | |
| DOUBLE | BINARY_DOUBLE | |
| FLOAT | BINARY_FLOAT | |
| int (32ビット) | NUMBER(10) | |
| list | VARCHAR2(n) JSON形式 | DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ |
| map | VARCHAR2(n) JSON形式 | DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ |
| smallint (16ビット) | NUMBER(5) | |
| 文字列 | VARCHAR2(4000)またはVARCHAR2(32767) |
フォーマット・パラメータ・オプション |
| struct | VARCHAR2(n) JSON形式 | DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ |
| timestamp | TIMESTAMP | |
| tinyint (8ビット) | NUMBER(3) | |
| union | VARCHAR2(n) JSON形式 | DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ |
| varchar | VARCHAR2(n) |
46.7.4 DBMS_CLOUDパッケージのParquetからOracleデータ型へのマッピング
Parquetデータ型からOracleデータ型へのマッピングについて説明します。
ノート:
複合タイプ(マップ、配列、構造体など)は、Oracle Database 19c以降でサポートされます。 Parquet複合タイプの使用方法の詳細は、「DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ」を参照してください。| Parquetタイプ | Oracleタイプ |
|---|---|
| UINT_64 | NUMBER(20) |
| INT_64 | NUMBER(19) |
| UINT_32 | NUMBER(10) |
| INT_32 | NUMBER(10) |
| UINT_16 | NUMBER(5) |
| INT_16 | NUMBER(5) |
| UINT_8 | NUMBER(3) |
| INT_8 | NUMBER(3) |
| BOOL | NUMBER(1) |
| UTF8 BYTE_ARRAY | VARCHAR2(4000バイト) |
| FLT | BINARY_FLOAT |
| DBL | BINARY_DOUBLE |
| DECIMAL(p) | NUMBER(p) |
| DECIMAL(p,s) | NUMBER(p,s) |
| DATE | DATE |
| STRING | VARCHAR2(4000)またはVARCHAR2(32767)
フォーマット・パラメータ・オプション |
| TIME_MILLIS | VARCHAR2(20バイト) |
| TIME_MILLIS_UTC | VARCHAR2(20バイト) |
| TIME_MICROS | VARCHAR2(20バイト) |
| TIME_MICROS_UTC | VARCHAR2(20バイト) |
| TIMESTAMP_MILLIS | TIMESTAMP(3) |
| TIMESTAMP_MILLIS_UTC | TIMESTAMP(3) |
| TIMESTAMP_MICROS | TIMESTAMP(6) |
| TIMESTAMP_MICROS_UTC | TIMESTAMP(6) |
| TIMESTAMP_NANOS | TIMESTAMP(9) |
Parquet複合タイプの使用方法の詳細は、「DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ」を参照してください。
46.7.5 DBMS_CLOUD Oracleデータ型からParquetへのマッピングのパッケージ化
Oracleデータ型からParquetデータ型へのマッピングについて説明します。
| Oracleタイプ | Parquetタイプ |
|---|---|
| BINARY_DOUBLE | DBL |
| BINARY_FLOAT | FLT |
| DATE | DATE |
| NUMBER(p,s) | DECIMAL(p,s) |
| NUMBER(p) | DECIMAL(p) |
| TIMESTAMP(3) | TIMESTAMP_MILLIS |
| TIMESTAMP(3) | TIMESTAMP_MILLIS_UTC |
| TIMESTAMP(6) | TIMESTAMP_MICROS |
| TIMESTAMP(6) | TIMESTAMP_MICROS_UTC |
| TIMESTAMP(9) | TIMESTAMP_NANOS |
| VARCHAR2(4000) | STRING |
NLSセッション・パラメータ
NLSセッション・パラメータNLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT, NLS_TIMESTAMP_TZ_FORMATおよびNLS_NUMERIC_CHARACTERSは、日付、タイムスタンプ、タイムゾーン付きタイムスタンプ書式、および小数マーカー付きタイムスタンプの基数セパレータが、これらの列タイプの表を問い合せるときにどのように表示されるかを定義します。
また、DBMS_CLOUD.EXPORT_DATAを使用してデータをエクスポートし、Parquet出力を指定した場合、Oracle Databaseはこれらのパラメータの値をNLS_SESSION_PARAMETERS表から読み取ります。 Oracle Databaseは、これらの値を使用して、Oracleデータ型のDATEまたはTIMESTAMPをParquet型に変換します。
NLS_SESSION_PARAMETERSパラメータでは、RR書式マスク(2文字の年指定)がサポートされています。
DBMS_CLOUD.EXPORT_DATAを使用してデータをParquetにエクスポートする場合、年のRR書式マスクはこれらのパラメータではサポートされていません。 parquetにエクスポートしようとして、NLS_SESSION_PARAMETERSがRR書式マスクを使用するように設定されている場合、アプリケーション・エラーが発生します(RR書式のデフォルト値はNLS_TERRITORYパラメータの値によって異なります)。
パラメータNLS_DATE_FORMAT、NLS_TIMESTAMP_FORMATまたはNLS_TIMESTAMP_TZ_FORMATのいずれかでRR書式マスクを使用する場合、DBMS_CLOUD.EXPORT_DATAを使用してデータをParquetにエクスポートするには、書式値をサポートされている値に変更する必要があります。 たとえば:
ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY";
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH:MI:SS.FF TZH:TZM';
NLS_SESSION_PARAMETERSビューを問い合せて変更を確認できます:SELECT value FROM NLS_SESSION_PARAMETERS
WHERE parameter IN ('NLS_DATE_FORMAT','NLS_TIMESTAMP_FORMAT','NLS_TIMESTAMP_TZ_FORMAT');NLS_DATE_FORMATが設定されている場合、DATEデータ型の列に適用されます。 NLS_TIMESTAMP_FORMATが設定されている場合は、datattypeがTIMESTAMPの列に適用されます。 NLS_TIMESTAMP_TZ_FORMATが設定されている場合、TIMESTAMP WITH TIME ZONEデータ型の列に適用されます。
46.7.6 DBMS_CLOUDパッケージのAvroおよびParquet複合タイプ
AvroおよびParquet複合データ型からOracleデータ型へのマッピングについて説明します。
Oracle Databaseは複合データ型をサポートしています。次の複合データ型が含まれます。
-
struct
-
list
-
map
-
union
-
array
AvroまたはParquetのソース・ファイル・タイプを指定したときに、ソース・ファイルに複合列が含まれている場合、Oracle Databaseの問合せは複合列に対応するJSONを返します。 これにより、問合せ結果の処理が簡略化されます。つまり、Oracleの強力なJSON解析機能をファイル・タイプおよびデータ・タイプのすべてに一貫して使用できるということです。 次の表に、Oracle Databaseの複合タイプに対応するフォーマットを示します。
ノート:
複合フィールドはVARCHAR2列にマップされ、VARCHAR2のサイズ制限が適用されます。
| タイプ | Parquet | Avro | Oracle |
|---|---|---|---|
| List: 値のシーケンス | List | Array | VARCHAR2 (JSON形式)
|
| Map: 単一のキーが付いたオブジェクトのリスト | Map | Map | VARCHAR2 (JSON形式)
|
| Union: 異なるタイプの値 | 該当なし | Union | VARCHAR2 (JSON形式)
|
| Object: ゼロ個以上のキー/値のペア | Struct | Record | VARCHAR2 (JSON形式)
|
46.7.7 DBMS_CLOUDパッケージのAvroおよびParquetのOracle列名へのマッピング
AvroおよびParquetの列名をOracleの列名に変換する方法のルールについて説明します。
AvroおよびParquet列名については次のものがサポートされていますが、外部表におけるOracle SQL参照には二重引用符の使用が必要になることがあります。 そのため、AvroおよびParquet列名では、次の項目を使用しないようにして、列名の参照時に二重引用符を使用しなくて済むようにします。
-
埋込みの空白
-
先頭の数字
-
先頭のアンダースコア
-
Oracle SQLの予約語
次の表に、AvroおよびParquetの列名の様々なタイプと、外部表内でOracle列名の列名を使用するためのルールを示します。
| AvroまたはParquetの名前 | CREATE TABLEの名前 | Oracle CATALOG | 有効なSQL | ノート |
|---|---|---|---|---|
| part、PartまたはPART | part、Part、PART | PART |
|
Oracleでは引用符で囲まれていない列名を暗黙的に大文字にします |
| Ord No | "Ord No" | Ord No | select "Ord No" |
二重引用符は埋込みの空白がある場合に必要になり、文字の大/小文字を維持することにもなります |
| __index_key__ | "__index_key__" | __index_key__ | select "__index_key__" |
二重引用符は先頭にアンダースコアがある場合に必要になり、文字の大/小文字を維持することにもなります |
| 6Way | "6Way" | 6Way | select "6Way" |
二重引用符は先頭に数字がある場合に必要になり、文字の大/小文字を維持することにもなります |
| create、Create、CREATEなど(あらゆる大/小文字のバリエーション)。partition、Partition、PARTITIONなど(Oracleの予約語) | "CREATE" "PARTITION" | CREATE PARTITION |
|
Oracle SQLの予約語を囲む二重引用符が必要です。 それらは大文字に強制されますが、SQLで使用する場合は常に二重引用符で囲む必要があります |
| rowid、Rowid、ROWidなど(ROWIDのノートを参照) | rowid |
|
ROWIDの場合は、ROWIDの大/小文字混在や小文字のバリエーションを保持するため、常に二重引用符で囲むことで元の大/小文字のバリエーションを使用する必要があります。 表のOracle ROWIDとの特有の競合があるため、大文字で指定したROWIDは自動的に小文字のROWIDとして格納されるため、参照時には常に二重引用符で囲む必要があります。 |
ノート:
-
一般に、外部表の列名は二重引用符なしで参照できます。
-
列名に埋込みの空白、先頭のアンダースコア("_")または先頭の数字("0"から"9")が含まれていない場合は、列名の元の大/小文字が維持されるため、常に二重引用符で囲むことでAvroまたはParquetの列名の元の大/小文字を使用して参照する必要があります。
-
フォーマットとして
avroまたはparquetを指定したDBMS_CLOUD.CREATE_EXTERNAL_TABLEを使用して外部表を作成したら、SQL*PlusのDESCRIBEコマンドを使用して表の列名を表示します。 -
AvroまたはParquetの列名にOracle SQLの予約語が使用されている場合、その列名をSQL内で参照するときは常に二重引用符で囲む必要があります。
46.8 DBMS_CLOUD例外
次の表に、DBMS_CLOUDの例外を示します。
| 例外 | コード | 説明 |
|---|---|---|
reject_limit |
20003 | 外部表の拒否の制限に達しました。 |
credential_not_exist |
20004 | 資格証明オブジェクトが存在しません。 |
table_not_exist |
20005 | 表が存在しません。 |
unsupported_obj_store |
20006 | サポートされていないオブジェクト・ストアURIが指定されました。 |
iden_too_long |
20008 | 識別子が長すぎます。 |
invalid_format |
20009 | フォーマット引数が無効です。 |
missing_credential |
20010 | 必須の資格証明オブジェクト情報が指定されていません。 |
invalid_object_uri |
20011 | 無効なオブジェクトURIが指定されました。 |
invalid_partitioning_clause |
20012 | パーティション化句がないか、指定されていません。 |
unsupported_feature |
20013 | 現在のデータベース・バージョンには存在しない未サポートの機能が使用されました。 |
part_not_exist |
20014 | パーティションまたはサブパーティションが存在しないか、表がパーティション化外部表またはハイブリッド・パーティション表ではありません。 |
invalid_table_name |
20016 | 無効な表名が使用されました。 |
invalid_schema_name |
20017 | 無効なスキーマ名が使用されました。 |
invalid_dir_name |
20018 | 無効なディレクトリ名が使用されました。 |
invalid_file_name |
20019 | 無効なファイル名が使用されました。 |
invalid_cred_attribute |
20020 | 無効な資格証明の属性が指定されました。 |
table_exist |
20021 | 表がすでに存在しています。 |
credential_exist |
20022 | 資格証明オブジェクトがすでに存在します。 |
invalid_req_method |
20023 | リクエスト・メソッドが長すぎるか、無効です。 |
invalid_req_header |
20024 | 無効なリクエスト・ヘッダーが指定されました。 |
file_not_exist |
20025 | ファイルが存在しません。 |
invalid_response |
20026 | HTTP応答が無効でした。 |
invalid_operation |
20027 | 無効なタスク・クラスまたはIDが指定されました。 |
invalid_user_name |
20028 | 無効なユーザー名が指定されました。 |
脚注の凡例
脚注3: AzureクラウドREST APIコールのサポートは、ドメイン"blob.windows.net"に制限されます。