Dalam tutorial ini, saya memberikan contoh untuk membandingkan dua objek tabel database dari skema yang berbeda menggunakan paket utilitas DBMS_COMPARISON di Oracle.
Langkah Membandingkan Dua Objek Tabel di Oracle Menggunakan DBMS_COMPARISON
Langkah-1 Buat perbandingan menggunakan DBMS_COMPARISON. Dalam contoh berikut, ini akan membandingkan satu tabel dari skema SCOTT dan satu tabel dari skema HR dalam database yang sama dan akan membuat perbandingan bernama 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; /
Keluaran:
PL/SQL procedure successfully completed.
Langkah-2 Setelah mengeksekusi blok PL/SQL di atas, perbandingan akan dibuat. Langkah selanjutnya adalah menjalankan perbandingan ini seperti yang ditunjukkan di bawah ini.
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; /
Keluaran:
Differences found and scan_id is 7 PL/SQL procedure successfully completed.
Langkah-3 Jika ditemukan perbedaan, Anda dapat memeriksa perbedaannya dengan query berikut:
SELECT comparison_name, local_rowid, remote_rowid, status FROM user_comparison_row_dif WHERE comparison_name = 'EMP_COMPARE';
Keluaran:
COMPARISON_NAME LOCAL_ROWID REMOTE_ROWID STATUS EMP_COMPARE AAAR3sAAEAAAACXAAA AAAU5vAAEAAAAW9AAA DIF EMP_COMPARE AAAR3sAAEAAAACXAAD AAAU5vAAEAAAAW9AAD DIF
Anda akan mendapatkan output seperti yang ditunjukkan di atas. Di mana ia akan menunjukkan kepada Anda nama perbandingan, id baris lokal (id baris tabel scott.emp), id baris jarak jauh (id baris tabel hr.emp2) dan statusnya.
Sekarang Anda dapat mengkueri kedua tabel untuk ROWID ini untuk memeriksa perbedaannya.
Anda juga dapat membandingkan dua tabel data dari skema yang berbeda menggunakan kueri SQL, seperti yang ditunjukkan pada contoh di bawah ini.
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;
Lihat juga:
- Membagi String dalam Contoh PL/SQL
- Ekstrak Pernyataan DDL dari Oracle DUMP (file dmp)