公司懂oracle的人离职了,老板让我负责他以前的东西,但我以前没用过oracle,感觉oracle的数据库复制并不像sqlserver那样直接将数据库附加就可以复制了,真是犯难了,我建了一个10g的数据库,想把他以前在9i下的两个数据库都复制到另一台机器上的10g数据库里,兄弟姐妹们我该如何操作,最好能详细一些,也许您的回答对像我这样的许多其他刚接触oracle的人也有用

解决方案 »

  1.   

    exp/imp先exp导出9i里的数据,拷贝数据文件或放在一个10g库主机能访问到的地方,然后imp导入到10g数据库里。
      

  2.   

    这里的数据文件,是指exp生成的导出文件(.dmp)
      

  3.   

    您说的exp/imp命令在哪里进行操作?
      

  4.   

    命令行里,windows DOS下,linux终端提示符下。
    exp help=y
    imp help=y研究下,简单明了。
      

  5.   

    新建的10g数据库windows不是在c盘也可以这样操作吗?原来9i数据库windows在c盘,现在的10g数据库windows在d盘
      

  6.   

    可以的。exp/imp不问你数据库的外部物理结构。
    只要你在新库内部建好相应的用户及表空间,让用户在对应表空间上有配额就行。
      

  7.   

    谢谢,我按照您的方法成功导出了9i的数据,但是我如果想要将expdat.dwp导入10g中是不是还要先在数据库中建立一个同样名字的数据库才能导入了?
      

  8.   

    oracle数据库概念和sql server不一样。后者里的数据库相当于oracle里的一个schema。
    10g库里建立一个同名用户(也可以不同名,imp时需要使用fromuser=   touser=参数)。让该用户拥有9i里同名表空间。这样最简单。
      

  9.   

    用exp/imp这没错,但一定要注意版本的问题。你要用同一版本的客户端来操作否则就很有可能会出问题的。即:你要用9i的客户端从9i服务端exp一个dmp文件,然后再用这个9i客户端imp到10g服务端。
      

  10.   

    谢谢,可是我在新的数据库里建立了一个表空间(sp)后,想再建立一个用户(sp),使用toad建立的用户为什么总分配不了dba权限呢,在imp时提示只有dba才能够进行imp操作,有会使用toad的吗?