次の方法で共有


Copy アクティビティで Oracle Database を構成する

この記事では、データ パイプラインでの Copy アクティビティを使用して、Oracle Database 間でデータをコピーする方法について説明します。

サポートされている構成

Copy アクティビティの下の各タブの構成については、それぞれ次のセクションを参照してください。

全般

[全般設定] タブを構成するには、全般設定のガイダンスを参照してください。

ソース

コピー アクティビティの [ソース] タブの Oracle Database では、次のプロパティがサポートされています。

[ソース] タブとプロパティのリストを示すスクリーンショット。

次のプロパティは必須です。

  • [接続]: 接続リストから Oracle Database 接続を選択します。 接続が存在しない場合は、接続リストの下部にある [その他] を選択して、新しい Oracle Database 接続を作成します。
  • [クエリの使用]: [テーブル][クエリ] から選択します。
    • [テーブル] を選択した場合:

      • テーブル: データを読み取る Oracle Database のテーブルの名前を指定します。 ドロップダウン リストからテーブルを選択するか、[手動で入力] を選択してスキーマとテーブル名を選択します。

        テーブルのクエリの使用を示すスクリーンショット。

    • [クエリ] を選択した場合:

      • [クエリ]: カスタムの SQL クエリを使用してデータを読み取ります。 (例: SELECT * FROM MyTable)。

        パーティション分割された読み込みを有効にするときは、クエリ内で対応する組み込みのパーティション パラメーターをすべてフックする必要があります。 例については、「Oracle Database からの並列コピー」セクションを参照してください。

        [クエリの使用] のスクリーンショット。

[詳細設定] では、次のフィールドを指定できます。

  • パーティション オプション: Oracle Database からのデータの読み込みに使用するデータ パーティション分割オプションを指定します。 パーティション オプションが有効になっている場合 (つまり、なしではない場合)、Oracle のデータベースから同時にデータを読み込む並列処理の次数は、Copy アクティビティの設定タブの [コピーの並列処理] によって制御されます。

    [なし] を選択すると、パーティションを使用しないと選択したことになります。

    [テーブルの物理パーティション] を選択した場合:

    • パーティション名: コピーする必要がある物理パーティションのリストを指定します。

      クエリを使用してソース データを取得する場合は、WHERE 句で ?DfTabularPartitionName をフックします。 例については、「Oracle Database からの並列コピー」セクションを参照してください。

      テーブルの物理パーティションを選択したときの構成を示すスクリーンショット。

    [ダイナミック レンジ] を選択した場合:

    • パーティション列名: 並列コピーでレンジ パーティションによって使用されるソース列を整数型で指定します。 指定されていない場合は、テーブルの主キーが自動検出され、パーティション列として使用されます。

      クエリを使用してソース データを取得する場合は、WHERE 句で ?DfRangePartitionColumnName をフックします。 例については、「Oracle Database からの並列コピー」セクションを参照してください。

    • パーティションの上限: データをコピーするパーティション列の最大値を指定します。

      クエリを使用してソース データを取得する場合は、WHERE 句で ?DfRangePartitionUpbound をフックします。 例については、[Oracle Database からの並列コピー] セクションの並列コピーを参照してください。

    • パーティションの下限: データをコピーするパーティション列の最小値を指定します。

      クエリを使用してソース データを取得する場合は、WHERE 句で ?DfRangePartitionLowbound をフックします。 例については、[Oracle Database からの並列コピー] セクションの並列コピーを参照してください。

      [ダイナミック レンジ] を選択したときの構成を示すスクリーンショット。

  • [クエリ タイムアウト (分)]: クエリ コマンド実行時のタイムアウト時間を指定します。既定値は 120 分です。 このプロパティにパラメーターを設定する場合は、「02:00:00」(120 分) などの期間の値が使用できます。

  • 追加の列: ソース ファイルの相対パスまたは静的値を保存するための追加のデータ列を追加します。 後者では式がサポートされています。

宛先

Copy アクティビティの [コピー先] タブの Oracle Database では、次のプロパティがサポートされています。

[コピー先] タブを示すスクリーンショット。

次のプロパティは必須です。

  • [接続]: 接続リストから Oracle Database 接続を選択します。 接続が存在しない場合は、接続リストの下部にある [詳細] を選択して、新しい Oracle Database 接続を作成します。
  • [テーブル]: ドロップダウン リストからデータベースのテーブルを選択します。 または、[手動で入力] をチェックして、スキーマとテーブル名を手動で入力します。

