0

Oracle 11g を使用しています。私の要件は、2 つの異なるデータベースのデータを比較することです。各データベースには約 350 のテーブルがあり、これらの 350 のテーブルのうち、約 40 のテーブルには 100 万を超えるレコードがあります。データ比較のために、ハッシュを使用して比較する 1 つの perl スクリプトを作成し、いくつかのファイルでテストしました。また、UNIX の awk コマンドを使用してパフォーマンスを確認し、Unix ソリューションに関するこのフォーラムに質問したところ、優れたヘルプが得られました。

今私の問題は、テーブルからファイルにデータを抽出する最良の方法を見つけることです。
両方のデータベースには同じ数のテーブルがあり、各テーブルには両方のデータベースで同じ数の列があります。つまり、両方のデータベースのレイアウトはまったく同じです。
私が考えて検索したオプションは、
1)sqlloaderを使用する-この場合はパフォーマンスが低下すると思います
2)データポンプを使用する-データポンプを使用してSQLを介していくつかの列セットを抽出し、テキストファイルにロードできるかどうかわかりません
3)一括収集を使用 -- 上記と同じ。各テーブルと列の各テーブル セットから抽出することは可能ですか。はいの場合、どのように行うことができますか。また、パフォーマンスはどうなりますか。
4) sqlplus またはその他。このためのソフトウェアを自分のマシンにダウンロードできません。

両方のデータベースの各テーブルから列のセットを選択するための基本的な sql は簡単​​に実行できます。データをフラット ファイルにエクスポートする最善の方法を検討しています。
提案してください

4

3 に答える 3

0

DBMS_COMPARISON を使用してデータベースで実行できます。

http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_comparison.htm#CHDHEFFJ

于 2013-04-01T19:02:45.943 に答える
0

(確かに開発者にとって) 最も安価な基本的なアプローチは、ファイルの文字列評価ではなく、一連のものを比較することです。データベース自体よりも高速に (かつ少ないコードで) 一連のものを比較できるものはありません。データベース リンクの使用と MINUS および INTERSECT 演算子の賢明な使用は、この目的に向けた非常に強力な手段です。

于 2013-04-02T22:13:00.617 に答える
0

以下の SQL を使用してみてください。データベース内で作業するので、これが最速のアプローチです。他のデータベースの DB リンクを介してテーブルにアクセスします。

select * from ( ( select * from Table_In_Schema1 - select * from Table_In_Schema2) union all ( select * from Table_In_Schema2 - select * from Table_In_Schema1) )

于 2013-04-03T12:05:19.603 に答える