Oracle数据转移(转储)的方案
                             (Fred Zhang编写—2004-12-16)一. Oracle数据转移(转储)的方法
Oracle数据转移(转储)的方法可以有以下几种,由于源数据库与目的数据库的格式有不同种类,所以在数据转储时,有的时候可能可以使用其中的好几种方法,有的时候可能只能用其中的一种方法,有的时候可能要用其中的几种方法搭配使用才能完成,不管怎么样,只要熟悉以下各种方法,所有的Oracle数据转移(转储)都可以用这几种方法来完成。下面先介绍方法,然后再介绍搭配使用方案。方法一:用Imp/exp:
  导出
exp user/password@数据ID owner=方案名 file=c:\a.dmp log=c:\a.log
文件就在C:下
导入:
在你的数据库导入
先建一用户user
imp user/password@数据ID file=c:\a.dmp log=c:\a.log full=y方法二:用SQL Server中的DTS工具:
只要在DTS中设定好源数据库,与目的数据库就可以了方法三:用Oracle的工具:Oracle migration workbench方法四:用Oracle的工具:SQLLDR方法五:用SQL语句:
两个表T1,T2之间复制,如果T2表结构还没有生成:
create table 方案名2.T2 as select * from方案名1.t1;
两个表T1,T2之间复制,如果且T2表结构已经生成时: 
insert into方案名2.t2 select * from方案名1.t1;二. 常见方法的搭配使用方案
     1. 同一方案下数据转移(转储):用方法五
     2. 同一台电脑中,不同方安案下数据转移(转储):用方法五
     3.不同电脑下数据转移(转储):
        方法一+方法五
       方法二
       方法三
     4.相同的操作系统,不同数据库类型下(如Oracle与DB2之间)数据转移(转储):
       方法二
       方法三
      5. 不同的操作系统(如Windows与UNIX),相同的数据库类型下(都是Oracle)数据转移(转储):
       方法一+方法五
       方法三
     6.不同的操作系统(如Windows与UNIX),不同数据库类型下(如Oracle与DB2之间)数据转移(转储):
       方法三
      7. Txt文件,Excel文件, Dat文件与Oracle之间的转移(转储):
       方法二
       方法三
       方法四三. 总节
       1.以上各种方法与搭配使用方案虽然已基本包括所有可能的出现的情况,但在实际使用的过程中可能会出现一些变化,这就要我们灵活运用。
       2.在实际使用的过程中可能会出现用其中一种方法不成功,我们要多种方法尝试。
       3.在实际使用的过程中要注意执行效率的问题。比如在数据量太大的时候(5GB),exp/imp就要花比较长的时间。
      4.要注意使用的方便性,比如SQL Server的DTS比Oracle的Oracle migration workbench要方便。

解决方案 »

  1.   

    收藏,順便問下,遠程端為8i,本機為9i該如何把數據導入到本機啊,
    我只是想在本機上弄個測試環境。
    在sqlnet.ora上的內容為:
    #NAMES.DEFAULT_DOMAIN = mycompany.com#NAME.DEFAULT_ZONE = worldNAMES.DEFAULT_DOMAIN = worldSQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES)我每次只能使用一邊的(注釋掉mycompany.com才能用word,反過來一樣)怎樣才能讓其可以同時使用。
    當然我不想換成word域
      

  2.   

    TO:pjy998(jieky)
       先建立一个连接(dblink),然后就可以用方法五:用SQL语句:
      

  3.   

    请问楼主,我曾经用法二希望解决从sqlserver到oracle的数据库迁移问题。结果是,改动非常麻烦,需要一个表一个表地改脚本和他的操作框里的文字:情况:
    1。sqlserver给的脚本是create table "a",表名都用双引号括起来了,这个在oracle今后的开发是麻烦,所有涉及表名的地方都要加“”才能引用。
    2。我整理了脚本,把建库的脚本在oracle跑通了,剩下的问题是把sqlserver的数据传给oracle ,结果用法二,比如预导表a,而ora的结果是:select  * from 结果(以这个为名又建了一个表)
    以上问题应该怎么处理?