做系统集成时,通过Database Link共享数据是不错的选择。不过真正使用DBLink时却碰到一个不小的问题:从远程数据库上查询Blob字段时总返回ORA-22992错误,如下:
select blobcolumn from remoteTable@dl_remote;
ORA-22992: 无法使用从远程表选择的 LOB 定位器
查找了一下解决方法,有人提出了采用物化视图可以解决这个问题。物化视图唯一的缺陷在于同步机制的问题,如果同步时间设置过短,则占用大量的系统资源,给服务器带来极大的压力;如果设置时间过长,前台用户不可接受。
后来还是AskTom给出了极好的解决方案:使用全局临时表。
SQL> create global temporary table foo
2 (
3 X BLOB
4 )
5 on commit delete rows;
Table created
SQL> insert into foo select blobcolumn from remoteTable@dl_remote where rownum = 1;
1 row inserted
SQL>
插入本地临时表之后,在本地的操作就没有任何问题了。
至于为什么临时表可以直接插入,而永久表为什么不能插入,本人未做具体研究,Tom也没有说明。
分享到:
相关推荐
接下来,使用触发器自动将数据从本地表复制到临时表,然后再通过DBLink将数据同步到远程数据库: ```sql CREATE OR REPLACE TRIGGER test_trigger AFTER INSERT ON test FOR EACH ROW BEGIN IF INSERTING THEN ...
dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink dblink
执行存储过程,通过指定目标数据库登录信息,动态生成dblink,打开游标,按批次插入本地指定表中,每批次1万条数据。同步记录和日志信息写在自动生成的sync_log表中。同步完成后自动删除动态生成的存储过程、dblink...
Oracle 中的 DBLink(Database Link)是一种机制,允许不同 Oracle 实例之间共享数据和资源。DBLink 可以让不同的数据库实例之间建立连接,从而实现数据集成和数据共享。本文将详细讲解如何使用 Oracle 中的 DBLink...
通过DBLink,用户可以查询远程数据库中的表,并执行远程数据库上的存储过程。但需要注意的是,DBLink通常是单向的连接。 创建DBLink之前,必须保证以下几点: 1. 本地数据库到远程数据库之间的网络连接正常,可以...
1. **跨库查询**:DBLINK使得从一个数据库中直接查询另一个数据库成为可能,这对于需要整合多个数据库数据的报表系统、数据分析或实时数据同步场景非常有用。 2. **分布式事务处理**:在涉及多数据库的复杂事务...
例如,若想从远程数据库的`testTable`表中选择所有记录,可以执行: ```sql SELECT * FROM testTable@DBL_TEST; ``` 然而,在处理大型对象(LOB,Large Object)类型,尤其是BLOB(Binary Large Object)数据时,...
如果存在这些依赖,应先迁移依赖的表或对象,然后迁移依赖这些对象的表。 5. **数据验证**:迁移完成后,对比源数据库和目标数据库的表数据,确保数据完整性。可以使用COUNT(*)等统计函数进行初步验证。 6. **权限...
在Oracle数据库中,DBLink(Database Link)是一种连接机制,允许用户从一个数据库(本地数据库)无缝地访问另一个数据库(远程数据库)中的数据,而无需实际的物理复制或迁移。DBLink使得数据交互和分布式查询变得...
例如,下面的`TESTB`存储过程将从表`TESTTB`中查询数据,并通过输出参数返回结果: ```sql CREATE OR REPLACE PROCEDURE TESTB( PARA1 IN VARCHAR2, PARA2 OUT VARCHAR2 ) AS BEGIN SELECT I_NAME INTO PARA2 ...
oracle通过ODBC建立dblink访问SqlServer数据库配置
例如,可以通过定义一个指向远程数据库表的同义词,并结合dblink,使得本地用户无需关心数据的实际位置,就能够像操作本地数据一样查询或修改远程数据。这种设计不仅简化了应用开发,也提高了系统的可维护性和安全性...
- 此时,BOM表中的元器件属性会显示带有黄色数据库图标的信息,表示这些信息是从数据库中提取的。 ![图3](#) - 图3:关联元器件示例 ![图4](#) - 图4:输出BOM表设置示例 #### 四、总结 通过以上步骤,我们可以...
### Oracle通过ODBC建立DBLink访问SQLServer数据库 在企业级应用环境中,不同数据库系统间的交互变得越来越频繁。为了实现Oracle数据库与SQLServer数据库之间的数据交换,可以通过多种方式实现连接,其中一种较为...
Oracle 通过 DBlink 连接 MySQL 搭建过程是一个复杂的过程,需要安装和配置多个组件,包括 unixODBC、mysql-connector-odbc 和 Oracle 环境变量。本文将详细说明这个过程,帮助读者了解如何使用 DBlink 连接 Oracle...
上述脚本首先清空目标表`A`,然后使用`@AAA_LINK` DBLink从源数据库`AAA`中读取表`A`的所有数据,并插入到目标数据库`BBB`的表`A`中。最后,通过查询`v$option`视图检查当前数据库是否支持Advanced Replication功能...
本文记录了一次在Oracle 10g 64位环境中,通过DBLink连接到MySQL 5.5的过程,并在面临RAC环境中的问题时找到了解决方案。 首先,Oracle 10g 64位版本的HSODBC(异构服务)可能出现问题,表现为HSODBC文件大小为0,...
通过创建一个DBLink,Oracle数据库可以像访问本地表一样访问远程数据库中的表和数据。 然而,在实际操作过程中,我们可能会遇到一些错误。例如,ORA-28545错误提示Oracle在连接到网关过程中遇到了问题。解决这类...
创建成功后,就可以在Oracle SQL中通过DBLink查询MySQL的数据了。 在实际操作中,务必注意字符集的匹配,避免因字符集不一致导致的数据乱码问题。此外,安全也是重要的考虑因素,确保敏感信息如用户名和密码的安全...
可以使用`@dblink`语法来查询远程数据库中的表: ```sql SELECT * FROM bctl@creditdb; ``` 2. **创建同义词** 为了方便使用,还可以为远程表创建同义词: ```sql CREATE SYNONYM syn_bctl FOR bctl@...