簡體   English   中英

Oracle 無法使用從遠程表中選擇的 LOB 定位器

[英]Oracle cannot use LOB locators selected from remote tables

如下所示,我想在另一個數據庫中遠程創建一條記錄,當我在插入查詢中將 c1 更改為某個字符串時,該記錄將起作用,但是當我使用 c1 對象時,它將按照標題通過錯誤。

請注意:它在沒有@ 的情況下在同一個遙控器上工作正常,並且使用 c1 對象,嘗試了其他解決方案但無濟於事,有人可以幫我編寫此 dbms_lob 的腳本嗎? 並且它遠程到另一個遠程數據庫插入

set define off;
Declare 
c1 clob default ' ';
begin 

dbms_lob.append(c1,chr(10));dbms_lob.append(c1,q'[DOCTYPE]');

Insert into SYSTEM_CONFIG@rtfqa (CONFIG_ID,NAME,VALUE_OLD,TYPE,SUB_TYPE,FROM_SYSTEM,TO_SYSTEM,VALUE) values ((select max(config_id)+1 from SYSTEM_CONFIG@rtfqa),'CONTRACT_HASHTAG_EN',null,'system','system',null,null,c1);
end; 

錯誤

Insert into SYSTEM_CONFIG@rtfqa (CONFIG_ID,NAME,VALUE_OLD,TYPE,SUB_TYPE,FROM_SYSTEM,TO_SYSTEM,VALUE) values ((select max(config_id)+1 from SYSTEM_CONFIG@rtfqa),'CONTRACT_HASHTAG_EN',null,'system','system',null,null,c1);
end;

>Error report -  
>ORA-06550: line 7, column 148:  
>PL/SQL: ORA-22992: cannot use LOB locators selected from remote tables  
>ORA-06550: line 7, column 1:  
>PL/SQL: SQL Statement ignored  
>06550. 00000 -  "line %s, column %s:\n%s"   
>*Cause:    Usually a PL/SQL compilation error.  
>*Action:

sql developer 18.2.0
DB = Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

使用分布式 LOB 時有各種限制。 解決此問題的一種方法是對本地 LOB 全局臨時表進行操作,如下所示:

  • 創建global temporary table
  • 在此 GTT 中加載行並操作 LOB
  • 使用insert@remote as select from gtt復制數據

看起來像:

create table t (
  c1 int, c2 clob
);

create global temporary table gtt as
  select * from t
  where  1 = 0;

declare
  v2 clob default ' ';
begin

  dbms_lob.append (
    v2,
    chr (10)
  );
  dbms_lob.append (
    v2,
    q'[DOCTYPE]'
  );

  insert into gtt (
    c1, c2 
  ) values (
    1, v2
  );

  insert into t@loopback 
    select * from gtt;

end;
/

select * from t;

C1   C2          
    1  
DOCTYPE  

Loopback 是一個指向同一個數據庫的數據庫鏈接來模擬遠程數據庫

如果有人仍然遇到同樣的問題,他應該通過 sys 用戶運行 dblink 命令例如使用 system 作為 sysdba 連接到數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM