當前位置:編程學習大全網 - 網站源碼 - oracle閑置超時,怎麽樣重新連接(急)

oracle閑置超時,怎麽樣重新連接(急)

原因:

1、EF 、EFCore 中默認存在鏈接池,每次數據庫操作完成之後,會將連接丟到連接池。連接的釋放過程單獨管控(這裏不做詳細解釋);

2、當Oracle數據庫中設置有連接(會話)有效期時,到期後,Oracle服務端會中斷連接,並將會話標識為:SNIPED狀態;

註:查詢數據中已超時,未釋放的會話:select * from v$session where status = 'SNIPED';

3、當Oracle數據庫中連接超時後,EF連接池中的連接依然存在,若再次進行數據庫操作,則會提示 idle 超時異常;

解決方案:

方案1:調整數據庫設置,將數據庫中的“IDLE_TIME”設置未“UNLIMITED”,具體方式請自行百度;

可通過以下語句查看當前設置:

select username, b.* from dba_users a, dba_profiles b where a.profile = b.profile and username='IOT_SUB_ALL';

方案2:

在項目代碼數據庫連接字符串中添加:min pool size=0;設置,將EF連接池最小連接保持數設置為0(默認為1);

連接字符串樣式:

"User Id=用戶id;Password=密碼;Data Source=IP:端口/服務器名;min pool size=0;"

連接字符串參數詳細說明見:

/database/121/ODPNT/OracleConnectionClass.htm#ODPNT805

  • 上一篇:手遊神雕俠侶乞丐外傷多少能秒俠客
  • 下一篇:C#提取網頁的具體代碼
  • copyright 2024編程學習大全網