Welcome 微信登录

首页 / 数据库 / MySQL / Oracle DBLink 访问Lob 字段 ORA-22992 解决方法

这篇测试一下通过DBLink 访问含有Blob字段表的方法。

一.模拟问题

1.1  在实例1上操作:创建含有blob 的测试表:
  1. /* Formatted on 2012/6/19 10:18:05 (QP5 v5.185.11230.41888) */  
  2. CREATE TABLE lob1  
  3. (  
  4.    line   NUMBER primary key,  
  5.    text   CLOB  
  6. );  
  7.   
  8. INSERT INTO lob1  
  9.    SELECT distinct line, text FROM all_source where rownum<500;  
  10.   
  11. SELECT segment_name,  
  12.          segment_type,  
  13.          tablespace_name,  
  14.          SUM (bytes) / 1024 / 1024 || "M" AS "SIZE"  
  15.     FROM user_segments  
  16.    WHERE segment_name = "LOB1"  
  17. GROUP BY segment_name, segment_type, tablespace_name;  
LOB 表的信息如下:
  1. SEGMENT_NAME    SEGMENT_TYPE       TABLESPACE_NAME                SIZE  
  2. --------------- ------------------ ------------------------------ ----------   
  3. LOB1            TABLE              SYSTEM                         9M  
  4.   
  5. SQL> set wrap off;  
  6. SQL> select * from lob1 where rownum=1;  
  7.   
  8.    LINE TEXT  
  9. ---------- ---------------------------------------------------------------------   
  10.    1 package STANDARD AUTHID CURRENT_USER is              -- care  
1.2 在实例2上操作创建DBLINK:
  1. CREATE PUBLIC DATABASE LINK lob_link CONNECT TO dave IDENTIFIED BY dave  
  2. USING "(DESCRIPTION =  
  3.           (ADDRESS_LIST =  
  4.            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.222)(PORT = 1521))  
  5.         )  
  6.            (CONNECT_DATA =  
  7.          (SERVICE_NAME = dave)  
  8.      )  
  9.   )";  
  10.   
  11. SQL> select * from v$version;  
  12.   
  13. BANNER  
  14. ----------------------------------------------------------------   
  15. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod  
  16. PL/SQL Release 10.2.0.1.0 - Production  
  17. CORE    10.2.0.1.0      Production  
  18. TNS for Linux: Version 10.2.0.1.0 - Production  
  19. NLSRTL Version 10.2.0.1.0 - Production  
  20.   
  21. SQL> select count(*) from lob1@lob_link;  
  22.   COUNT(*)  
  23. ----------   
  24.      58228  
这边查询总记录数正常。但是当我们查询具体LOB字段里的内容的时候,就会报错,如下:
  1. SQL> select * from lob1@lob_link where rownum=1;  
  2. ERROR:  
  3. ORA-22992: cannot use LOB locators selected from remote tables  
  4.   
  5. no rows selected  
  6.   
  7. [oracle@localhost ~]$ oerr ora 22992  
  8. 22992, 00000, "cannot use LOB locators selected from remote tables"  
  9. // *Cause:  A remote LOB column cannot be referenced.  
  10. // *Action:  Remove references to LOBs in remote tables.  
  • 1
  • 2
  • 3
  • 4
  • 下一页
Oracle EBS进化史DB2 10新功能:从Oracle迁移更容易相关资讯      Oracle高级培训 
  • delete表的数据后恢复  (08/30/2012 08:59:58)
  • 使用ASH信息,发现高CPUsession  (08/14/2012 07:21:32)
  • 如何阅读Oracle Errorstack Output  (08/14/2012 07:15:47)
  • Oracle Apps Patching:adpatch(  (08/16/2012 15:41:37)
  • 话说V$SQL_MONITOR  (08/14/2012 07:19:54)
  • Oracle Apps DBA工具:ADADMIN使用  (08/14/2012 07:00:09)
本文评论 查看全部评论 (0)
表情: 姓名: 字数