如何关闭在数据库 link(ORA-02080) 中创建的游标?

How do I close the cursor created in a database link(ORA-02080)?

我在 Oracle SQL 开发人员中执行以下步骤序列(使用 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;

我尝试关闭数据库时出现错误 link:

SQL Error: ORA-02080: database link is in use 02080. 00000 - "database link is in use"

*Cause: a transaction is active or a cursor is open on the database link given in the alter session close database link command.

*Action: commit or rollback, and close all cursors

事务已完成,但是当我这样做时 select * from V$DBLINK; 我看到还有一个打开的游标,但我不知道如何关闭它。

只要 SQL 开发人员 "Query Results" 选项卡打开,游标就会保持打开状态,即使您滚动到结果集的末尾也是如此。如果关闭该选项卡,光标将被释放,您将能够关闭并删除数据库 link.

或者,如果您在首选项中选中了 "show query results in new tabs" 框 un,在数据库-> 工作表下,您可以 运行 一个不同的查询' 将 link 引用为语句,这将重用相同的结果选项卡并关闭前一个游标。当然,如果选中该框,那将无济于事。

如果您无论如何要删除它,您实际上并不需要单独的关闭步骤;如果你只是放弃它而不关闭你不需要回滚甚至关闭结果集。

如果您运行将所有命令作为脚本 (F5),而不是作为单独的语句,您将不会看到错误;但是您的数据将与其他所有内容一起显示在 "Script Output" window 中,而不是在 "Query Results" 数据网格中。