問題

問題

我有一個場景,其中長時間空閒的會話TOAD軟體由於在中間全狀態防火牆上超時,客戶端與 Oracle 伺服器的通訊似乎中斷。

這些會話可能會空閒幾個小時!
在防火牆上全域增加逾時是不可接受的,
當然,它也不支援特定流的更長逾時。

我已經修復了 PuTTY 空閒連線的這個問題;
它允許可配置的保持活動狀態

但是,我尚未在 TOAD 軟體中發現任何此類支援。

查閱了一些系統範圍的配置,我在 Microsoft TechNet 上找到了這個詳細信息配置系統範圍的維持活動這涉及與保持活動時間以及相關的註冊表變數。

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime

這似乎是用於使用系統範圍保持活動的 Linux 系統範圍配置
但是,這需要程式使用setsockopt()並請求保持活動狀態(對嗎?)。

請記住,即使在核心中配置了 keepalive 支持,也不是 Linux 中的預設行為。程式必須使用setsockopt 介面請求對其套接字進行保活控制。實作 keepalive 的程式相對較少...


問題

  1. 我可以用這個嗎Windows 用戶端電腦或伺服器上的 KeepAliveTime 技術
    (有人試過嗎?)
    • 是否有其他方法可以使這些 TOAD 連線保持活動狀態(從通訊的任一端)?

答案1

設定值SQLNET.EXPIRE_TIME在 sqlnet.ora 中。

這是什麼Oracle 手冊關於這個問題說:

目的

使用參數SQLNET.EXPIRE_TIME指定傳送探測以驗證用戶端/伺服器連線是否處於活動狀態的時間間隔(以分鐘為單位)。設定大於 0 的值可確保連線不會因用戶端異常終止而無限期地保持開啟。如果探測器發現已終止的連接或不再使用的連接,它將返回錯誤,導致伺服器進程退出。此參數主要用於資料庫伺服器,該伺服器通常可以同時處理多個連線。

使用此終止連線檢測功能的限制是:

  • 遺贈連線上不允許這樣做。
  • 雖然探測資料包非常小,但它會產生額外的流量,這可能會降低網路效能。
  • 根據所使用的作業系統,伺服器可能需要執行額外的處理來區分連接探測事件和發生的其他事件。這也可能導致網路效能下降。

預設: 0

最小值: 0

建議值: 10

例子

SQLNET.EXPIRE_TIME=10

答案2

您有 SSH 存取權限嗎?您可以設定 SSH 隧道並透過該隧道傳送 SQL 通訊。

TOAD:伺服器(或tnsnames)變成localhost,監聽埠是一些隨機端口,例如12346
PuTTY:連接埠轉送。來源連接埠:12346,目標:$REMOTE_IP:1521。將其保留為本機連接埠。

確保透過「連線」部分在 PuTTY 中啟用 TCP keepalive。

答案3

我在戴爾網站上找到了這個,並確認它有效(在 Toad 11.5.0.56 下): Toad 是否有保持活動/間隔時間/ping 設置,以便網路不會逾時? (49507)

總結 - 透過點擊 DBMS 輸出選單列左側的紅色按鈕圖示(它將變為綠色),在 DBMS 輸出視窗中開啟輸出。您可以在「資料網格」標籤旁邊的「DBMS 輸出」標籤中或透過「檢視」->「DBMS 輸出」來存取它。

這也會自動打開輪詢。根據我的經驗,您需要 DBMS 輸出啟用輪詢以維持連線。

相關內容