У меня есть хранимая процедура, которая извлекает данные из другой базы данных, используя DB Link.
Время от времени возникают проблемы с подключением. Похоже, что существуют временные сетевые сообщения, и когда они встречаются, они прекращают обработку, но не отключаются.
Есть ли способ перехватить это и отключить зависший сеанс?
Это часть хранимой процедуры, которая извлекает данные:
V_SQLEXP := 'INSERT INTO CRITERIA_STAGING (COL1, COL2, COLn)
SELECT COL1, COL2, COLn FROM BLAH.CRITERIA_T@TCMAN0 WHERE ' || V_SITESTATUS || ' = 1';
EXECUTE IMMEDIATE V_SQLEXP;
COMMIT;
LVIPROCESSED:= 1;
EXCEPTION WHEN OTHERS THEN
LVIPROCESSED:= 0; -- FETCH FAILED
PKGIDCHANDLEERROR.USPHANDLEERROR('USPPICK_ITEM:SAFETCH', LVIERRORCODE);
DBMS_LOCK.SLEEP(LVIFETCHRETRYSLEEP);
GOTO FETCH_FROM_OTHERDB;