【问题标题】:MAXIMUM CURSORS EXCEEDING WITH DATABASE LINK IN ORACLEORACLE 中超过数据库链接的最大游标
【发布时间】: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;

【问题讨论】:

    标签: sql oracle plsql oracle10g plsqldeveloper


    【解决方案1】:

    你在运行函数后提交吗?它应该释放远程数据库上打开的光标。

    【讨论】:

    • 是的,现在我找到了解决方案。每次在远程服务器中打开游标时,Accessind DBlink。当我们使用 ALTER 语句关闭数据库链接时,光标正在关闭
    • ALTER 是一个 DDL 语句,在执行之前进行提交。您可以尝试只执行 COMMIT 并检查打开的光标是否已烧毁。
    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2015-08-09
    • 2015-06-23
    • 1970-01-01
    • 2012-08-24
    相关资源
    最近更新 更多