sql – 在Oracle分布式数据库中处理LOB的最佳方式

如果创建Oracle数据库链接,则无法直接访问目标表中的LOB列.

例如,您创建一个dblink:

create database link TEST_LINK 
  connect to TARGETUSER IDENTIFIED BY password using 'DATABASESID';

之后,你可以做如下事情:

select column_a,column_b 
from data_user.sample_table@TEST_LINK

除非列是LOB,否则您会收到错误

ORA-22992: cannot use LOB locators selected from remote tables

这是a documented restriction.

同一页面建议您将值提取到本地表中,但这是一种凌乱的方式:

CREATE TABLE tmp_hello 
AS SELECT column_a 
from data_user.sample_table@TEST_LINK

任何其他想法?

解决方法

是的,它是凌乱的,我不能想到一种方法来避免它. 您可以通过将临时表创建放在存储过程中(并使用“立即执行”创建它们表)来隐藏客户端的一些混乱,你需要注意的一件事情是留在临时表上(应该有一些事情在一段时间内无法清理) – 你可以安排一个oracle作业来定期运行和删除任何剩下的表.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...