Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana Membandingkan Dua Objek Database di Oracle?

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)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CSV di Pengembang SQL…

  2. Bagaimana cara menggunakan enum di Oracle?

  3. Partisi Oracle Dengan Kata Kunci

  4. Bagaimana cara Membagi String di PL/SQL?

  5. ORA-00257:kesalahan pengarsipan. Hubungkan internal saja, sampai dibebaskan.