ORACLE 中超过数据库链接的最大游标
Posted
技术标签:
【中文标题】ORACLE 中超过数据库链接的最大游标【英文标题】:MAXIMUM CURSORS EXCEEDING WITH DATABASE LINK IN ORACLE 【发布时间】:2014-04-24 11:40:00 【问题描述】:我有一个如下的存储过程,当我执行这个过程时,每次在远程服务器中增加 1 个游标。如何解决这个问题。
create or replace function transactionaldatarecovery
(i_tablename in varchar2)
return varchar2
as
v_Num Number(3):=0;
v_SQLStmt Varchar2(2000);
ret_status Varchar2(100);
begin
v_sqlstmt := 'insert into '||i_tablename||
' select * from '||i_tablename||'@RECY_DBLINK a '||
' where not exists( select 1 '||
' from '||i_tablename||' b'||
' where B.sno = A.sno' ;
Execute immediate v_SQLstmt;
return 'Success';
end transactionaldatarecovery;
【问题讨论】:
【参考方案1】:你在运行函数后提交吗?它应该释放远程数据库上打开的光标。
【讨论】:
是的,现在我找到了解决方案。每次在远程服务器中打开游标时,Accessind DBlink。当我们使用 ALTER 语句关闭数据库链接时,光标正在关闭 ALTER 是一个 DDL 语句,在执行之前进行提交。您可以尝试只执行 COMMIT 并检查打开的光标是否已烧毁。以上是关于ORACLE 中超过数据库链接的最大游标的主要内容,如果未能解决你的问题,请参考以下文章