注:两台服务器上的oracle版本均为:10.2.0.1.0本人用下列方法没成功,现求成功方法。
(1) 在server01的db1中由sys创建一个表test1,然后执行如下导出命令:
     1)C:>SQLPLUS sys/密码 as sysdba
     2)SQL>CREATE DIRECTORY ldl_dump AS 'c:\ldl_backup';
     3)SQL>GRANT READ,WRITE ON DIRECTORY ldl_dump to system;
     4)SQL>host expdp system/密码 directory=ldl_dump dumpfile=ldlfull.dmp full=y
运行结果:成功。(2)先把导出的文件夹'c:\ldl_backup'从服务器1拷到服务器2上并保持文件夹同名,用dca建一个空数据库db1,再执行如下导入指令:
      1)C:>SQLPLUS sys/密码 as sysdba
      2)SQL>CREATE DIRECTORY ldl_dump AS 'c:\ldl_backup';
      3)SQL>GRANT READ,WRITE ON DIRECTORY ldl_dump to system;
      4)SQL>host impdp system/密码 directory=dump_dir dumpfile=ldlfull.dmp full=y。
运行结果:成功但提示有很多错。检查发现:在server02的db1中不论在sys用户下,还是在system用户下都找不到表test1,说明没有正确迁移。求高手指教!

解决方案 »

  1.   

    在server1中正常关闭数据库,然后copy数据文件和控制文件到server2
    在server2上创建init文件,更改init文件和server1的类似,其实也copy过来改一下就行
    然后在server2上打开数据库到nomount模式,重建控制文件,然后mount,然后open,
    就O了
      

  2.   

    忘了问了,server1和server2是不是同操作系统?要是不是,我再说其他方法
      

  3.   

    看了一下你的方法,你的方法其实也是可以的,只是测试的用户不对,sys用户在用导入导出泵的时候,很多东西都是不会被导过来的,况且应用程序是不可能用sys用户的,你建个别的用户建文件再试一下你的方法就O了
      

  4.   

    同系统之间还一个更简单的方法:
    用RMAN
    1.先用RMAN备份一下server1的库
    rman target sys/密码@tns nocatalog
    RMAN>backup database include current controlfile plus archivelog format='你的路径';
    2.在server2上建立相应的OS目录.并将rman的备份片copy到server2的相应目录下,必须和server1的路径一样.
    3.建立复制数据库的服务,你是windows,所以可以用
    oradim -new -sid db1 -intpwd 密码
    4.建立复制数据库的参数文件,你可以在server1上用create pfile from spfile生成一个copy过来改改就行
    5.在server2上启动实例
    set ORACLE_SID=db1
    sqlplus / as sysdba
    SQL>startup nomunt
    6.在server2上启动listener并在server1上配置tns
    7.用RMAN复制
    在server1上运行:
    rman target sys/密码 auxiliary sys/密码@tns
    RMAN>run {
    set newname for datafile 1 to '新路径';(如果server1和server2路径完全一样,可以去掉这步)
    ......
    set newname for tempfile 1 to '新路径';
    duplicate target database to 'server1的实例名' logfile
    'server2的新路径\redo01.log' size 10m,
    ... redo02.log ...
    ;
    }
    然后一切都自动进行了,O了吧,别说我这么讲你也不会!
      

  5.   

    to:jinxino_o两台服务器都是:windows 2003server企业版
      

  6.   

    sys 不等于 system你用sys创建的test表,当然是用system导不出来的。不要把用户表,建立在sys和system的schema里。
      

  7.   

    to:inthirties用什么用户,才能把所有内容正确导出,导入。
      

  8.   

    我感觉sys/system都可以吧,主要是FULL=Y
      

  9.   

    不要在sys和system里面建表,如果是其他用户的记得导出语句带上用户名
      

  10.   

    10g中用导入导出泵进行全库迁移主要需要执行的用户具有以下角色:
    imp_full_database或dba
    emp_full_database或dbaSQL> select * from user_role_privs;USERNAME                       GRANTED_ROLE                   ADM DEF OS_
    ------------------------------ ------------------------------ --- --- ---
    SYSTEM                         AQ_ADMINISTRATOR_ROLE          YES YES NO
    SYSTEM                         DBA                            YES YES NO
    SYSTEM                         MGMT_USER                      NO  YES NO因为system已经有dba的角色,所以可以进行全库导入或导出,但是即使full=y这个参数已经指定了,sys用户的很多对象也不会被导出,主要是很多数据字典之类的和数据库相关的对象.
    所以我建议你别用sys用户做测试也是这个原因,用sys用户做测试根本就没意义.
      

  11.   

    用DG直接迁移过去,多快呀,之后再switchover 
      

  12.   


    直接拷贝所有datafiles,tempfiles,redo files,parameter file,controlfiles,password files,and listener files
    然后oradim新建实例,启动数据库
      

  13.   

    强烈建议用RMAN来进行数据库迁移操作。
      

  14.   

    tempfiles不用copy
    parameter file 需要改一下
    oradim运行后,必须重建controlfiles,然后才能open