- ベストアンサー
2つの同じDBの比較について
Oracle8iにて1つのDBに2人のユーザを作成し、同じテーブル構成に同じデータをimportしています。これから2つの環境にてそれぞれテストを行うのですが(あるアプリケーションを動かします)、1日の終わりにこの2人のユーザのテーブルを比較したいと考えています。各ユーザのテーブルは100個あるのですが、これらを比較する方法はありますか? 思い付くのはお互いのユーザの各テーブルをselectで抽出してMIFES(テキストツール)で比較なんてのしか思い付かなくて・・・ 是非簡単な方法があればご教授よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 データの違いと言う事であれば、 Select * from user1.table1 minus select * from user2.table1; というSQL 文をテーブル数羅列したスクリプトを作成して SQL*Plus から実行してはどうでしょうか?
その他の回答 (3)
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 #3 のmuyoshid です。 > 質問ですが、minusって結構処理時間がかかるような気がしますが、 > 100テーブル×60000レコードくらいだとどのくらいの時間がかかるのでしょうか? 性能については、環境に依存する部分が大きいので何とも言えません。 気になるのであれば、実際に60000レコードの表を作成してSQL の処理時間を 測定されるのが一番だと思います。 サンプルで1組の表を作成して、minus で選択されるレコード件数を調整して 3~4 パターン測定すれば、凡その見当がつくと思います。 後は、「トレース採取 → tkprof → 性能チューニング」と言う流れでしょうか?
お礼
お礼が大変遅くなりました。 実際やってみたんですが、それほど時間がかかりませんでした。2つのDBからお互いにminus文で差分を出力し、それらを秀丸で見比べるという作業で2週間ほどやっていますが、それほど苦労はしていません。 ありがとうございました。
- ymmasayan
- ベストアンサー率30% (2593/8599)
そういう方法になるのでしょうね。 ただ、処理結果が同じでも、テーブルが同じとは限らないと思います。 処理のやり方や順序の違いです。 order byをかけてから比較したほうがいいでしょう。
お礼
返信が遅くなりました。 そうですね。order byしたほうがいいですよね。 ありがとうございます。
- bernstein
- ベストアンサー率29% (38/127)
Accessで二つのDBの結果を寄せるのはいかがでしょうか? Accessの「テーブル」-「外部データの取り込み」でそれぞれのDBを指定します。 データが取り込めたら、「クエリ」で2つのテーブルを比較します。 結果をクエリに出すとか、レポートで出力すればいいんじゃないですか?
補足
返信が遅くなりました。 Accessで取り込んでクエリで比較というのは#3の方がおっしゃられてるminusを抽出条件に付加するという事でしょうか?クエリをあまり触った事がないので的外れな事をいっているかもしれませんね。。 よろしければ詳しく教えて頂けませんか?
お礼
返信が遅くなりました。 そうですね。この方法のほうが楽なような気がします。 質問ですが、minusって結構処理時間がかかるような気がしますが、100テーブル×60000レコードくらいだとどのくらいの時間がかかるのでしょうか?またこの方法だとテーブルに更新時間とか登録時間とか存在すると全レコードが抽出されてしまいますよね。select * にしなければいいだけですが。。。 難点は対象レコードの何処が違うというのが分からない事ですね。 ※今回は違いがないということを前提で考えているので問題ないはずなのですが。