用DBLINK肯定没有问题,关键是你怎么导的。对于CLOB,BlOB等字段,不能直接用insert .. select ..导数据。建议做一个存储过程,调用:DBMS_LOB包中相关功能,将数据分匹导入。

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE Insert_Article AS
      id number(10);
      title varchar2(200);
      types varchar2(20);
      keyword varchar2(40);
      rowfrom web_admin.Drug%rowtype;
      rowaim Article@DrugMana%rowtype;
      inputtime date;
      CURSOR C_Article IS
      select id,title,keyword,category,inputdate
      from web_admin.Drug
      where dbms_lob.GETLENGTH(content)<=65535;
    begin
      delete from Article@DrugMana;
      open C_Article;
      Loop
        Fetch C_Article into id,title,keyword,types,inputtime;
      Exit when C_Article%NOTFOUND;
      insert into Article@DrugMana (Article_Code,Article_Title,KeyWord,Article_Type,InputTime)
          values (to_char(id),title,keyword,types,inputtime);
      
      select * into rowfrom from web_admin.Drug where id=id;
      select * into rowaim from Article@DrugMana where article_code=id for update;
      dbms_lob.copy(rowaim.article_content,rowfrom.content,dbms_lob.getLength(rowfrom.content),1,1);   
      
      END Loop;
      Close C_Article;
    end;以上是我的存储过程,
    解释一下:Article@DrugMana,
    DrugMana为dblink,Article为远程数据库中的表
    源表为web_admin.Drug,
    运行提示:
    The following error has occurred:ORA-22992: 无法使用从远程表选择的 LOB 定位器
    ORA-06512: 在line 3
      

  2.   

    我在8.1.6下可以对有blob型字段的DBLINK的表直接insert ... select ... from的。