問題背景:
情況是這樣的,很多開發同事的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所示:
這會比較穩定一些,當然可能你PLSQL開一天不用,再進去會延時一會,但是短時間里面都不會失靈了。