Sql 如何关闭在数据库链接(ORA-02080)中创建的光标?

Sql 如何关闭在数据库链接(ORA-02080)中创建的光标?,sql,oracle,database-connection,database-link,database-cursor,Sql,Oracle,Database Connection,Database Link,Database Cursor,我在Oracle SQL Developer中执行以下一系列步骤(使用F-9逐步执行): create database link mydb connect to my_schema identified by mypwd using 'connection1'; select * from users where id = 1; rollback; ALTER SESSION CLOSE DATABASE LINK mydb; drop database link mydb; 尝试关闭数

我在Oracle SQL Developer中执行以下一系列步骤(使用F-9逐步执行):

create database link mydb connect to my_schema identified by mypwd using 'connection1';

select * from users where id = 1;

rollback;
ALTER SESSION CLOSE DATABASE LINK mydb;
drop database link mydb;
尝试关闭数据库链接时出错:

SQL错误:ORA-02080:数据库链接正在使用中 208000000-“正在使用数据库链接”

*原因:数据库链接上的事务处于活动状态或光标处于打开状态 在alter session close database link命令中给出

*操作:提交或回滚,并关闭所有游标


事务已完成,但当我执行
select*from V$DBLINK时我看到仍然有一个打开的光标,但我不知道如何关闭该光标。

只要SQL Developer的“查询结果”选项卡处于打开状态,即使滚动到结果集的末尾,光标仍保持打开状态。如果关闭该选项卡,光标将被释放,您将能够关闭并删除数据库链接

或者,如果在“首选项”中的“数据库->工作表”下未选中“在新选项卡中显示查询结果”框,则可以运行另一个查询,该查询不将链接作为语句引用,这将重用相同的“结果”选项卡并关闭上一个光标。如果勾选了这个框,那当然没用了

如果你无论如何都要放弃,你其实不需要单独的关闭步骤;如果您只是在不关闭的情况下删除它,则不需要回滚,甚至不需要关闭结果集


如果将所有命令作为脚本(F5)运行,而不是作为单个语句运行,则不会看到错误;但您的数据将与其他内容一起显示在“脚本输出”窗口中,而不是“查询结果”数据网格中。

尝试DBMS\u会话。关闭数据库链接(“mydb”);发生这种情况的数据库版本是什么?对于源数据库和目标数据库,即链接的任一端?我不能立即复制,也看不到如何从一个简单的查询启动事务。您在哪里运行,如何运行?如果我以语句的形式运行远程查询,使结果进入一个网格(并且有超过一页的数据,保持光标打开),并将其他所有内容作为工作表中的脚本,那么我可以在SQL Developer中生成该查询。您的查询应该生成多少行,以及在尝试关闭链接之前提取多少行?您需要在关闭链接之前关闭结果集;这里对事务的引用有点误导。和
execdbms_SESSION.CLOSE_DATABASE_LINK('MYDB')在该场景中获得相同的ORA-02080错误,顺便说一句。@Roland-关闭“查询结果”窗口。