今 天解决个问题,建了oracle到sqlserver的dblink,在单表查询的时候没问题,但是如果结合oracle本地表和远程的 sqlserver表或者针对sqlserver的表进行数据库分页操作的时候会发现报告ORA-01002的错误,说什么读取违反顺序,从文字上看不出 问题出现在哪里,google一下:http://ora-01002.ora-code.com/
ORA-01002: |
fetch out of sequence |
Cause: |
This error means that a fetch has been attempted from a cursor which is no longer valid. Note that a PL/SQL cursor loop implicitly does fetches, and thus may also cause this error. There are a number of possible causes for this error, including: 1) Fetching from a cursor after the last row has been retrieved and the ORA-1403 error returned. 2) If the cursor has been opened with the FOR UPDATE clause, fetching after a COMMIT has been issued will return the error. 3) Rebinding any placeholders in the SQL statement, then issuing a fetch before reexecuting the statement. |
Action: |
1) Do not issue a fetch statement after the last row has been retrieved - there are no more rows to fetch. 2) Do not issue a COMMIT inside a fetch loop for a cursor that has been opened FOR UPDATE. 3) Reexecute the statement after rebinding, then attempt to fetch again. |
感 觉我们的问题应该是action1,也就是游标在失效的状态下被操作了,但是我的sql语句只select了一次,咋回事?应该是dblink在搞怪,实 际上我们写了一个select,但是在执行的时候oralce会先去select一下sqlserver,拿到数据后我们在select刚才拿到的数据 集,而当我们再去取这个数据集的游标时这个游标时这个游标已经失效,因为oracle认为这是两个操作,为啥诶,因为在我们的程序里对于select的操 作默认为自动提交事务,所以对于这种多个select有先后顺序的查询应该放到一个事务中也就是让oracle知道我们这么一堆select是有关系的, select完一个不行得都select完了才能歇着。加上code:conn.setAutoCommit(false);......,conn.commit();run it.....ok!
之前用spring+hibernate的方式的时候没有问题,但是在老系统上用就不行,原来所有service层的调用都用spring来管理事务了,所以这个问题没有报露出来。
分享到:
- 2007-01-18 15:46
- 浏览 2652
- 评论(0)
- 论坛回复 / 浏览 (0 / 4476)
- 查看更多
相关推荐
### Oracle DBLink创建过程及快照同步方法 #### 一、Oracle DBLink概念与创建步骤 DBLink(Database Link)是Oracle提供的一种机制,用于在不同的Oracle数据库实例之间建立连接,实现跨数据库查询、更新等功能。它...
### Oracle DBLink建立连接 #### 知识点一:DBLink基本概念与作用 - **DBLink**(Database Link)是Oracle提供的一种机制,用于在不同的Oracle数据库实例之间建立连接,实现跨数据库查询、更新等操作。 - **应用...
Oracle dblink 是 Oracle 数据库中用于连接不同数据库实例的工具,允许用户在多个数据库之间进行数据查询、更新和传输。它的主要应用场景是在分布式环境中,当需要从一个数据库访问另一个远程数据库的数据时。以下是...
Oracle DBLink(数据库链接)是Oracle数据库提供的一种特性,它允许用户在不同的Oracle数据库实例间进行数据查询和操作,仿佛这些数据库都在同一个实例内。DBLink使得分布式数据库系统的交互变得简单,无需复杂的...
Oracle DBLink是Oracle数据库提供的一种特性,用于在不同的Oracle数据库实例之间建立连接,实现数据的交互和共享。DBLink(Database Link)允许用户在本地数据库上执行远程数据库的SQL语句,就像是操作本地数据一样...
Oracle之dblink的配置 Oracle之dblink的配置 Oracle之dblink的配置 Oracle之dblink的配置
使用 DB Link 可以查询、删除和插入远程数据库中的数据,方法与操作本地数据库相同,只需要在表名后添加 @dblink 服务器。 DB Link 的优点 使用 DB Link 可以实现不同的数据库服务器之间的数据共享和交换,提高了...
MySQL联邦(Federated)引擎是一种特殊的存储引擎,它的设计目标是允许MySQL数据库跨越不同的服务器进行数据集成,类似于Oracle数据库中的DBLINK功能。这个引擎使得用户可以在本地数据库中查询和操作远程MySQL服务器...
Oracle Dblink and synonym(同义词) 授权 创建 以及使用
Oracle dblink是Oracle数据库提供的一种在分布式环境中连接不同数据库的机制。它允许用户在一个数据库上执行操作,同时访问和操作远程数据库中的数据,仿佛这些数据是本地存在的。Database link是单向的,意味着从...
### Oracle DBLink 详解 #### 一、Database Link 概述 Database Link 是 Oracle 数据库中用于连接两个数据库的关键对象,它可以实现从一个数据库到另一个数据库的数据查询与操作。通过 Database Link,用户能够...
本程序不同步blob和clob字段,玩oracle的人都懂,用sql同步此类数据,速度上不去,此类数据应该要用导出导入的方式提升速度。 具体请参阅程序,可根据自已需要进行修改。 参数说明: CREATE OR REPLACE PROCEDURE ...
Linux下ORACLE 使用dblink连接mysql_lijilinjy的专栏-CSDN博客.mhtml
使用 DBlink 连接 Oracle 和 MySQL 数据库 Oracle 通过 DBlink 连接 MySQL 搭建过程是一个复杂的过程,需要安装和配置多个组件,包括 unixODBC、mysql-connector-odbc 和 Oracle 环境变量。本文将详细说明这个过程...
### Oracle存储过程、函数与DBLink详解 #### 一、Oracle存储过程简介 在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程...
Oracle数据库是一种广泛应用于企业级数据存储和管理的系统,它提供了强大的数据迁移工具,其中之一就是DB Link(数据库链接)。在本教程中,我们将探讨如何利用DB Link来迁移Oracle数据库中的用户下所有表的数据,以...
Oracle数据库提供了异构服务的功能,允许从Oracle数据库实例访问其他数据库系统的数据,例如MySQL...DBLink的使用大大扩展了Oracle数据库的数据处理能力,使用户能够在单个数据库操作环境中访问和操作多个异构数据源。
### Oracle 10g 或 11g 通过 DBLink 访问 SQL Server 数据库 #### 概述 本文档详细介绍了如何在Oracle 10g或11g环境中使用DBLink来访问SQL Server数据库的方法。这种方法对于那些习惯于使用Oracle进行数据库操作的...
### Oracle DBLink 使用详解 #### 一、Oracle DBLink 概述 在Oracle数据库系统中,DBLink(Database Link)是一种非常重要的特性,它允许一个数据库实例通过网络连接到另一个远程数据库实例,从而实现跨数据库的...