このセクションには、次に関する情報が含まれています。
- 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
が変更されることがあります。
バージョン
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 Active Data Guard スタンバイ データベース
設定
移行元 Oracle データベースを設定して、そのデータが移行先にストリーミングできるようにするには、アクセス権の付与、ロギングの設定、保持ポリシーの定義などのために、データベースを構成する必要があります。
Datastream がデータを移行先に pull できるようにこのデータベースを構成する方法については、移行元 Oracle データベースの構成をご覧ください。
既知の制限事項
Oracle データベースを移行元として使用する場合の既知の制限事項は次のとおりです。
- ストリームは 10,000 テーブルに制限されています。 ストリームに 10,000 を超えるテーブルが含まれている場合、エラーが発生する可能性があります。
- Datastream は Oracle マルチテナント アーキテクチャ(CDB/PDB)をサポートしていますが、ストリーム内に複製できるプラガブル データベースは 1 つだけです。
- Oracle Autonomous データベースはサポートされていません。
- 主キーのないテーブルの場合、Datastream は行の
ROWID
を使用して、コンシューマ側でマージ オペレーションを行います。ROWID
は一意ではない場合があります。たとえば、Oracle のエクスポート/インポート ユーティリティで行を削除して再度挿入すると、行のROWID
が変更される可能性があります。Oracle で行を削除した場合は、ROWID
を後で挿入される新しい行に割り当て直すことができます。 - 索引構成表(IOT)はサポートされていません。
- 一時テーブルはサポートされていません。
- データ型
ANYDATA
、BFILE
、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 ソースの動作と制限事項をご覧ください。
- ソースが Oracle Active Data Guard スタンバイ データベースである場合、Datastream は暗号化されたデータの複製をサポートしていません。
次のステップ
- Datastream で使用する Oracle ソースの構成方法を学習する。