• ベストアンサー

2つの同じDBの比較について

Oracle8iにて1つのDBに2人のユーザを作成し、同じテーブル構成に同じデータをimportしています。これから2つの環境にてそれぞれテストを行うのですが(あるアプリケーションを動かします)、1日の終わりにこの2人のユーザのテーブルを比較したいと考えています。各ユーザのテーブルは100個あるのですが、これらを比較する方法はありますか? 思い付くのはお互いのユーザの各テーブルをselectで抽出してMIFES(テキストツール)で比較なんてのしか思い付かなくて・・・ 是非簡単な方法があればご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.3

こんにちわ。 データの違いと言う事であれば、 Select * from user1.table1 minus select * from user2.table1; というSQL 文をテーブル数羅列したスクリプトを作成して SQL*Plus から実行してはどうでしょうか?

legend3738
質問者

お礼

返信が遅くなりました。 そうですね。この方法のほうが楽なような気がします。 質問ですが、minusって結構処理時間がかかるような気がしますが、100テーブル×60000レコードくらいだとどのくらいの時間がかかるのでしょうか?またこの方法だとテーブルに更新時間とか登録時間とか存在すると全レコードが抽出されてしまいますよね。select * にしなければいいだけですが。。。 難点は対象レコードの何処が違うというのが分からない事ですね。 ※今回は違いがないということを前提で考えているので問題ないはずなのですが。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.4

こんにちわ。 #3 のmuyoshid です。 > 質問ですが、minusって結構処理時間がかかるような気がしますが、 > 100テーブル×60000レコードくらいだとどのくらいの時間がかかるのでしょうか? 性能については、環境に依存する部分が大きいので何とも言えません。 気になるのであれば、実際に60000レコードの表を作成してSQL の処理時間を 測定されるのが一番だと思います。 サンプルで1組の表を作成して、minus で選択されるレコード件数を調整して 3~4 パターン測定すれば、凡その見当がつくと思います。 後は、「トレース採取 → tkprof → 性能チューニング」と言う流れでしょうか?

legend3738
質問者

お礼

お礼が大変遅くなりました。 実際やってみたんですが、それほど時間がかかりませんでした。2つのDBからお互いにminus文で差分を出力し、それらを秀丸で見比べるという作業で2週間ほどやっていますが、それほど苦労はしていません。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

そういう方法になるのでしょうね。 ただ、処理結果が同じでも、テーブルが同じとは限らないと思います。 処理のやり方や順序の違いです。 order byをかけてから比較したほうがいいでしょう。

legend3738
質問者

お礼

返信が遅くなりました。 そうですね。order byしたほうがいいですよね。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • bernstein
  • ベストアンサー率29% (38/127)
回答No.1

Accessで二つのDBの結果を寄せるのはいかがでしょうか? Accessの「テーブル」-「外部データの取り込み」でそれぞれのDBを指定します。 データが取り込めたら、「クエリ」で2つのテーブルを比較します。 結果をクエリに出すとか、レポートで出力すればいいんじゃないですか?

legend3738
質問者

補足