[詳細設定] では、次のフィールドを指定できます。

  • 事前コピー スクリプト: 各実行で Oracle Database にデータを書き込む前に、Copy アクティビティを実行する SQL クエリを指定します。 このプロパティを使用して、事前に読み込まれたデータをクリーンアップできます。
  • [書き込みバッチ タイムアウト]: 一括挿入操作がタイムアウトになるまでの完了を待つ時間です。許容される値は期間です。 たとえば "00:30:00" (30 分) を指定できます。
  • [書き込みバッチ サイズ]: Oracle Database テーブルに挿入するバッチあたりの行数を指定します。 使用可能な値は integer (行数) です。 既定値は 10,000 です。
  • 最大コンカレント接続数: アクティビティの実行中にデータ ストアに対して確立されるコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。

マッピング

[マッピング] タブの構成については、「[マッピング] タブでマッピングを構成する」を参照してください。

設定

[設定] タブの構成については、「[設定] タブで他の設定を構成する」を参照してください。

Oracle Database からの並列コピー

Oracle Database コネクタでは、Oracle Database からデータを並列コピーするために、組み込みのデータ パーティション分割を提供します。 データ パーティション分割オプションは、Copy アクティビティの [ソース] タブにあります。

パーティション分割されたコピーを有効にすると、サービスによって Oracle Database ソースに対する並列クエリが実行され、パーティションごとにデータが読み込まれます。 並列処理の次数は、Copy アクティビティの設定タブの [コピーの並列処理] 設定によって制御されます。たとえば、並列処理の次数を 4 に設定した場合、指定したパーティション オプションと設定に基づいて 4 つのクエリが同時に生成され、実行されます。各クエリでは、SQL Server からデータの一部を取得します。

特に、Oracle Database から大量のデータを読み込む場合は、データ パーティション分割を使用した並列コピーを有効にすることをお勧めします。 さまざまなシナリオの推奨構成を以下に示します。 ファイルベースのデータ ストアにデータをコピーする場合は、複数のファイルとしてフォルダーに書き込む (フォルダー名のみを指定する) ことをお勧めします。この場合、1 つのファイルに書き込むよりもパフォーマンスが優れています。

シナリオ 推奨設定
物理パーティションに分割された大きなテーブル全体から読み込む。 パーティション オプション: テーブルの物理パーティション。

実行中に、サービスによって物理パーティションが自動的に検出され、パーティションごとにデータがコピーされます。
物理パーティションがなく、データ パーティション分割用の整数列がある大きなテーブル全体から読み込む。 パーティション オプション: 動的範囲パーティション。
パーティション列: データのパーティション分割に使用される列を指定します。 指定されていない場合は、主キー列が使用されます。
カスタム クエリを使用して大量のデータを読み込む (物理パーティションがある場合)。 パーティション オプション: テーブルの物理パーティション。
クエリ: SELECT * FROM <TABLENAME> PARTITION("?DfTabularPartitionName") WHERE <your_additional_where_clause>

パーティション名: データのコピー元のパーティション名を指定します。 指定されていない場合は、Oracle Database データで指定したテーブルの物理パーティションがサービスによって自動検出されます。
実行中に、サービスによって ?DfTabularPartitionName が実際のパーティション名に置き換えられ、Oracle Database に送信されます。
カスタム クエリを使用して大量のデータを読み込む (物理パーティションがなく、データ パーティション分割用の整数列がある場合)。 パーティション オプション: 動的範囲パーティション。
クエリ: SELECT * FROM <TABLENAME> WHERE ?DfRangePartitionColumnName <= ?DfRangePartitionUpbound AND ?DfRangePartitionColumnName >= ?DfRangePartitionLowbound AND <your_additional_where_clause>
パーティション列: データのパーティション分割に使用される列を指定します。 整数データ型の列に対してパーティション分割を実行できます。
パーティションの上限パーティションの下限: パーティション列に対してフィルター処理を実行して、下限から上限までの範囲内のデータのみを取得する場合に指定します。

実行中に、サービスによって ?DfRangePartitionColumnName?DfRangePartitionUpbound?DfRangePartitionLowbound が各パーティションの実際の列名および値の範囲に置き換えられ、Oracle Database に送信されます。
たとえば、パーティション列 "ID" で下限が 1、上限が 80 に設定され、並列コピーが 4 に設定されている場合、サービスは 4 つのパーティションでデータを取得します。 これらの ID の範囲はそれぞれ [1, 20]、[21, 40]、[41, 60]、[61, 80] です。

