PLSQL 經常自動斷開失去連線的解決過程
問題背景:
情況是這樣的,很多開發同事的plsql上班時間開著8個小時,有時候他們出去抽菸後或者中午吃完飯,回來在plsql上面執行就報錯無響應,然後卡住了半天動彈不了,非得重新登入plsql才生效,我猜猜是因為連線失效的緣故,經常碰到這種情況,還沒有影響工作效率和工作心情的。
1,去檢視以下CONNECT_TIME的連線時間
SQL> select * from dba_profiles t wheret.resource_name='CONNECT_TIME';
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
-------------------------------------------------------------- -----------------------------------------------------
DEFAULT CONNECT_TIME KERNEL UNLIMITED
MONITORING_PROFILE CONNECT_TIME KERNEL DEFAULT
TMPOPT CONNECT_TIME KERNEL DEFAULT
MYPROFILE CONNECT_TIME KERNEL DEFAULT
SQL>
看到有4個,那如何找到powerdesk使用者所屬於的那個profile呢?去檢視當前使用者的CONNECT_TIME
SQL> select * from user_resource_limits;
RESOURCE_NAME LIMIT
------------------------------------------------------------------------
COMPOSITE_LIMIT UNLIMITED
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
IDLE_TIME UNLIMITED
CONNECT_TIME UNLIMITED
PRIVATE_SGA UNLIMITED
9 rows selected
SQL>
看到CONNECT_TIME是UNLIMITED,沒有限制,那麼為什麼plsql連線會出現未響應的現象呢?
2,cmd裡面去用sqlplus連線驗證
sqlplus連線上,過去30分鐘不操作,再次操作連線db,正常使用,看來這和oracledb無關了,應該要去看看plsql的設定了
3,去plsql裡面設定
進入plsql的Tools,再進入Preferences,然後選擇左邊的Connection選型,選擇Check connection,如下圖1.png所示:
這會比較穩定一些,當然可能你plsq開一天不用,再進去會延時一會,但是短時間裡面都不會失靈了。
PS:後續問題,plsql不斷開連線,但是你關閉以前開啟的執行檔案或者sql視窗還是會卡住,報未響應的情況,這種只要強行關閉plsql重新開啟登入了。