如何找到不同数据库中两个表之间的差异

时间:2015-04-13 04:25:53

标签: database oracle comparison

我需要从结构上比较两个不同数据库中的两个表。第二个数据库实际上是第一个表的更新版本,因此结构大致相同,但存在一些细微差别。有没有办法自动比较这些表?

1 个答案:

答案 0 :(得分:0)

一种方法是Create Database Link访问另一个数据库中的表。

例如,

CREATE DATABASE LINK "MY_DB_LINK"
  CONNECT TO &username 
  IDENTIFIED BY &pasword 
  USING 'my_service_name';

为my_service_name创建tnsnames条目

my_service_name =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = service_name)
    )
  )

然后,

SELECT column_name 
FROM   user_tab_columns@my_db_link -- here using dblink 
WHERE  table_name = Upper('&table1') 
MINUS 
SELECT column_name --, data_type, data_length, data_scale, data_precision FROM   user_tab_columns 
WHERE  table_name = Upper('&table2');