小弟新手,为做毕业设计接触的oracle,现在要将机器A上oracle的一个数据库(数据库名为JIEGOU)的表、存储过程、语句、数据等完全复制到机器B上。机器A离我较远,不方便亲自操作,那边的人也不怎么会导入导出文件,所以没用PLSQL里的工具直接导出数据库文件,于是我把“D:\oracle\oradata”里的数据库文件夹和“D:\oracle\admin”中的数据库文件夹从机器A复制到机器B中对应的文件夹,然后改了listener.ora、tnsnames.ora文件
listener.ora文件为# LISTENER.ORA Network Configuration File: D:\oracle\ora92\network\admin\listener.ora
# Generated by Oracle configuration tools.LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = wangpei)(PORT = 1521))
      )
    )
  )SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oracle\ora92)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = JIEGOU)
      (ORACLE_HOME = D:\oracle\ora92)
      (SID_NAME = JIEGOU)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = JIEGOU2)
      (ORACLE_HOME = D:\oracle\ora92)
      (SID_NAME = JIEGOU2)
    )
  )
tnsnames.ora文件# TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.JIEGOU =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = wangpei)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = JIEGOU)
    )
  )INST1_HTTP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = wangpei)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = MODOSE)
      (PRESENTATION = http://HRService)
    )
  )EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )JIEGOU2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = wangpei)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = JIEGOU2)
    )
  )其中JIEGOU2是我这边自己建的一个新数据库,应该不会有影响。
不过用PLSQL登录时报错ORA-12500:tns:监听程序无法启动专用服务器进程
问题有两个:①按理说这种方法应该是没有问题的,估计是我没对应上oracle里的某个映射关系,不知道有没有人遇到我这种类似的问题,讨论讨论这种方法能不能做出来
②ORA-12500这个错误我在网上也查了,原因很多,解决的办法也各种各样,查到的方法都试了,还是不行呵呵,可能是初学把,自己的想法也比较幼稚,希望大家指正指正,提点建议

解决方案 »

  1.   

    我看在A上用expdp导出整个库,然后把导出的dmp文件复制到B上,再用impdp导入整个库,这样快点
      

  2.   

    没听说可以直接直接复制数据文件,观察中另外建议,使用DBA用户EXP导出全部数据后再导入你的B机器,这样数据就复制过来了ORA-12500:在运行中sqlplusw /nolog
    conn user/pwd as sysdba;  //user:your dba username,pwd:password
    shutdown immediate    //close database
    start mount       //start and load instance
    alter database open      //open
    host lsnrctl stop      //listener stop
    host lsnrctl start     //start
    试试
      

  3.   

     停库--> copy 文件 --> 启动
      

  4.   

    如果用dmp导出除表外还有存储过程、序列等全部的数据库,是不是必须要用DBA的权限啊,我当时做的时候一般没用DBA账号,用的是个normal用户,后来DBA账号密码忘了,我在“sqlplus”里调试的时候用normal用户好像不行;不过用normal用户登录PLSQL,用其中的tool的export user object貌似可以导出所有内容,不过好像不能导出表中的数据,而且这个导出的sql文件也不能直接导到B机器的数据库中,必须要自己改改sql语句什么的,有没有更好的办法呢?