W tym samouczku podam przykład porównania dwóch obiektów tabeli bazy danych o różnych schematach przy użyciu pakietu narzędziowego DBMS_COMPARISON w Oracle.
Kroki porównania dwóch obiektów tabeli w Oracle przy użyciu DBMS_COMPARISON
Krok 1 Utwórz porównanie za pomocą DBMS_COMPARISON. W poniższym przykładzie porówna jedną tabelę ze schematu SCOTT i jedną tabelę ze schematu HR w tej samej bazie danych i utworzy porównanie o nazwie emp_compare .
BEGINDBMS_COMPARISON.create_comparison (comparison_name => 'emp_compare ',schema_name => 'scott',object_name => 'emp',dblink_name => NULL,remote_schema_name => 'hr',remote_object_name => 'emp2');END;/
Wyjście:
Procedura PL/SQL zakończona pomyślnie.
Krok 2 Po wykonaniu powyższego bloku PL/SQL zostanie utworzone porównanie. Następnym krokiem jest przeprowadzenie tego porównania, jak pokazano poniżej.
SET SERVEROUTPUT ONDECLAREt_scan_info DBMS_COMPARISON.comparison_type;l_diff BOOLEAN;BEGINl_diff :=DBMS_COMPARISON.compare (comparison_name => 'emp_compare ',scan_info => t_scan_info,perform_row_dif => TRUE);JEŚLI NIE l_diff THENDBMS_OUTPUT.put_line('Znalezione różnice i scan_id to ' || t_scan_info.scan_id);ELSEDBMS_OUTPUT.put_line('Nie znaleziono różnic;.END');;/
Wyjście:
Znalezione różnice i scan_id to procedura 7PL/SQL zakończona pomyślnie.
Krok 3 Jeśli zostaną znalezione różnice, możesz je sprawdzić za pomocą następującego zapytania:
SELECT nazwa_porównania,lokalny_rowid,zdalny_rowid,statusFROM user_comparison_row_difWHERE nazwa_porównania ='EMP_COMPARE ';
Wyjście:
COMPARISON_NAME LOCAL_ROWID ZDALNE_ROWID STATUS EMP_compareOtrzymasz dane wyjściowe, jak pokazano powyżej. W którym pokaże nazwę porównania, identyfikator lokalnego wiersza (identyfikator wiersza tabeli scott.emp), identyfikator wiersza zdalnego (identyfikator wiersza tabeli hr.emp2) i status.
Teraz możesz zapytać obie tabele o te identyfikatory ROWID, aby sprawdzić różnice.
Możesz także porównać dane z dwóch tabel z różnych schematów za pomocą zapytania SQL, jak pokazano w poniższym przykładzie.
WYBIERZ EMPNO, IMIĘ, ZADANIE, MGR, WYNAJĘCIE, SAL, COMM, DEPTNOFROM scott.empMINUS WYBIERZ EMPNO, IMIĘ, ZADANIE, MGR, WYNAJĘCIE, SAL, KOMUNIKACJA, DZIAŁ Z hr.emp2;Zobacz też:
- Podziel ciąg w przykładzie PL/SQL
- Wyodrębnij instrukcje DDL z Oracle DUMP (plik dmp)