2014-04-24 4 views
0

다음 절차에 따라 저장 프로 시저가 생깁니다. 원격 서버에서 커서가 증가 할 때마다이 프로 시저를 실행합니다. 이것을 해결하는 방법.오라클의 데이터베이스 링크를 초과하는 최대 커서

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; 

답변

0

함수를 실행 한 후에 커밋합니까? 원격 DB에 열린 커서를 해제해야합니다.

+0

예, 이제 해결책을 얻었습니다. 원격 서버에서 커서가 열릴 때마다 Accessind DBlink. ALTER 문으로 데이터베이스 링크를 닫으면 커서가 닫힙니다. – user3129868

+0

ALTER는 DDL 문이며 실행되기 전에 커밋됩니다. COMMIT을 수행하고 열린 커서가 튀었는지 확인하십시오. – vav