我现在在oracle中建了两个用户,每个用户下面都各有30张表,但是两个用户下的这些表有些差异,如果用SQL比较这些表呢?另外:PLSQL Developer中登录的时候选择数据库是在tnsnames.ora文件中读取的,但是我的现在怎么读不出来呢?
50分一个问题。

解决方案 »

  1.   

    conn / as sysdba-- 到sys用户下,用 dba_tables去进行比较!
      

  2.   

    conn / as sysdba-- 到sys用户下,用 dba_tables联结 dba_tab_columns 两个数据字典视图 去进行比较!
      

  3.   

    -- 另外:PLSQL Developer中登录的时候选择数据库是在tnsnames.ora文件中读取的,
    -- 但是我的现在怎么读不出来呢?-- 为什么读不出来?你是怎么操作的?
      

  4.   

    记得PL/SQL DEV还是TOAD里有直接比较的功能,
      

  5.   


    能再详细一点吗,最好sql语句也说下吧
      

  6.   


    --比对表的栏位数:
    SELECT A.OBJECT_NAME,COUNT(B.COLUMN_NAME) FROM ALL_OBJECTS A,ALL_TAB_COLUMNS B WHERE A.OWNER=B.OWNER AND A.OBJECT_NAME=B.TABLE_NAME  AND A.OBJECT_TYPE='TABLE' AND A.OWNER='U1PP' AND B.TABLE_NAME LIKE '_XF000%'  GROUP BY A.OBJECT_NAME ORDER BY A.OBJECT_NAME;--比对PK\FK\UK
    SELECT B.TABLE_NAME,B.CONSTRAINT_TYPE,B.CONSTRAINT_NAME FROM ALL_OBJECTS A,ALL_CONSTRAINTS B WHERE A.OWNER=B.OWNER AND A.OBJECT_NAME=B.TABLE_NAME  AND A.OBJECT_TYPE='TABLE' AND A.OWNER='U1PP' AND B.TABLE_NAME LIKE '_XF000%' AND CONSTRAINT_TYPE IN ('P','R','U') ORDER BY A.OBJECT_NAME ;--范围先缩小,然后再看有哪些不同,再具体单独比对--我们新客户建置DB物件比对我就是这样做的
      

  7.   

    安装完PLSQL Developer登录的时候在数据库下拉列别里就应该自动显示tnsnames.ora里面配置的,但是现在不加载,是不是哪里需要配置?
      

  8.   

    你tnsname.ora要按照之前的配置信息配噢,我记得前面是不能有空格的;检查检查吧.
    表结构多不一样,我记得有张视图是记录了表的字段信息,但就算找出来哪些字段没有
    我觉得对你作业也不大撒,你还是得一个一个去对..还不如找个对比工具贴出来...呵呵.
    纯属个人看法..
      

  9.   

     1.用工具PL/SQL Developer 有自动比较的功能,还可以自动生成语句
     2.你的Tnsnames.ora是不是些错了,贴出来看看...