専用Exadataインフラストラクチャ上のAutonomous Databaseを使用した外部データの問合せ
専用Exadataインフラストラクチャ上のAutonomous Databaseでデータの問合せおよび検証を行うためのパッケージおよびツールについて説明します。
外部データはデータベースによって管理されませんが、DBMS_CLOUD
プロシージャを使用して外部データを問い合せることはできます。外部データの問合せはデータベース表の問合せほど高速ではありませんが、この方法を使用すると、外部ソース・ファイルおよび外部データの問合せの実行をすばやく開始できます。
DBMS_CLOUD
プロシージャを使用すると、外部表の外部ソース・ファイル内にあるデータを検証できるため、問題を特定して、データを使用する前に外部表のデータを修正するか、無効なデータを除外することができます。
- 外部データの問合せ
クラウドのファイルのデータを問合せするには、まず、オブジェクト・ストレージ資格証明をAutonomous Databaseに格納してから、PL/SQLプロシージャDBMS_CLOUD.CREATE_EXTERNAL_TABLE
を使用して外部表を作成する必要があります。 - 外部データの検証
外部表を検証するには、プロシージャDBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
を使用します。 - データ検証のログの表示
親トピック: 統合
外部データの問合せ
クラウドのファイルのデータを問合せするには、まず、オブジェクト・ストレージ資格証明をAutonomous Databaseに格納してから、PL/SQLプロシージャDBMS_CLOUD.CREATE_EXTERNAL_TABLE
を使用して外部表を作成する必要があります。
この例のソース・ファイルchannels.txt
には、次のデータが含まれています:
S,Direct Sales,Direct
T,Tele Sales,Direct
C,Catalog,Indirect
I,Internet,Indirect
P,Partners,Others
外部データの検証
外部表を検証するには、プロシージャDBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
を使用します。
外部表を検証する前に、DBMS_CLOUD.CREATE_EXTERNAL_TABLE
プロシージャを使用して外部表を作成する必要があります。次に、DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
プロシージャを使用してそれを検証します。例:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
(
table_name => 'CHANNELS_EXT' );
END;
/
このプロシージャによってソース・ファイルがスキャンされ、外部表の作成時に指定したフォーマット・オプションを使用して検証されます。
検証操作は、デフォルトでソース・ファイル内のすべての行をスキャンし、行が拒否されると停止します。行のサブセットのみを検証する場合は、rowcount
パラメータを使用します。rowcount
パラメータが設定されている場合、検証操作は行をスキャンし、行が拒否されるか、指定した数の行がエラーなしで検証されると停止します。
たとえば、次の検証操作は100行をスキャンし、行が拒否されるか、100行がエラーなしで検証されると停止します:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100 );
END;
/
行が拒否されても検証を停止せずに、拒否されたすべての行を確認する場合は、stop_on_error
パラメータをFALSE
に設定します。この場合、VALIDATE_EXTERNAL_TABLE
は、すべての行をスキャンし、拒否されたすべての行をレポートします。
行のサブセットのみを検証する場合は、rowcount
パラメータを使用します。rowcount
が設定され、stop_on_error
がFALSE
に設定されている場合、検証操作は行をスキャンし、指定した数の行が拒否されるか、指定した数の行がエラーなしで検証されると停止します。たとえば、次の例は100行をスキャンし、100行が拒否されるか、100行がエラーなしで検証されると停止します:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100,
stop_on_error => FALSE );
END;
/
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
パラメータの詳細は、VALIDATE_EXTERNAL_TABLEプロシージャを参照してください。
表dba_load_operations
およびuser_load_operations
の検証操作の結果を確認するには、データ検証のログの表示を参照してください。
データ検証のログの表示
外部表の検証後、ロード操作表を問い合せると、検証操作の結果を確認できます:
-
dba_load_operations
: すべての検証操作が表示されます。 -
user_load_operations
: スキーマ内の検証操作が表示されます。
これらの表を使用して、ロード検証情報を確認できます。たとえば、user_load_operations
を問い合せるには、次のSELECT文を使用します:
SELECT table_name,owner_name,type,status,start_time,update_time,logfile_table,badfile_table
FROM user_load_operations
WHERE type = 'VALIDATE';
TABLE_NAME OWNER_NAME TYPE STATUS START_TIME UPDATE_TIME LOGFILE_TABLE BADFILE_TABLE
------------- ---------- ---------- ---------- -------------- ------------- --------------- ---------------
CHANNELS_EXT SH VALIDATE COMPLETED 13-NOV-17... 13-NOV-17... VALIDATE$21_LOG VALIDATE$21_BAD
TYPE
列でこのSQL文をWHERE
句とともに使用すると、VALIDATE
タイプのロード操作がすべて表示されます。
LOGFILE_TABLE
列には、検証操作のログを確認するための問合せを実行できる表の名前が表示されます。たとえば、次の問合せでは、この検証操作のログが表示されます:
SELECT * FROM VALIDATE$21_LOG;
BADFILE_TABLE
列には、検証中にエラーが発生した行を確認するための問合せを実行できる表の名前が表示されます。たとえば、次の問合せでは、前述の検証操作で拒否されたレコードが表示されます:
SELECT * FROM VALIDATE$21_BAD;
ログに示されているエラーおよびBADFILE_TABLE
に示されている行によっては、DROP TABLE
コマンドを使用して外部表を削除してから、DBMS_CLOUD.CREATE_EXTERNAL_TABLE
で適切なフォーマット・オプションを指定して外部表を再作成することで、エラーを修正できる場合があります。
LOGFILE_TABLE
表およびBADFILE_TABLE
表は、各検証操作につき2日間保存されてから、自動的に削除されます。