Oracle Database for DataStage コネクター

DataStage®Oracle Database for DataStage コネクターを使用して、 Oracle データベース・システムにアクセスし、読み取り、書き込み、およびロードの各機能を実行します。

前提条件

接続を作成します。 手順については、 DataStageでのデータ・ソースへの接続 および Oracle Database for DataStage 接続を参照してください。

ソースとしてOracle DatabaseはDataStageの場合コネクタからデータを読み込む

Oracle 表またはビューの行を読み取るようにコネクターを構成するには、ソース表またはビューを指定するか、完全な SELECT ステートメントまたは PL/SQL ブロックを定義する必要があります。

「読み取りモード」 で使用可能なプロパティーは、 「選択」 モードと 「PL/SQL」 モードのどちらを選択するかによって異なります。

Oracle Database ( DataStage の場合) データベースからのデータの読み取り
  1. ジョブ・デザイン・キャンバスで、 Oracle Database for DataStage コネクターをダブルクリックします。
  2. 「出力」タブで、 「使用法」をクリックします。
  3. 「読み取りモード」「選択」 または 「PL/SQL」 に設定します。
  4. 「読み取りモード」「選択」に設定した場合は、以下のいずれかの方法を使用してデータのソースを指定します。
    • 「実行時に SQL を生成」 「はい」 に設定し、 「表名」 プロパティーに表またはビューの名前を入力します。 構文 schema_name.table_nameを使用します。ここで、 schema_name は表の所有者です。 schema_nameを指定しない場合、コネクターは、現在接続されているユーザーに属するスキーマを使用します。 「テーブル・スコープ」 プロパティーから、テーブルのどの部分にアクセスするかを選択できます。
    • 「実行時に SQL を生成」「いいえ」に設定し、 「ステートメントの選択」 プロパティーに SELECT ステートメントを指定します。
    • 「実行時に SQL を生成」「いいえ」に設定し、 「ステートメントの選択」 プロパティーに SQL ステートメントを含むファイルの完全修飾ファイル名を入力します。
  5. 「読み取りモード」PL/SQLに設定した場合は、以下のいずれかの方法を使用してデータのソースを指定します。
    • 「PL/SQL ブロック」 プロパティーに PL/SQL ブロックを手動で入力します。
    • 「PL/SQL ブロック」 プロパティーに、PL/SQL ブロックを含むファイルの完全修飾ファイル名を入力します。

    指定する PL/SQL ブロックは、キーワード DECLARE または BEGIN で始まり、キーワード END で終わる必要があり、END キーワードの後にセミコロンを入力する必要があります。

  6. 以下のオプション・プロパティーを構成できます。
    • 「セッション」 タブで、以下のようにします。
      • プリフェッチ行カウント: このプロパティーに 1 以外の値を設定して、 Oracle データベースから事前にその数の行をプリフェッチします。
      • プリフェッチ・バッファー・サイズ: 指定されたバッファー・サイズに収まるだけの数のレコードをフェッチする値を入力します。
      • BFILE 内容の転送: BFILE 列の値を転送するときに、ファイルの場所ではなく外部ファイルの内容を転送します。

      データが処理される前または処理された後に 1 回実行されるか、データが処理される前または処理された後に各ノードで 1 回実行される BEFORE/AFTER SQL ステートメントを指定できます。

    • 「トランザクション」 タブで、以下のようにします。
      • 分離レベル: Oracle Database for DataStage コネクターによってアクセスされているデータが、同時に実行されている他のトランザクション、作業単位、またはプロセスからロックまたは分離される度合いを指定します。
      • レコード・カウント: トランザクション当たりのレコード数。 値 0 は、使用可能なすべてのレコードを意味します。
      • ウェーブの終わりをマーク: コネクターがバッチ処理を処理する方法を選択します。
  7. 保存 をクリックします。

パーティション・データの読み取り

複数のノードを使用するジョブでは、ステージに指定された各ノードが、ソース表から異なるデータのサブセットを読み取ります。

