Dear All,
您好,我遠端的putty下執行sqlplus執行以下語法,正常來說1個小時候應該要回傳我設定好的錯誤訊息-"ORA-20001: HELLO ERROR",但1個小時到了之後卻沒有回傳任何值,請問有可能是什麼問題呢?(PS.我時間調成10秒、30分都有成功回傳訊息。Oracle DB為19.20)
在此先謝謝各位先進的協助~
DECLARE
IN_TIME INT; --NUM SECONDS
V_NOW DATE;
BEGIN
IN_TIME := 3600;
V_NOW := SYSDATE;
-- 2) LOOP UNTIL THE ORIGINAL TIMESTAMP PLUS THE AMOUNT OF SECONDS <= CURRENT DATE
LOOP
EXIT WHEN V_NOW + (IN_TIME * (1/86400)) <= SYSDATE;
END LOOP;
RAISE_APPLICATION_ERROR( -20001, 'HELLO ERROR' );
END;
/
很大可能是timeout, timeout 有很多地方, DB setting, client connect 時也可以設定, firewall 也可以設定, 要由頭看一遍
另外DBA可以查看ETL的connection是否存在
Some keywords may help
dba_profiles
listener.ora
sqlnet.ora
您好,我有詢問DBA了目前並沒有設定執行過久會砍的功能。另外,排程功能會由ETL工具去啟動,由於ETL去啟動Stored Procedure後遲遲沒有回應,所以ETL工具認為Stored Procedure還在執行中,但Stored Procedure卻已寫log到table回應執行完成,因此才會寫這個小sql來測試,發現也有同樣的問題。很苦腦....
謝謝您的協助~
你要做時間的測試,最好不要用這樣寫法,很消耗資源,這也有可能會
達到資源限制(Oracle有這功能).
Oracle 有 DBMS_SESSION.SLEEP
https://docs.oracle.com/en/database/oracle/oracle-database/18/arpls/DBMS_SESSION.html#GUID-A28F7F54-94B4-4163-9CA5-7645AA3AAFE7
一級屠豬士看到大師的文件都要拜讀。