Wie kann ich zwei Oracle 10g-Schemata unterscheiden?

14

Ich habe das Gefühl, dass es einen Unterschied zwischen zwei großen, komplizierten Oracle-Schemata gibt, die identisch sein sollten. Ich habe einen Artikel gefunden ( http://www.dba-oracle.com/art_builder_get_schema_syntax.htm ), der die folgenden Befehle enthält, um die Tabellen- und Indexdefinitionen zu sichern.

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;

Als ich jedoch die Ausgabeschemata ausgegeben und verteilt habe, gab es in fast jeder Zeile geringfügige Unterschiede, die den Unterschied wertlos machten. Beispielsweise ist der Schemaname in jeder Tabellendefinition enthalten.

Gibt es eine bessere Möglichkeit, um die wichtigsten Schemadaten in einem Format zu erhalten, das mit einem Diff-Tool einfach verglichen werden kann? Ich interessiere mich für Tabellen, Indizes und Trigger.

Ich verwende Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

Stuart Woodward
quelle

Antworten:

14

Das kostenlose und quelloffene SchemaCrawler- Tool, das ich geschrieben habe, wird alles tun, was Sie brauchen. SchemaCrawler gibt Details Ihres Schemas (Tabellen, Ansichten, Prozeduren usw.) in einem unterschiedlichen Nur-Text-Format (Text, CSV oder XHTML) aus. SchemaCrawler kann auch Daten (einschließlich CLOBs und BLOBs) in denselben Nur-Text-Formaten ausgeben. Sie können ein Standard-Diff-Programm verwenden, um die aktuelle Ausgabe mit einer Referenzversion der Ausgabe zu vergleichen.

https://www.SchemaCrawler.com

Sie müssen einen JDBC-Treiber für Ihre Datenbank bereitstellen.

Sualeh Fatehi
quelle
2
Ich habe viel später gemerkt, dass die FAQs besagen, dass Sie Ihre Zugehörigkeit zum Open Source-Projekt offenlegen müssen, und ich habe jetzt damit begonnen. Ich stehe jedoch zu meiner Antwort und halte sie für eine Lösung, die es wert ist, untersucht zu werden. Ich habe SchemaCrawler in zwei meiner früheren Unternehmen verwendet, und beide Entwicklungsteams waren sich einig, dass es ein nützliches Tool für diesen Zweck ist. (Nein, ich war nicht der Boss.)
Sualeh Fatehi
6

du brauchst nichts davon.

otn.oracle.com

Oracle hat ein kostenloses Tool namens SQL Developer. es hat ein schema diff.

Bob
quelle
4

Sie könnten TOAD verwenden, ein großartiges generisches Tool für die Oracle-Entwicklung. Es gibt eine Testversion zum Testen. Aus der Featureliste:

  • Assistent zum Vergleichen und Synchronisieren von Daten
  • Synchronisieren Sie Daten über Datenbankplattformen hinweg

Ein weiteres Produkt, das Sie testen können, ist OraPowerTools :

OraPowerTools ist eine Sammlung nativer Oracle-Datenbankdienstprogramme. Diese Sammlung enthält OraEdit PRO, eine vollständige Oracle-Entwicklungsumgebung, DBDiff für Oracle, den Vergleich und das Upgrade von 2 Oracle-Datenbanken. DBScripter für Oracle erstellt SQL-Skripte aus den Objekten und / oder Daten Ihrer Oracle-Datenbank.

Als kostenlose Alternative können Sie diesen CodeProject-Artikel lesen: Schema Compare Tool for Oracle

Mit dieser kleinen VB.NET-Anwendung können Sie Oracle-Datenbankschemata miteinander vergleichen. Dies ist sehr hilfreich, wenn Sie sicherstellen möchten, dass Ihre Entwicklungsinstanz mit Ihrer Produktionsinstanz identisch ist. insbesondere bei der Implementierung von Front-End-Änderungen.

1 : 1 : http://www.toadsoft.com/toad_oracle.htm

splattne
quelle
2

Wir verwenden das DKGAS 'DBDiff for Oracle' , das ein gesamtes Schema oder einen Teil davon (Tabellen, Sequenzen, Indizes, Einschränkungen, Berechtigungen, Pakete, Objekte und Daten) entweder als Vergleichsbericht oder als Upgrade-Skript vergleichen kann.

Wir verwenden als letztere die Basis für Datenbank-Upgrade-Skripte.

Andrew
quelle
1

Wenn Sie in der Lage sind, Perl auszuführen, können Sie sich SQLFairy ansehen , das einen Speicherauszug Ihres Schemas als SQL erstellen sollte. Sie können dann Standardwerkzeuge zum Vergleichen von Texten verwenden. Es gibt auch ein Tool, das zwei Schemata verwendet und die ALTER-Befehle erzeugt, um sie identisch zu machen.

David Pashley
quelle
1

Wenn Sie etwas Geld ausgeben müssen, ziehen Sie die Verwendung von PowerDIFF für Oracle in Betracht: http://www.orbit-db.com . Dieses Tool vergleicht Tabellen, Indizes und Trigger hervorragend und bietet eine Reihe von Vergleichsoptionen, um die Diff-Operation anzupassen. Optional wird ein Gesamtdifferenzskript (DDL- und DML-Befehle) generiert. Sie benötigen einen ODBC-Treiber, um eine Verbindung zur Datenbank herzustellen.


quelle