sql >> Databáze >  >> RDS >> Oracle

Jak porovnat dva databázové objekty v Oracle?

V tomto tutoriálu uvádím příklad pro porovnání dvou objektů databázových tabulek různých schémat pomocí obslužného balíčku DBMS_COMPARISON v Oracle.

Kroky k porovnání dvou tabulkových objektů v Oracle pomocí DBMS_COMPARISON

Krok 1 Vytvořte srovnání pomocí DBMS_COMPARISON. V následujícím příkladu porovná jednu tabulku ze schématu SCOTT a jednu tabulku ze schématu HR ve stejné databázi a vytvoří srovnání s názvem 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;/

Výstup:

Procedura PL/SQL byla úspěšně dokončena.

Krok-2 Po provedení výše uvedeného PL/SQL bloku by se vytvořilo porovnání. Dalším krokem je spustit toto porovnání, jak je uvedeno níže.

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);POKUD NE l_diff THENDBMS_OUTPUT.put_line('Nalezené rozdíly a scan_id je ' || t_scan_info.scan_id);ELSEDBMS_OUTPUT.put_line(END'Nebyly nalezeny žádné rozdíly;END;/

Výstup:

Nalezeny rozdíly a scan_id je 7PL/SQL procedura úspěšně dokončena.

Krok 3 Pokud byly nalezeny rozdíly, můžete je zkontrolovat pomocí následujícího dotazu:

SELECT Compare_name,local_rowid,remote_rowid,statusFROM user_comparison_row_difWHERE Compare_name ='EMP_COMPARE ';

Výstup:

COMPARISON_NAME    LOCAL_ROWID              REMOTE_ROWID         STATUS EMP_COMPARE        AAAR3sAAEAAAACXAAA       AAAU5vAAEAAAAW9AAA   DIFEMP_COMPARE        AAAR3sAAEAAAACXAAD       AAAU5vAAEAAAAW9AAD   DIF
Získáte výstup, jak je uvedeno výše. Ve kterém se zobrazí název porovnání, ID místního řádku (id řádku tabulky scott.emp), ID vzdáleného řádku (id řádku tabulky hr.emp2) a stav.

Nyní se můžete dotazovat na tyto ROWID v obou tabulkách a zkontrolovat rozdíly.

Můžete také porovnat data dvou tabulek z různých schémat pomocí dotazu SQL, jak je uvedeno v příkladu níže.

SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNOFROM scott.empMINUS SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNOFROM hr.emp2;

Viz také:

  • Rozdělit řetězec v příkladu PL/SQL
  • Extrahujte příkazy DDL z Oracle DUMP (soubor dmp)
  1. Rails:Instalace PG drahokamu na OS X – neúspěšné sestavení nativního rozšíření

  2. Instalace a práce s MySQL 5 na Windows 7

  3. Vytvoření výchozího veřejného profilu pro databázovou poštu na serveru SQL Server (T-SQL)

  4. Správa a monitorování databáze pro PostgreSQL 12