Oracle Database for DataStage データベースからのパーティション・データの読み取り
  1. 「出力」タブで、 「パーティション読み取りを有効にする」「はい」に設定します。
  2. 「読み取りモード」「選択」に設定し、コネクターが実行時に使用する SELECT ステートメントを定義します。
    • 「実行時に SQL を生成」「はい」に設定し、 「表名」 プロパティーに表またはビューの名前を入力します。 構文 schema_name.table_nameを使用します。ここで、 schema_name は表の所有者です。 schema_nameを指定しない場合、コネクターは、現在接続されているユーザーに属するスキーマを使用します。 コネクターは、SELECT ステートメントを自動的に生成して実行します。

      パーティション表の特定のパーティションからデータを読み取るには、 「表の有効範囲」 プロパティーを 「単一パーティション」 に設定し、 「パーティション名」 プロパティーにパーティションの名前を指定します。 その後、コネクターは、生成された SELECT ステートメントに PARTITION(partition_name) 節を自動的に追加します。 複合パーティション表の特定のサブパーティションからデータを読み取るには、 「表の有効範囲」 プロパティーを 「単一サブパーティション」に設定します。

    • 「実行時に SQL を生成」「いいえ」に設定し、 「ステートメントの選択」 プロパティーに SELECT ステートメントを指定します。 SQL ステートメントを入力することも、SQL ステートメントを含むファイルの完全修飾ファイル名を入力することもできます。
  3. 使用する 「パーティション読み取り方式」 を選択します。 デフォルトのパーティション方式は Rowid rangeです。
    • 「Rowid range」 または 「Minimum and maximum range」 パーティション方式を選択する場合は、 「Partition または subpartition name for partitioned reads」 プロパティーで、パーティション読み取り方式が使用するパーティションまたはサブパーティションの名前を指定します。

      「パーティション読み取りのパーティション名またはサブパーティション名」 プロパティーに値を指定しない場合、コネクターは、パーティション読み取り方式の入力として表全体を使用します。

    • 「モジュラス」 または 「最小および最大範囲」 パーティション読み取り方式を選択した場合は、 「パーティション読み取りの列名」に、その方式に使用するソース表の列の名前を入力します。 列は、表内の既存の列でなければならず、NUMBER(p) データ・タイプでなければなりません。ここで、 p は数値精度で、位取りはゼロでなければなりません。
    • 「パーティション読み取りの表名」 プロパティーで、各ノードがソース表から読み取るデータのサブセットを定義するためにパーティション読み取り方式で使用する表の名前を指定します。 表名を指定しない場合、コネクターは 「実行時に SQL を生成」 プロパティーの値を使用して表名を決定します。 「実行時に SQL を生成」「はい」に設定されている場合、コネクターは、 「表名」 プロパティーで指定されている表名を使用します。 「実行時に SQL を生成」 プロパティーが 「いいえ」に設定されている場合、コネクターは、 「Select ステートメント」 プロパティーで指定されている SELECT ステートメントを調べ、FROM 節で指定されている最初の表名を使用します。
  4. 保存 をクリックします。

Oracle DatabaseはDataStageの場合コネクタにターゲットとしてデータを書き込む

Oracle Database ( DataStage の場合) 表または書き込み可能ビューに行を書き込むようにコネクターを構成するには、ターゲット表またはビューを指定するか、SQL ステートメントまたは PL/SQL ブロックを定義する必要があります。

Oracle Database ( DataStage の場合) へのデータの書き込み
  1. ジョブ・デザイン・キャンバスで、 Oracle Database for DataStage コネクターをダブルクリックします。
  2. 「入力」タブで、 「使用法」をクリックします。
  3. Oracle Database for DataStage コネクターが Oracle 表または書き込み可能ビューにデータを書き込む方法を指定します。
    表 1. Oracle Database ( DataStage の場合) 表または書き込み可能ビューにデータを書き込むためのメソッド
    方法 手順
    実行時に SQL を自動的に生成する
    • 「実行時に SQL を生成」「はい」に設定します。
    • 「書き込みモード」「挿入」「新規行の挿入のみ」「更新」「削除」「挿入後に更新」「更新後に挿入」、または 「削除後に挿入」に設定します。
    • ターゲット表の名前を 「表名」 プロパティーに入力します。
    SQL を手動で入力してください
    • 「実行時に SQL を生成」「いいえ」に設定します。
    • 「書き込みモード」「挿入」「新規行の挿入のみ」「更新」「削除」「挿入後に更新」「更新後に挿入」、または 「削除後に挿入」に設定します。
    • 選択した書き込みモードに対応するフィールドに SQL ステートメントを入力します。
    PL/SQL ブロックを指定してください
    • 「書き込みモード」PL/SQLに設定します。
    • 「PL/SQL ブロック」 プロパティーに PL/SQL ブロックを入力します。

    PL/SQL ブロックは、キーワード DECLARE または BEGIN で始まり、キーワード END で終わる必要があります。 END キーワードの後にセミコロン文字を含める必要があります。

    データの一括ロード
    • 「書き込みモード」「一括ロード」に設定します。
    • 「テーブル名」 プロパティーにテーブルの名前を入力します。 構文 schema_name.table_nameを使用します。ここで、 schema_name は表の所有者です。 schema_nameを指定しない場合、コネクターは、現在接続されているユーザーに属するスキーマを使用します。
  4. 保存 をクリックします。

