sql >> Databasteknik >  >> RDS >> Oracle

Hur jämför man två databasobjekt i Oracle?

I den här handledningen ger jag ett exempel för att jämföra två databastabellobjekt med olika scheman med hjälp av verktygspaketet DBMS_COMPARISON i Oracle.

Steg för att jämföra två tabellobjekt i Oracle med DBMS_COMPARISON

Steg-1 Skapa jämförelsen med DBMS_COMPARISON. I följande exempel jämför den en tabell från SCOTT-schemat och en tabell från HR-schemat i samma databas och skapar en jämförelse med namnet 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;
/

Utdata:

PL/SQL procedure successfully completed.

Steg-2 Efter exekvering av ovanstående PL/SQL-block skulle jämförelsen skapas. Nästa steg är att köra den här jämförelsen som visas nedan.

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;
/

Utdata:

Differences found and scan_id is 7
PL/SQL procedure successfully completed.

Steg-3 Om skillnader hittas kan du kontrollera skillnaderna med följande fråga:

SELECT comparison_name,
local_rowid,
remote_rowid,
status
FROM user_comparison_row_dif
WHERE comparison_name = 'EMP_COMPARE';

Utdata:

COMPARISON_NAME    LOCAL_ROWID              REMOTE_ROWID         STATUS
EMP_COMPARE        AAAR3sAAEAAAACXAAA       AAAU5vAAEAAAAW9AAA   DIF
EMP_COMPARE        AAAR3sAAEAAAACXAAD       AAAU5vAAEAAAAW9AAD   DIF

Du kommer att få utdata som visas ovan. Där visas jämförelsenamnet, lokalt rad-id (scott.emp-tabellrad-id), fjärrrad-id (hr.emp2-tabellrad-id) och status.

Nu kan du fråga båda tabellerna för dessa ROWIDs för att kontrollera skillnaderna.

Du kan också jämföra de två tabelldata från de olika schemana med hjälp av SQL-frågan, som visas i exemplet nedan.

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;

Se även:

  • Dela en sträng i PL/SQL-exempel
  • Extrahera DDL-utlåtanden från Oracle DUMP (dmp-fil)
  1. 2 sätt att skapa en tabell om den inte finns i SQL Server

  2. Hur man skapar en MySQL-installation för lokal testning

  3. Aktivera fjärransluten MySQL-anslutning:FEL 1045 (28000):Åtkomst nekad för användaren

  4. Klona en SQLite-databas