返信が遅くなりました。 Accessで取り込んでクエリで比較というのは#3の方がおっしゃられてるminusを抽出条件に付加するという事でしょうか?クエリをあまり触った事がないので的外れな事をいっているかもしれませんね。。 よろしければ詳しく教えて頂けませんか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 異なるDBの値比較方法

    まったく同じジョブの内容でスケジューリング方法を変えて実行した時、その前後でDBの内容が同一であるか検証する方法を考えています。 DBはoracle9、テーブル数は約100強、エクスポートすると約500MBです。 検証方法は、処理前に本番データをエクスポートし、それを検証環境にインポート、検証環境でスケジュールを実行して、まったく同じ結果を得られるかを検証します。 以下の案を思いつきましたが、イマイチぴんときません。何かいい方法を教えてください。 案1 DBをDBリンクで接続し、オブジェクトブラウザのオブジェクト比較機能を使う。 →簡単にできるが、結果を得るの時間がかかりすぎる。 案2 DBをDBリンクで接続し、検証用プロシージャを作成して比較する。 →user_tables, user_tab_columnsなどを使うプロシージャの作成が面倒。 案3 処理実行後に、本番と検証環境でそれぞれテーブルごとにエクスポートし、エクスポートファイルをUNIXでソートした上で、uniqコマンドで比較する。 →これが現実的?

  • BLOB型項目をSQLの検索条件に指定して検索したいのですが。

    BLOB型の項目を持つTableに対して、SQLのSELECT文でBLOB型項目がNull(未設定)のレコードを抽出したいと思っています。 どのようなSELECT文を組めば良いのでしょうか? 方法がわからず困っています。 御教授下さい。 DBはOracle8.1.6、 OSはWindowsサーバ2003です。よろしくお願いします。

  • DBの削除とインポート

    初心者ですが、よろしくお願いいたします。 Win2000 Serverで、Oracle8i Workgroup Serverを使用していますが、今使用しているDBを削除し、まるまるエクスポートしたDBをインポートするのですが、 【削除】 1.『Database Configuration Assistant』の『データベースの削除』を使用すればよいのでしょうか? 2.上記方法で、Oracle8i自体が削除されることはないでしょうか? 3.SQL*PLUSにて削除はできるでしょうか? 又、もしできるようであれば、どのようなステートメントで、何を削除すればよいでしょうか? 【インポート】 1.インポートは、どのようにすればよいでしょうか? 2.SQL*PLUSを使用してのインポートと、他の何かを使用したときの方法と、そのメリット・デメリット教えていただければ幸いです。 よろしくお願いいたします。

  • ファイルDB連携で質問です。

    テーブルと同じレイアウトのテキストファイルを読込んで - 同一キーが存在し、データも同一なら何もしない - 同一キーが存在し、データが変更ならUPDATE文を作成 - 同一キーが存在しなければINSERT文を作成 しファイル出力したいのですが、 どんな手法がベストでしょうか? 私の考えつく方法はどうもDBを活かしきれていない気がします。DBはMySQL4でUNIONも使えるのですが、オラクルブロンズレベルでは思いつかず参っています。 ■テーブル(ファイルレイアウト)key1,key2は複合キー key1 key2 data1   1  0   5   2  3   6 ■処理の流れ ファイルがありテーブルが存在しなければ ファイル読込でテーブルへそのままインポート ↓ ファイルがありテーブルが存在したら、 既存テーブルをリネーム後に、 ファイル読込でテーブルへそのままインポート ↓ インポートしたテーブルを全件SELECTし、 リネームしたテーブルへ1件ずつSELECTマッチ処理を行った結果によりファイルへINSERTやSELECT文を出力していく。 ファイルの行数が多いと相当重い処理になりそうで。。

  • データのエクスポート/インポート

    あるシノニムのデータをエクスポートして、その後、エクスポートしたファイルを一部編集して、インポートしたいと思っています。DBはOracle 9iです。 テーブルのエクスポート/インポートだと、CSEなどのツールで実施できるのですが、シノニムだと同様の操作では実施できませんでした。 初心者でも簡単にできる方法を教えてください

  • DBをまたいで更新

    現在、testDB1とtestDB2というDBが存在します。 それで、testDB1のtable.idとtestDB2のtable2.idを SELECT文で比較して、同じidの場合はtestDB2のtable2.dataに 1という値を格納したいと思っています。 それで、DBをまたいで更新するときの記述が分からず ネットで検索したのですが、うまくヒットしませんでした。 そもそもDBをまたいで問い合わせや更新等はできないのでしょうか? できない場合、代替の方法があったら教えて頂けますでしょうか。 よろしくお願い致します。

  • DB作成パラメータ値

    Oracle 9iを使用しています。 Win2000上で標準パラメータでDBを作成し、アプリケーションを稼動しています。このEXPORTファイルを使用して Win2003で、同じく標準パラメータでDB(同じくOracle9i)を作成し、 DBをインポートするとアーカイブログの空きがない、のエラーとなり、 IMPORTコマンドは異常終了してしまします。 同じOracle 9iでも稼動しているOSにより、各種領域設定はことなるのでしょうか?

  • DB検索について

    (1)PHPにてSQLをコールしてテーブルから情報の取得を行いたいのです。  $cmnd = "select * from table_a where id=01";を実行し(fetch使用)  仮に15件セレクトされたとすると、抽出された15件は  プログラム内のどこに格納されるのですか? (2)また、そのレコードを順じ処理する場合において、終了条件はどの様に  判定したら良いでしょうか?  DB:oracle

    • 締切済み
    • PHP
  • 比較抽出方法(?)

    比較抽出方法(?)は造語です… テーブル名:TMSBTM UARKECD USTCYDIS -------- -------- 00020345 99999999 00032115 00032115 00032115 99999999 00032119 00071000 00032119 00072000 00032119 00073000 00032119 99999999 00032375 00020000 00032375 00021000 00032375 00022000 00032375 00032376 00032375 00032377 00032375 99999999 00032645 00031000 00032645 00032000 00032645 00032647 00032645 00032648 00032645 00032649 00032645 00061000 00032645 00062000 00032645 00063000 00032645 00064000 00032645 00065000 00032645 99999999 00032646 00032646 00032646 99999999 00032815 00032815 00032815 99999999 00032820 00011000 00032820 00012000 00032820 00013000 00032820 00014000 00032820 00015000 00032820 00051000 00032820 99999999 00032985 00032985 00032985 99999999 テーブル名:THJKYF UARKECD USTCYDIS -------- -------- 00032119 00072000 00032119 00073000 00032645 00062000 00032645 00064000 00032645 00065000 00032820 00051000 00032985 00032985 TMSBTMにあって、THJKYFに無いTMSBTMの列名を抽出したい。 イメージとしては select * from TMSBTM where UARKECD,USTCYDISECD != select DISTINCT UARKECD,USTCYDISECD from THJKYF; こんな感じです。トホホです。 Oracle 7.3.3のSqlplusです。 かなりとほほな質問とは思いますがお願い致します。

  • DB2のロック調査

    作成したアプリケーション(SELECTを発行するだけ)が*LOCK開放待ち(?)でTimeOutが発生してしまいました。 他のAPPがどうもテーブルロックをしていたらしいのです。 どのAPPがいつからいつまでロックを掛けていたか?を 調査する方法を教えて下さい。 DB2のバージョンは8?OSはAIX5.x? 詳しく教えてもらえない・・・(原因は不明)すいません。

このQ&Aのポイント
  • MFC-J6973CDWの問題ですが、印刷サイズが正しくでないというエラーが発生しています。このエラーはスキャナーの接続エラーが原因で起こっており、ドライバーのインストールをし直しても改善されませんでした。類似のエラーQAを参照し、ドライバーを再再インストールしましたが、問題は解決しません。どのように対応すればよいでしょうか。
  • MFC-J6973CDWの印刷サイズが勝手に縮小されてしまうという問題が発生しています。スキャナーの接続エラーが連続して発生し、ドライバーの再インストールを行ったところ、問題は解決されませんでした。類似のエラーQAを参考にしてドライバーを再再インストールしましたが、改善されませんでした。対応方法を教えてください。
  • MFC-J6973CDWの印刷サイズのエラーに関して相談があります。スキャナーの接続エラーが頻発しており、ドライバーの再インストールを試みましたが、問題の改善には至りませんでした。印刷サイズが正しく出力されない(縮小されてしまう)問題について、どのように対処すればよいでしょうか。
回答を見る