データの一括ロードの構成

Oracle Database for DataStage コネクターを使用してデータを Oracle データベースに一括ロードする場合、制約およびトリガーを有効または無効にすることができます。 また、日付キャッシュの構成、索引の管理、一括レコード・ロードのオプションの設定、および手動モードの有効化を行うこともできます。

一括ロードのセットアップ
  1. 「書き込みモード」 プロパティーで、 「一括ロード」 メソッドを選択し、 「表名」 プロパティーに書き込む表を指定します。
  2. データを一括ロードする前に制約を無効にし、データを一括ロードした後に制約を有効にするようにコネクターを構成します。
    1. 「一括ロードの前に操作を実行」「はい」に設定します。
    2. 「制約を無効にする」「はい」に設定します。
    3. 「一括ロード後に操作を実行」「はい」に設定します。
    4. 「制約を有効にする」「はい」に設定します。
    5. 「例外テーブル名」 フィールドに、例外テーブルの名前を入力します。

      例外表が存在しない場合は、コネクターによって作成されます。

      例外表が既に存在する場合、コネクターは、表内のすべてのデータを削除してから、それを使用します。

  3. データを一括ロードする前にトリガーを無効にし、データを一括ロードした後にトリガーを有効にするようにコネクターを構成します。
    1. 「一括ロードの前に操作を実行」「はい」に設定します。
    2. 「トリガーを無効にする」「はい」に設定します。
    3. 「一括ロード後に操作を実行」「はい」に設定します。
    4. 「トリガーを有効にする」「はい」に設定します。
  4. バルク・ロード中の表索引の処理方法を制御するには、 「索引保守オプション」 プロパティーを設定します。
  5. 一括ロード後に索引を再作成するには、以下のようにします
    1. 「一括ロード後に操作を実行」「はい」に設定します。
    2. 「索引の再作成」「はい」に設定します。
    3. オプション: 索引の再作成時に並列処理および REDO ログへのロギングを使用可能または使用不可にするには、 Parallel clause および Logging clause プロパティーにデフォルト以外の値を指定します。

      デフォルトでは、並列節およびロギング節は ALTER INDEX ステートメントに含まれません。

    4. オプション: 索引再作成ステートメントが失敗した場合にジョブを停止するには、 「索引再作成のエラー時に失敗 (Fail on error for index rebuild)」「はい」に設定します。

      索引の再作成が失敗すると、コネクターは致命的エラーをログに記録します。

  6. DATE 列または TIMESTAMP 列を含む表にデータを一括ロードする予定の場合は、日付キャッシュを有効にして構成します。
    1. 「 Oracle データ・キャッシュの使用」「はい」に設定します。
    2. オプション: 「キャッシュ・サイズ」 プロパティーに、キャッシュが保管するエントリーの最大数を入力します。
    3. オプション: 「満杯時にキャッシュを無効にする」「はい」に設定します。

      キャッシュ内のエントリーの数が 「キャッシュ・サイズ」 プロパティーで指定された数に達したときに、キャッシュ内の次の検索で欠落が発生すると、キャッシュは使用不可になります。

  7. 一括レコード・ロードを制御するためのオプションを設定します。
    1. 「配列サイズ」 を 1 から 999,999,999 までの値に設定します。

      デフォルトは 2,000 です。

    2. 「並行ロード・セッションを許可する」 プロパティーを 「はい」に設定します。
    3. 「バッファー・サイズ」 を 4 から 100,240 の値に設定します。これは、バッファー・サイズを KB 単位で表します。

      デフォルトは 1,024 です。

  8. 手動モードを有効にする場合:
    1. 「マナウル・モード」「はい」に設定します。
    2. オプション: 「データおよび制御ファイルのディレクトリー」 プロパティーで、制御ファイルおよびデータ・ファイルの保存先のディレクトリーを指定します。
    3. オプション: 「制御ファイル名」 プロパティーで、制御ファイルの名前を指定します。
    4. 「データ・ファイル名」 プロパティーで、データ・ファイルの名前を指定します。

      データ・ファイル名の値を指定しない場合、コネクターは servername_tablename.dat 形式で名前を生成します。

    5. 「ロード・オプション」 プロパティーで、コネクターが生成する制御ファイルに含めるバルク・ロード・オプションを指定します。

      この値には、制御ファイルおよびデータ・ファイルを処理するためにユーティリティーが呼び出されたときに Oracle SQL* Loader ユーティリティーに渡されるパラメーターが含まれています。 デフォルト値は OPTIONS (DIRECT = FALSE, PARALLEL = TRUE) です。

      DIRECT = FALSE パラメーターは、 Oracle SQL* Loader に、直接パス・ロードではなく従来のパス・ロードを使用するように指示します。 PARALLEL=TRUE パラメーターは、データを複数の並行セッションから並行してロードできることをユーティリティーに指示します。

      プロパティーに指定する値には、OPTIONS と括弧を含める必要があります。 コネクターは、このプロパティー値を生成された制御ファイルに保存し、値の構文は検査しません。

