erstellen eine Datenbank Link old_db
zu Ihrer alten Datenbank und vergleichen Daten
select * from tab1 minus select * from [email protected]_db union all
select * from [email protected]_db minus select * from [email protected]_db
Das Ergebnis dieser select muss
Wählen Sie die gewünschten Tabellennamen von
select table_name from user_tables
und bauen leer die Wählen Sie obige Anweisung, um sie dynamisch Tabelle für Tabelle auszuführen, etwa
declare
l_found number;
l_sql varchar2(500);
begin
for l_rec in (select table_name from user_tables) loop
begin
-- assume a database link OLD_DB exists
l_sql := 'select 1 from dual where exists (select * from ' ||
l_rec.table_name || ' minus select * from ' ||
l_rec.table_name || '@OLD_DB union all ' ||
'select * from ' || l_rec.table_name ||
'@OLD_DB minus select * from ' || l_rec.table_name || ')';
dbms_output.put_line(l_sql);
execute immediate l_sql
into l_found;
dbms_output.put_line('difference found :' || l_rec.table_name);
exception
when no_data_found then
dbms_output.put_line('okay :' || l_rec.table_name);
-- okay
null;
when others then
-- error (check if table exists, ...)
dbms_output.put_line('error :' || l_rec.table_name);
end;
end loop;
end;