In questo tutorial, fornisco un esempio per confrontare due oggetti tabella di database di schemi diversi utilizzando il pacchetto di utilità DBMS_COMPARISON in Oracle.
Passaggi per confrontare due oggetti tabella in Oracle utilizzando DBMS_COMPARISON
Passaggio 1 Crea il confronto utilizzando DBMS_COMPARISON. Nell'esempio seguente, confronterà una tabella dello schema SCOTT e una tabella dello schema HR nello stesso database e creerà un confronto denominato emp_compare .
BEGIN DBMS_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; /
Uscita:
PL/SQL procedure successfully completed.
Passaggio 2 Dopo aver eseguito il blocco PL/SQL sopra, verrà creato il confronto. Il passaggio successivo consiste nell'eseguire questo confronto come mostrato di seguito.
SET SERVEROUTPUT ON DECLARE t_scan_info DBMS_COMPARISON.comparison_type; l_diff BOOLEAN; BEGIN l_diff := DBMS_COMPARISON.compare ( comparison_name => 'emp_compare', scan_info => t_scan_info, perform_row_dif => TRUE ); IF NOT l_diff THEN DBMS_OUTPUT.put_line('Differences found and scan_id is ' || t_scan_info.scan_id); ELSE DBMS_OUTPUT.put_line('No differences found.'); END IF; END; /
Uscita:
Differences found and scan_id is 7 PL/SQL procedure successfully completed.
Fase 3 Se sono state trovate differenze, è possibile verificare le differenze tramite la seguente query:
SELECT comparison_name, local_rowid, remote_rowid, status FROM user_comparison_row_dif WHERE comparison_name = 'EMP_COMPARE';
Uscita:
COMPARISON_NAME LOCAL_ROWID REMOTE_ROWID STATUS EMP_COMPARE AAAR3sAAEAAAACXAAA AAAU5vAAEAAAAW9AAA DIF EMP_COMPARE AAAR3sAAEAAAACXAAD AAAU5vAAEAAAAW9AAD DIF
Otterrai l'output come mostrato sopra. In cui ti mostrerà il nome del confronto, l'id della riga locale (id della riga della tabella scott.emp), l'id della riga remota (id della riga della tabella hr.emp2) e lo stato.
Ora puoi interrogare entrambe le tabelle per questi ROWID per verificare le differenze.
Puoi anche confrontare i dati delle due tabelle dal diverso schema utilizzando la query SQL, come mostrato nell'esempio seguente.
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM scott.emp MINUS SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM hr.emp2;
Vedi anche:
- Dividi una stringa nell'esempio PL/SQL
- Estrai le istruzioni DDL da Oracle DUMP (file dmp)
-
Che cos'è DTU nel database SQL di Azure e come capire quanto ci serve
-
Utilizzo di SQL Server Profiler | Risoluzione dei problemi relativi alle prestazioni di SQL Server -5
-
Comprensione di MySQL TRUNCATE TABLE con esempi pratici
-
Gestire l'elevata disponibilità in PostgreSQL – Parte II:Replication Manager