从AIX下10g向Linux下9i迁移,用exp/imp行吗?
现在用与9i同版本的windows客户端下exp出dmp,然后imp到Linux的9i数据库中,能行吗?
因为9i数据库是个业务化运行的机器,所有在准备做测试
若能行,还有几个问题:
9i和10g的exp/imp区别在哪?
exp/imp对oracle版本号精确到第几位,9.2.0.x才行,我现在还不知道Linux上的服务器端9i的精确版本?
因为windows客户端是32位的,若Linux是64位的,有影响吗??
谢谢各位大侠了

解决方案 »

  1.   

    不同版本的EXP/IMP问题? 一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决: 1、在高版本数据库上运行底版本的catexp.sql; 2、使用低版本的EXP来导出高版本的数据; 3、使用低版本的IMP将数据库导入到底版本数据库中; 4、在高版本数据库上重新运行高版本的catexp.sql脚本。 但在9i中,上面的方法并不能解决问题。如果直接使用底版本EXP/IMP会出现如下错误: EXP-00008: ORACLE error %lu encountered ORA-00904: invalid column name 这已经是一个公布的BUG,需要等到Oracle10.0才能解决,BUG号为2261722,你可以到METALINK上去查看有关此BUG的详细信息。 BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。在Oracle9i中执行下面的SQL重建exu81rls视图即可。 CREATE OR REPLACE view exu81rls  (objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)  AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,  decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')  || decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')  || decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')  || decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),  r.check_opt, r.enable_flag,  DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)  from user$ u, obj$ o, rls$ r  where u.user# = o.owner#  and r.obj# = o.obj#  and (uid = 0 or  uid = o.owner# or  exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')  )  /  grant select on sys.exu81rls to public;  /
      

  2.   

    前两天做过从10 TO 9的 exp/imp,应该没问题.不过是linux to windows的.AIX我想问题应该不大吧?AIX与LINUX都是基于UNIX内核的.兼容性应该更好一些.我从AIX,ORA9倒出到WINDOWS,LINUX,ORA9都没有出过问题.不过要注意一个就是编码的问题.如果编码不兼容的话,可能会导致一些数据显示不正确.那就要改一下数据库的编码了.
      

  3.   

    具体办法如下:
    1.在linux机器上配置好tnsnames.ora,让linux的机器可以访问aix的oracle为原则。
    2.在linux机器上:exp user/pw@linux_oracle_sid ......
    3.在linux机器上:imp user/pw file=..........
    exp/imp本身就是支持跨平台移植的东西。>>>>>>>
    从AIX下10g向Linux下9i迁移,用exp/imp行吗? 
    现在用与9i同版本的windows客户端下exp出dmp,然后imp到Linux的9i数据库中,能行吗? 
    因为9i数据库是个业务化运行的机器,所有在准备做测试 
    若能行,还有几个问题: 
    9i和10g的exp/imp区别在哪? 
    exp/imp对oracle版本号精确到第几位,9.2.0.x才行,我现在还不知道Linux上的服务器端9i的精确版本? 
    因为windows客户端是32位的,若Linux是64位的,有影响吗?? 
    谢谢各位大侠了
      

  4.   

    使用低版本的IMP将数据库导入到底版本数据库中; 
      

  5.   

    exp出来的文件是二进制的,可以在不同操作系统之间迁移
    其它细节不是很清楚我非常不理解的是,为什么要从10迁移到9啊?
    10g明显效率要高9i,差不多30%左右
      

  6.   

    对于这个问题,有两个原则:
    1 exp/imp高版本向底版本兼容,且需要保证字符集一致(否则等有罪受吧)
    2 到Oracle10g出来后,只需要是:Oracle10g中的exp/imp是同一个版本,不论往9i,10g,11g导出导入均没有
      问题,Windows,Linux,Aix之间的互相导出导入已经测试通过。