我们系统要升级,升级以后的数据库表结构跟升级以前稍有不同,
比如升级以后数据库用户是scott2,升级以前是scott1
能不能用一条sql语句,把这两个用户下表名相同,但是表结构不同的表查上来?如果不能的话,有什么好的解决办法呢
因为表比较多,一个个对比不太实际

解决方案 »

  1.   

    select table_name
    from dba_tables t
    where owner='SCOTT2'
      and exists(
        select 1 from 
          (select * from dba_tab_cols where owner='SCOTT2') a full join 
          (select * from dba_tab_cols where owner='SCOTT1') b
        on a.table_name=b.table_name
          and a.column_name=b.column_name
        where nvl(a.table_name,b.table_name)=t.table_name
          and (a.column_name is null or b.column_name is null))
      

  2.   

    楼主的这个需求,使用pl/sql developer的compare user objects很容易实现