同一であるはずの2つの大きくて複雑なOracleスキーマには多少の違いがあると感じているので、それらをダンプして比較することを検討しました。テーブルとインデックスの定義をダンプする次のコマンドを提供する記事( http://www.dba-Oracle.com/art_builder_get_schema_syntax.htm )を見つけました。
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
ただし、スキーマの出力のスプールをダンプして比較すると、ほとんどすべての行に些細な違いがあり、違いは価値がありません。たとえば、スキーマ名は各テーブル定義に含まれています。
これを行うには、最も重要なスキーマデータを、diffツールを使用して簡単に比較できる形式で提供するより良い方法がありますか?テーブル、インデックス、トリガーに興味があります。
Oracle Database 10g Enterprise Editionリリース10.2.0.3.0を使用しています
私が書いた無料のオープンソースSchemaCrawlerツールは、必要なことを実行します。 SchemaCrawlerは、スキーマ(テーブル、ビュー、プロシージャなど)の詳細を、差分可能なプレーンテキスト形式(テキスト、CSV、またはXHTML)で出力します。 SchemaCrawlerは、データ(CLOBおよびBLOBを含む)を同じプレーンテキスト形式で出力することもできます。標準のdiffプログラムを使用して、現在の出力を参照バージョンの出力と比較できます。
データベース用のJDBCドライバーを提供する必要があります。
このようなものは必要ありません。
otn.Oracle.com
OracleにはSQL Developerと呼ばれる無料のツールがあります。スキーマの違いがあります。
[〜#〜] toad [〜#〜]を使用できますが、これはOracle開発に最適な汎用ツールです。テスト用の試用版があります。機能リストから:
- データ比較と同期ウィザード
- データベースプラットフォーム間でデータを同期する
テストできる別の製品は OraPowerTools です。
OraPowerToolsは、ネイティブのOracleデータベースユーティリティのコレクションです。このコレクションには、完全なOracle開発環境であるOraEdit PRO、DBDiff for Oracle、2つのOracleデータベースの比較とアップグレード、およびOracleデータベースのオブジェクトやデータからSQLスクリプトを作成するDBScripter for Oracleが含まれます。
無料の代替案として、次のCodeProject記事をチェックしてみてください。 Schema Compare Tool for Oracle
この小さなVB.NETアプリケーションを使用すると、Oracleデータベーススキーマを相互に比較できます。これは、開発インスタンスが本番インスタンスと同じであることを確認する場合に非常に役立ちます。特にフロントエンドの変更を実装する場合。
DKGAS 'DBDiff for Oracle' を使用して、スキーマ全体またはその一部(テーブル、シーケンス、インデックス、制約、特権、パッケージ、オブジェクト、およびデータ)を比較レポートとして比較できますまたはアップグレードスクリプトとして。
後者はデータベースアップグレードスクリプトのベースとして使用します。
使うお金がある場合は、PowerDIFF for Oracleの使用を検討してください: http://www.orbit-db.com 。このツールは、テーブル、インデックス、トリガーを比較し、「diff」操作をカスタマイズするための多数の比較オプションが付属しています。完全な差分スクリプト(DDLおよびDMLコマンド)はオプションで生成されます。データベースに接続するには、ODBCドライバが必要です。