ソース Oracle データベース

このセクションには、次に関する情報が含まれています。

  • Datastream が移行元 Oracle データベースから pull されているデータを処理する方法の動作
  • Datastream がサポートする Oracle データベースのバージョン
  • データが移行先にストリーミングできるように移行元 Oracle データベースを設定する方法の概要
  • Oracle データベースを移行元として使用する場合の既知の制限事項

動作

移行元 Oracle データベースは、データへの変更を公開するために Oracle Logminer 機能に依存しています。

  • 特定のデータベースのすべてのスキーマまたは特定のスキーマ、およびスキーマや特定のテーブルのすべてのテーブルを選択できます。
  • 履歴データはすべて複製されます。
  • 指定したデータベースとテーブルからの挿入、更新、削除など、すべてのデータ操作言語(DML)の変更が複製されます。
  • Datastream は、commit された変更と、場合によっては commit されていない変更を移行先に複製します。Datastream は、commit されていない変更を読み取ります。ロールバックの場合、Datastream の出力レコードには反対のオペレーションも含まれます。たとえば、ロールバックの INSERT オペレーションがある場合、出力レコードには対応する DELETE オペレーションも含まれます。この場合、イベントは ROWID のみを含む DELETE イベントとして表示されます。

ROWID ベースのバックフィル

Oracle では、ROWID はテーブル内の行の一意の識別子を格納する疑似列です。DataStream は、バックフィル オペレーションに ROWID 値を使用します。そのため、バックフィル オペレーションが完了するまで、移行元 Oracle データベース内の ROWID 値を変更する可能性のあるアクションは実行しないことをおすすめします。

ROWID 値を変更できるアクションは次のとおりです。

  • 行の物理的な移動:

    • エクスポートとインポートのオペレーション: テーブルをエクスポートしてからインポートすると、行の物理的な位置が変わり、新しい ROWID 値が生成されることがあります。
    • ALTER TABLE (...) MOVE コマンド: テーブルを別のテーブルスペースに移動すると、物理ストレージが変更され、ROWID の変更が発生する可能性があります。
    • ALTER TABLE (...) SHRINK SPACE コマンド: このコマンドはテーブルを圧縮します。これにより、行が移動し、ROWID 値に影響を与える可能性があります。
    • パーティショニング オペレーション: パーティションの分割、マージ、移動により、行の物理的な配置とその ROWID 値を変更できます。
  • フラッシュバック オペレーション:

    • FLASHBACK TABLE コマンド: テーブルを以前の状態に復元するには、行を削除して再挿入するため、新しい ROWID 値が作成されます。
    • FLASHBACK_TRANSACTION_QUERY: FLASHBACK TABLE に類似しています。トランザクションをロールバックすると、トランザクション内で行が削除または更新された場合に ROWID が変更されることがあります。

Versions

Datastream は、次のバージョンの Oracle データベースをサポートしています。

  • Oracle 11g、バージョン 11.2.0.4
  • Oracle 12c、バージョン 12.1.0.2
  • Oracle 12c、バージョン 12.2.0.1
  • Oracle 18c
  • Oracle 19c
  • Oracle 21c

Datastream は、次の種類の Oracle データベースをサポートしています。

  • オンプレミスまたはクラウド プロバイダでセルフホスト
  • Oracle 用の Amazon RDS
  • Oracle Cloud
  • Oracle Exadata
  • Oracle RAC

設定

移行元 Oracle データベースを設定して、そのデータが移行先にストリーミングできるようにするには、アクセス権の付与、ロギングの設定、保持ポリシーの定義などのために、データベースを構成する必要があります。

Datastream がデータを移行先に pull できるようにこのデータベースを構成する方法については、移行元 Oracle データベースの構成をご覧ください。

既知の制限事項