区分データの書き込み

複数のノードを使用するジョブでは、コネクターの入力リンクに到着するレコードは、複数のノードに分散されます。 その後、レコードはすべてのノードからターゲット・データベースに並行して書き込まれます。

デフォルトのパーティション・タイプは 「自動」です。これは、ジョブ内のステージのさまざまな設定に基づいてパーティション・タイプを選択します。 「自動」を使用する代わりに、コネクターが実行時に書き込む実際のデータおよびターゲット表に関する知識に基づいてパーティション・タイプを選択することをお勧めします。

パーティション方式の設定
  1. ジョブ・デザイン・キャンバスで、 Oracle Database for DataStage コネクターをダブルクリックします。
  2. 「入力」タブで、 「パーティション」 タブをクリックします。
  3. 「区画タイプ」を選択します。
    表 2. Oracle Database for DataStage コネクターのパーティション・タイプ
    パーティション・タイプ 説明
    自動 DataStage は、ステージのタイプ、およびジョブの前のステージの実行内容に応じて、使用する最適なパーティション方式を決定します。
    全体 すべての処理ノード上のステージのすべてのインスタンスは、完全なデータ・セットを入力として受け取ります。 多くの場合、このパーティション方式は、入力からルックアップ表を作成するステージで使用します。
    ランダム レコードは、この区画内のすべての処理ノードにランダムに分散されます。 ラウンドロビンと同様に、ランダム・パーティショニングは、各処理ノードがほぼ等しいサイズの区画を受け取ることを保証するために、入力データ・セットの区画のバランスを再調整することができます。
    ラウンドロビン 最初のレコードは最初の処理ノードに、2 番目のレコードは 2 番目の処理ノードに、というように続きます。 DataStage は、システム内の最後の処理ノードに到達すると、最初からやり直していきます。 この方法は、サイズが等しくない入力データ・セットの区画をサイズ変更する場合に役立ちます。
    同じ データ・セットを入力として使用するステージは、再パーティション化を実行せず、前のステージによって出力されたパーティションを入力として受け取ります。 このデータ区分方式では、レコードは同じ処理ノード上にとどまります。つまり、再配分されません。 DataStage は、ジョブ内のステージ間でデータを渡す際にこの方法を使用します。
    モジュラス パーティション化は、パーティションの数をモジュロ化したキー列に基づいて行われます。 モジュラス・パーティショナーは、入力データ・セットの各レコードを、入力データ・セット内の指定されたキー・フィールドによって決定される出力データ・セットの区画に割り当てます。
    ハッシュ パーティション化は、各レコード内の 1 つ以上の列 (ハッシュ・パーティション・キー) の関数に基づいて行われます。 ハッシュ・パーティショナーは、各入力レコードの 1 つ以上のフィールド (ハッシュ・キー・フィールド) を調べます。 すべてのハッシュ・キー・フィールドに同じ値を持つレコードは、同じ処理ノードに割り当てられます。
    範囲 データ・セットをほぼ等しいサイズの区画に分割します。各区画には、指定された範囲内のキー列を持つレコードが含まれます。 この方法は、関連するレコードが確実に同じパーティションに存在するようにする場合にも役立ちます。