第一可以使用Oracle本身的高级复制功能完成
第二,自己写的吧

解决方案 »

  1.   

    控制文件*.ctl
    是自己建的例子LOAD DATA
    INFILE 'ulcase7.dat'
    DISCARDFILE 'ulcase7.dis'
    APPEND
    INTO TABLE emp
      WHEN (57)='.'
      TRAILING NULLCOLS
      (hiredate SYSDATE,
       deptno   POSITION(1:2)  INTEGER EXTERNAL(3)  
                NULLIF deptno=BLANKS,
       job      POSITION(7:14)   CHAR  TERMINATED BY WHITESPACE  
                NULLIF job=BLANKS  "UPPER(:job)",
       mgr      POSITION(28:31)  INTEGER EXTERNAL TERMINATED BY WHITESPACE 
                NULLIF mgr=BLANKS,
       ename    POSITION (34:41) CHAR  TERMINATED BY WHITESPACE  
                "UPPER(:ename)",
       empno    INTEGER EXTERNAL  TERMINATED BY WHITESPACE,
       sal      POSITION(51)  CHAR  TERMINATED BY WHITESPACE
                "TO_NUMBER(:sal,'$99,999.99')",
       comm     INTEGER EXTERNAL  ENCLOSED BY '(' AND '%'  
                ":comm * 100"
      )
    具体可以察看文档
      

  2.   

    回答你的问题:
    1、因为A库可能对各各表都有增、删、改操作,对于B库与A同步有以下几种方式。
     a、完全的同步,那需要把B做成A的standby server,两台机器都需要开归档,一句两句说不完的,建议看一下相关资料。这种方式的B是不可以正常使用的。
    b、对每个表都手动同步,这使用pb的pipeline最方便了,采用appendand update这种方式处理两表之间的关系。
    c、也是手动,手动把B中的相应表drop或truncate掉,把数据得导个一次。
    2、sql*loader的控制文件与普通所说的不是一样的,它其实是控制导入的参数文件。zzzsssccc(籍秋风) 给出的一个例子,"APPEND"指出使用追加的方式。