加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 数据库 > Oracle > 正文

Oracle通过DBLink操作数据表,报错“ORA-22992:无法使用从远程表选择的lob定位器”

发布时间:2020-07-23 18:13:23 所属栏目:Oracle 来源:互联网
导读:介绍 错误异常:[Error] Execution (1: 1): ORA-22992: 无法使用从远程表选择的 LOB 定位器 原因:使用dblink从远程数据库向本地数据库 INSERT数据时,因远程表中含有BLOB或者CLOB字段,在SELECT 和 INSERT INTO操作时,报”ORA-22992: 无法使用从远程表选择的 L

介绍

错误异常:[Error] Execution (1: 1): ORA-22992: 无法使用从远程表选择的 LOB 定位器
原因:使用dblink从远程数据库向本地数据库 INSERT数据时,因远程表中含有BLOB或者CLOB字段,在SELECT 和 INSERT INTO操作时,报”ORA-22992: 无法使用从远程表选择的 LOB 定位器”错误,通过创建临时表并从临时成功把数据插入到目的表中。

所以一定要注意,所有表中存在blob或clob类型字段,
1.不能用 select * from 连接的表
2.不能将blob或clob类型的字段出现在脚本中

解决方案

①创建临时表:这里临时表的表结构与目标表T_TEST相同,这种临时表不占用表空间,而且不同的SESSION之间互相看不到对方的数据.

Create global temporary table table_temp on commit delete rows as select * from T_TEST where 1=2;

需要注意的问题:
on commit delete rows会在commit提交的时候清空临时表数据;ON COMMIT PRESERVE ROWS则在会话结束的时候清空数据。
②将远程表数据导入临时表

insert into table_temp select * from T_TEST@remote 

③将临时表数据导入目标表

insert into T_TEST select * from table_temp 

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读