OracleからのミラーリングでTimestamp型がある場合の注意点【リアルタイムレプリケーションツールDBMoto】


OracleをソースDBとしたミラーリングレプリケーションにおいて注意点があります。

▼問題点

OracleのテーブルにTimestamp型のフィールドが存在する場合、Oracleからのミラーリングレプリケーション時に
ターゲットDBでTimestamp型のレコードのナノ秒が失われることがある。

※例
2010-09-16-11.08.22.123000
(ソースDB:Oracleで左記のようにTimestamp型レコードを追加・更新する)
 ↓
2010-09-16-11.08.22.000000
(ミラーリング後、ターゲットDBで左記のようにTimestamp型レコードのナノ秒が000000になってしまうことがある)

▼事象発生条件

下記3つの条件を満たすことで発生します。

・OracleがソースDBであり、ミラーリングかシンクロナイゼーションレプリケーションの場合
・Oracleのバージョンが9.2.0.6 / 10.2.0.1 / 10.2.0.2 / 10.2.0.3 / 10.2.0.4
・Oracle側でTimestamp型レコードに更新があるか、レコード自体の追加を行う

※リフレッシュレプリケーションの場合は問題ありません。
※ターゲットがOracleの場合のミラーリングは問題ありません。

▼原因

Oracleバージョン固有のログマイナー(log miner)のバグです。

▼回避策

問題バージョンにてOracle社提供のバッチを適用するか、当該バージョン以外を使用する。

以上です。

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください