質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Q&A

2回答

2789閲覧

Oracle、SQL Server異なるデータベースの同期について

K0heii

総合スコア0

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

0グッド

0クリップ

投稿2020/11/26 02:15

お世話になっております。
K0heiit申します。

OracleとSQL Server異なるデータベースの同期についてご質問させて頂きたいと思います。

・対象DB
Oracle(お客様先)
SQL Server(当方)

・物理環境
特定の場所にお客様使用のOracle用サーバーあり
そこと同じ場所にオラクルと同期するためのリンクサーバーあり
当方アプリケーション用クラウドサーバーあり
※詳細は添付ファイルあり

・実現したい事
当方のリンクサーバーよりクラウドサーバーへのデータ同期を
取ろうとする際に、差分が上手く取得できないことを解消したい。
追加、更新データはオラクルのデータ内の更新日付を参照すれば判定可能だが
物理的に削除されたデータ(DELETE文にて処理されたデータ)は全件取得で
クラウドサーバー内のデータ全件と比較しなければ差分が取得できない。
この差分の取得の方法、または当方が提示しております、方法以外に
同期を取る方法をご存じの方がいらっしゃればご教授頂きたいと思っております。

長文失礼いたしました。
よろしくお願い致します。イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

同期を取らなければならないシステムで忘れてはならないのが、定期的に同期が取れているかを調査し(レコード件数や数量・金額の合計)、同期が取れていないことが判ったら、誤差を埋める手段を用意しておかないといけません。
Oracle側でパッチを適応したり、バージョアップする度に厳格な動作確認が必要です。
何十テーブルも同期が必要な場合は自社でOracleのライセンスを用意して対応した方が安上がりなことが多いです。

投稿2020/11/26 06:41

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K0heii

2020/11/26 07:21

ご回答、ありがとうございます。 そうですね、イレギュラーの際の対応策は何かしら必要になりますね。 そうなのですね、自社でオラクルのライセンスを持った方が安くなるのですね。 情報のご提供、ありがとうございます。 ご回答、ありがとうございました。
sazi

2020/11/26 08:32

@orlofskさん > Oracleのライセンスを用意して対応した方が安上がり 例えば、どういった面での効果がありますか?
Orlofsky

2020/11/26 09:29

同じOracle同士の同じバージョンならMATERIALIZED VIEW を使ってかなり容易に同期を取れます。異なるデータベースでMATERIALIZED VIEWを使えるか、それもすんなり使えるかはわたしは情報を持っていません。 トリガーを使うとバッチの処理時間が大幅に延びることがあります。過去2倍の処理時間がかかったことがあります。 オラクル・サポートからの回答はサポートの了解を得ない限り公開することは禁止されていますし、今はオラクル・サポートの了解を得る手段もないので、公開できる情報は少ないです。
sazi

2020/11/26 09:39

上手くいかない場合に、サポートがあると安心できるって事ですね。
Orlofsky

2020/11/26 10:15

そのバグに対応するパッチが存在するか、あるいはパッチを作ってくれるかはモラルの問題ではなく、オラクル・サポートの判断によるので別の問題ではあります。
guest

0

幾つか方法は考えられます。
・テーブルのトリガーでdelete時に別テーブルに削除データを追加する。
・物理削除ではなく論理削除にする。
・アーカイブログを取得し、それを元に処理する。
対応しやすいのはトリガーだと思います。

アーカイブログに関しては、LogMinerを使用して解析できそうです。
異なるデータベース間のデータ同期が出来るわけ (その2)
19 REDOログ・ファイル分析のためのLogMinerの使用

投稿2020/11/26 02:55

編集2020/11/26 04:05
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K0heii

2020/11/26 07:23 編集

ご回答ありがとうございます。 ・テーブルのトリガーでdelete時に別テーブルに削除データを追加する。  →こちらの方法はオラクル側にトリガーを仕込み、その際に登録されたデータを元に削除対象を   特定するというものですね。 ・物理削除ではなく論理削除にする。  →こちらに関しては、既にお客様先で稼働しているシステムに関わりますので   変更するのは難しいかと思われます。 ・アーカイブログを取得し、それを元に処理する。  →こちらに関してはREDOログファイルを元に削除対象を取得するというものですね。 情報のご提供、ありがとうございます。 正直、一番現実的なのはトリガーをオラクルに仕込む方法かと思います。 ご回答、ありがとうございました。 --追記 追加で情報のご提供ありがとうございます。 参考にさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問