このセクションには、次に関する情報が含まれています。
- 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 億行を超えるテーブルはバックフィルできません。
- テーブルには一意のインデックスがあります。
- また、このインデックスは、デフォルトのインデックスである B ツリーにする必要があります。インデックスは複合的にできます。
- インデックスを元に戻すことはできません。
- インデックスに関数ベースの列を含めることはできません。
- インデックスの列は null 値を指定できません。
- インデックスに、負の日付を値とする
DATE
型の列は含まれません。 - インデックスのすべての列がストリームに含まれます。
- ストリームは 10,000 テーブルに制限されています。
- Datastream は Oracle マルチテナント アーキテクチャ(CDB/PDB)をサポートしていますが、ストリーム内でプラグイン可能なデータベースは 1 つだけ複製できます。
- Oracle Autonomous データベースはサポートされていません。
- 主キーのないテーブルの場合、Datastream は行の
ROWID
を使用して、コンシューマ側でマージ オペレーションを行います。ROWID
は一意ではない場合があります。たとえば、Oracle のエクスポート/インポート ユーティリティで行を削除して再度挿入すると、行のROWID
が変更される可能性があります。Oracle で行を削除した場合は、ROWID
を後で挿入される新しい行に割り当て直すことができます。 - 索引構成表(IOT)はサポートされていません。
- 一時テーブルはサポートされていません。
BFILE
型の列の場合は、ファイルへのパスのみが複製されます。ファイルのコンテンツは複製されません。- データ型
ANYDATA
、INTERVAL DAY TO SECOND
、INTERVAL YEAR TO MONTH
、LONG/LONG RAW
、SDO_GEOMETRY
、UDT
、UROWID
、XMLTYPE
の列はサポートされておらず、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 ソースの動作と制限事項をご覧ください。