因为买在一台新服务器,把老服务器中的所有数据用Exp和Imp命令全部迁移过来了。
有没有什么办法,可以看两个库的结构和数据有差别,我现在只是简单查了下,数据表和视图等的个数是一致的,但是没办法判断数据量是否有差别?本来我想用下面的存储过程来把整个SA用户的记录数,统计出来来比较的,但是这个存储过程也执行不了,因为存储过程不认dba_tables这样的表?
      record_count number;
      sum_record number;
      a_tabel_name varchar2(200);
begin
     sum_record:=0;
     for mycursor in (select table_name from dba_tables where owner='SA' order by table_name) loop 
         select count(1) into record_count  from mycursor.table_name  ;
         sum_record :=(sum_record-record_count);
     end loop;请问还有没有其他什么办法来检查数据丢失与否?或者这样的储存过程该如何改写?
         

解决方案 »

  1.   

    没必要这么小心吧.楼主也太不相信oracle了。
    在oracle imp后,看看有没有错误提示,然后,随便抽检两个表做测试就可以了。
      

  2.   

    在存储过程中使用dba_tables这样的表的话,需要显式授予权限后才可以
    exp + imp 应该不会丢掉表的,检查一下输出的log就差不多了,如果没有错误提示的话
      

  3.   

    随机查几个表好了,select一下肉眼判断,基本就能保证一致了。
      

  4.   

    找找吧,有表数据的比较工具。
    比较数据库相同,这个范围有点大吧!
    redo和archive不同算吗?
    楼主说的还是数据库的表和试图之类的对象是不是一样吧?
    可以用all_objects先比出所有的数据库对象是不是都一样。
    然后再想办法(比如all_tab_cols)比较每个字段的类型、大小和名字是不是相同吧!
      

  5.   

    导入日志还不能满足你吗?如果你连日志都不信,那使用oracle时每次insert之后你是不是还要select一把才放心?
      

  6.   

    exp + imp 应该不会丢掉表的,检查一下输出的log就差不多了,如果没有错误提示的话
      

  7.   

    在不放心,可以使用第三方工具pl/sql developer
    tools->compare user objects对指定的用户进行全部对象的比较