Discussion:
[Oracle] Tabellen zeilenweise vergleichen
(zu alt für eine Antwort)
Albert Bihler
2003-10-29 06:28:22 UTC
Permalink
Hallo,

ich hab einige Tabellen auf zwei Oracledatenbanken,
deren Inhalt ich gerne vergleichen möchte. Es existiert
kein DB-Link zwischen den Datenbanken.

Eine Option wäre, select * in Dateien spoolen und die
später mit Perl zeilenweise zu vergleichen. Finde ich
aber nicht so toll.

Viel eleganter fände ich, wenn ich eine SQL Prüfsummen-
funktion pro Zeile benutzen könnte, die mir eine Liste
zurückgibt, die ungefähr so aussieht:

id checksum
------------------------------
1 F23A5530B3CC
2 AA55388BFF32
3 123ABCFF3334
...

Müsste danach zwar auch noch mit Perl verglichen werden,
ergibt aber weitaus handlichere Files.

Gibt es so eine Funktion? Oder hat jemand noch einen
ganz anderen Ansatz?

Viele Grüße,
Albert
Marc Blum
2003-10-29 08:51:33 UTC
Permalink
Post by Albert Bihler
Hallo,
ich hab einige Tabellen auf zwei Oracledatenbanken,
deren Inhalt ich gerne vergleichen möchte. Es existiert
kein DB-Link zwischen den Datenbanken.
Eine Option wäre, select * in Dateien spoolen und die
später mit Perl zeilenweise zu vergleichen. Finde ich
aber nicht so toll.
Viel eleganter fände ich, wenn ich eine SQL Prüfsummen-
funktion pro Zeile benutzen könnte, die mir eine Liste
id checksum
------------------------------
1 F23A5530B3CC
2 AA55388BFF32
3 123ABCFF3334
...
Müsste danach zwar auch noch mit Perl verglichen werden,
ergibt aber weitaus handlichere Files.
Gibt es so eine Funktion? Oder hat jemand noch einen
ganz anderen Ansatz?
Da DB-Link ausgeschlossen wird (warum auch immer...):

create user dummy identified by dummy;
grant <notwendige berechtigungen> to dummy;

HOST exp userid=<user>/<pwd>@<andere_instanz> tables=<tables_of_interest>
file=bla.dmp

HOST imp userid=dummy/dummy@<lokale_instanz> file=bla.dmp fromuser=<user>
touser=dummy

select * from user.table
minus
select * from dummy.table;

select * from dummy.table
minus
select * from user.table;

etc blabla

Loading...