加载中…
个人资料
四海名汀
四海名汀
  • 博客等级:
  • 博客积分:0
  • 博客访问:13,091
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ORA-22992 无法使用从远程数据表选择的LOB定位符

(2016-04-19 09:52:39)
标签:

ora-22992错误处理

ora-22992

ora-22992错误详解

分类: Oracle数据库
       在最近的项目处理中,需要通过数据库链接(Database link)来访问其他远程数据库,在数据库链接创建后,如果直接通过select * from table 语句查询远程库的数据,则会报ORA-22992: cannot use LOB locators selected from remote tables的错误;如果指定具体的列名用 select col1,col2,col3 from table 来查询的话,则数据正常。通过查询网络资料,了解相关处理方法后,将解决方法总结如下:

一、错误信息
ora-22992 无法使用从远程数据表选择的LOB定位符。
ORA-22992 <wbr>无法使用从远程数据表选择的LOB定位符

二、原因分析
由于所查询的远程表 table 中包含大字段(BLOB)类型的字段,导致该错误发生。

三、解决方法
1、指定具体的字段名称
select col1,col2,col3 from tmp.table@dblink;

2、创建本地临时表,将数据插入到本地库表中,直接操作本地库表即可
drop table table;
create table table
as 
select * from tmp.table@dblink;

3、在本地创建一张和dblink远程端相同的全局临时表,然后在查询临时表
--创建临时表:
create global temporary table tem_table(
col1 varchar2(20),
text clob
)on commit delete rows;  
insert into tem_table select * from tmp.table@dblink;    

       把数据写到临时表了,不过提交之后数据就被删除了(临时表的特性),其实这第2,第3种方法都差不多,只不过一个是用的临时表,一个是用的是永久性的表。



本文参考资料:http://www.2cto.com/database/201207/140418.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有