ヒント

パーティション分割されていないテーブルからデータをコピーするときは、"動的範囲" パーティション オプションを使用して、整数列に対してパーティション分割を行うことができます。 ソース データにこのような種類の列が含まれていない場合は、ソース クエリで ORA_HASH 関数を利用して列を生成し、それをパーティション列として使用できます。

表の概要

次の表に、Oracle Database でのコピー アクティビティの詳細を示します。

ソース情報

名前 Description Value 必須 JSON スクリプト プロパティ
接続 ソース データ ストアへの実際の接続。 <Oracle Database 接続> はい つながり
[クエリの使用] Oracle Database からデータを読み取る方法。 [テーブル] を適用して指定したテーブルからデータを読み取るか、SQL クエリを使用してデータを読み取るために [クエリ] を適用します。 [テーブル]
[クエリ]
はい /
テーブルの場合
スキーマ名 スキーマの名前。 < スキーマ名 > いいえ schema
table name テーブルの名前です。 < 実際のテーブル名 > いいえ テーブル
クエリ
クエリ カスタム SQL クエリを使用してデータを読み取ります。 たとえば SELECT * FROM MyTable です。
パーティション分割された読み込みを有効にするときは、クエリ内で対応する組み込みのパーティション パラメーターをすべてフックする必要があります。 例については、「Oracle Database からの並列コピー」セクションを参照してください。
<SQL クエリ> いいえ oracleReaderQuery
パーティション オプション Oracle Database からのデータの読み込みに使用されるデータ パーティション分割オプション。 なし (デフォルト)
テーブルの物理パーティション
動的範囲
いいえ /
テーブルの物理パーティション
パーティション名 コピーする必要がある物理パーティションのリスト。 クエリを使用してソース データを取得する場合は、WHERE 句で ?DfTabularPartitionName をフックします。 <ユーザーのパーティション名> いいえ partitionNames
ダイナミック レンジ
パーティション列名 並列コピーの範囲パーティション分割で使用される整数型のソース列の名前を指定します。 指定されていない場合は、テーブルの主キーが自動検出され、パーティション列として使用されます。
クエリを使用してソース データを取得する場合は、WHERE 句で ?DfRangePartitionColumnName をフックします。 例については、「Oracle Database からの並列コピー」セクションを参照してください。
< パーティション列名> いいえ partitionColumnName
パーティション上限 データをコピーするパーティション列の最大値を指定します。クエリを使用してソース データを取得する場合は、WHERE 句で ?DfRangePartitionUpbound をフックします。 例については、[Oracle Database からの並列コピー] セクションの並列コピーを参照してください。 <パーティション上限> いいえ partitionUpperBound
パーティション下限 データをコピーするパーティション列の最小値を指定します。クエリを使用してソース データを取得する場合は、WHERE 句で ?DfRangePartitionLowbound をフックします。 例については、[Oracle Database からの並列コピー] セクションの並列コピーを参照してください。 <パーティション下限> いいえ partitionLowerBound
クエリ タイムアウト クエリ コマンドの実行のタイムアウト (既定値は 120 分)。 TimeSpan いいえ queryTimeout
追加の列 ソース ファイルの相対パスまたは静的値を保存するための追加のデータ列を追加します。 後者では式がサポートされています。 • 名前
• 値
いいえ additionalColumns:
•名前
• value

コピー先の情報

名前 Description Value 必須 JSON スクリプト プロパティ
接続 コピー先データ ストアへの接続。 <Oracle Database 接続> はい つながり
Table コピー先のデータ テーブル。 < コピー先テーブルの名前> はい /
スキーマ名 スキーマの名前。 < スキーマ名 > はい schema
table name テーブルの名前です。 < 実際のテーブル名 > はい テーブル
コピー前スクリプト 毎回の実行で、データを Oracle Database に書き込む前に実行する Copy アクティビティの SQL クエリ。 このプロパティを使用して、事前に読み込まれたデータをクリーンアップできます。 <ユーザーの事前コピー スクリプト> いいえ preCopyScript
[書き込みバッチ タイムアウト] タイムアウトする前に一括挿入操作の完了を待つ時間です。 TimeSpan いいえ writeBatchTimeout
[Write batch size](書き込みバッチ サイズ) SQL テーブルに挿入するバッチあたりの行数。 integer
(既定値は 10,000)
いいえ writeBatchSize
最大コンカレント接続数 アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 < 最大コンカレント接続数 > いいえ maxConcurrentConnections