Oracle データベースを移行元として使用する場合の既知の制限事項は次のとおりです。

  • 次の条件が満たされない限り、5 億行を超えるテーブルはバックフィルできません。
    1. テーブルには一意のインデックスがあります。
    2. また、このインデックスは、デフォルトのインデックスである B ツリーにする必要があります。インデックスは複合的にできます。
    3. インデックスを元に戻すことはできません
    4. インデックスに関数ベースの列を含めることはできません。
    5. インデックスの列は null 値を指定できません。
    6. インデックスに、負の日付を値とする DATE 型の列は含まれません。
    7. インデックスのすべての列がストリームに含まれます。
  • ストリームは 10,000 テーブルに制限されています。
  • Datastream は Oracle マルチテナント アーキテクチャ(CDB/PDB)をサポートしていますが、ストリーム内でプラグイン可能なデータベースは 1 つだけ複製できます。
  • Oracle Autonomous データベースはサポートされていません。
  • 主キーのないテーブルの場合、Datastream は行の ROWID を使用して、コンシューマ側でマージ オペレーションを行います。ROWID は一意ではない場合があります。たとえば、Oracle のエクスポート/インポート ユーティリティで行を削除して再度挿入すると、行の ROWID が変更される可能性があります。Oracle で行を削除した場合は、ROWID を後で挿入される新しい行に割り当て直すことができます。
  • 索引構成表(IOT)はサポートされていません。
  • 一時テーブルはサポートされていません。
  • BFILE 型の列の場合は、ファイルへのパスのみが複製されます。ファイルのコンテンツは複製されません。
  • データ型 ANYDATAINTERVAL DAY TO SECONDINTERVAL YEAR TO MONTHLONG/LONG RAWSDO_GEOMETRYUDTUROWIDXMLTYPE の列はサポートされておらず、NULL 値に置き換えられます。
  • バイナリラージ オブジェクト(BLOB)、文字ラージ オブジェクト(CLOB)国別文字ラージ オブジェクト(NCLOB)などのラージ オブジェクト データ型の列をストリーミングするには、ストリームの構成に streamLargeObjects フラグを含める必要があります。このフラグを含めない場合、Datastream はこのような列をストリーミングせず、これらの列は宛先で NULL 値に置き換えられます。詳細については、Oracle ソースのラージ オブジェクトのストリーミングを有効にするをご覧ください。
  • Oracle 11g では、データ型 ANYDATA または UDT の列のあるテーブルはサポートされておらず、テーブル全体が複製されません。
  • Oracle Label Security(OLS)は複製されません。
  • Datastream は、イベントの処理中に移行元から最新のスキーマを定期的に取得します。スキーマが変更されると、古いスキーマが引き続き適用されている間に、新しいスキーマのイベントが読み取られることがあります。この場合、Datastream はスキーマの変更を検出し、スキーマの取得をトリガーして、失敗したイベントを再処理します。
  • 移行元のスキーマに対するすべての変更を自動的に検出できない場合があります。その場合、データが破損する可能性があります。次のスキーマの変更により、データが破損したり、イベントのダウンストリームが処理されなかったりする可能性があります。
    • 列をドロップする
    • テーブルの中央に列を追加する
    • 列のデータ型を変更する
    • 列を並べ替える
    • テーブルをドロップする(新しいデータを追加して同じテーブルを再作成する場合に関連)
    • テーブルを切り捨てる
  • Datastream はビューの複製をサポートしていません。
  • Datastream は、マテリアライズド ビューをサポートしています。ただし、ストリームの実行中に作成された新しいビューは自動的にバックフィルされません。
  • SAVEPOINT ステートメントはサポートされていないため、ロールバックした場合にデータの不一致が生じる可能性があります。
  • Datastream は、Oracle データベース用に次の文字セット エンコードをサポートしています。
    • AL16UTF16
    • AL32UTF8
    • IN8ISCII
    • JA16SJIS
    • JA16SJISTILDE
    • US7ASCII
    • UTF8
    • WE8ISO8859P1
    • WE8ISO8859P9
    • WE8ISO8859P15
    • WE8MSWIN1252
    • ZHT16BIG5
  • Datastream は、ゼロ日付値の複製をサポートしていません。そのような日付は、NULL 値に置き換えられます。
  • 非常に大きなログファイルを生成すると、Datastream がタイムアウトになり、ストリーム障害が発生する可能性があります。REDO ログファイルの推奨サイズは 1 GB 未満です。
  • Datastream は、Oracle Real Application Clusters(RAC)環境の単一クライアント アクセス名(SCAN)機能を使用したデータベースへの直接接続をサポートしていません。考えられるソリューションについては、Oracle ソースの動作と制限事項をご覧ください。