1. 程式人生 > >plsql、dblink連線Oracle資料庫長時間空閒後自動斷開及遠端終端連線linux空閒超時後自動斷開問題

plsql、dblink連線Oracle資料庫長時間空閒後自動斷開及遠端終端連線linux空閒超時後自動斷開問題

一、plsql及dblink連線Oracle資料庫長時間空閒後自動斷開 現象: 1、plsql連線資料庫長時間空閒後自動斷開 2、使用dblink訪問資料,長時間空閒後,連線時報錯失去連線等,需要重新連線才能正常 檢查及解決辦法: 1、 profiles中idle_time設定(預設unlimited) 2、檢查防毒軟體或者OS防火牆設定;可嘗試退出第三方防毒軟體或者關閉OS防火牆。 3、網路不穩定因素(網路問題,驅動或者協議有問題等) 4、硬體防火牆設定(防火牆上可以設定最大允許的長連線時長,可以調整放開此限制) 5、在4的情況下,如因特殊原因不能放開的話(網管解釋可能將防火牆撐爆或者網路不安全等):可以設定oracle定時job,每隔多長時間(小於防火牆設定的時間)發包通訊(select 1+1 from dual)或者設定DCD:SQLNET.EXPIRE_TIME=10
(1)開啟DCD(設定SQLNET.EXPIRE_TIME值小於防火牆設定允許的空閒連線時間) 開啟DCD,只需要在服務端的sqlnet.ora檔案中新增SQLNET.EXPIRE_TIME引數,單位為分鐘:SQLNET.EXPIRE_TIME=10  如果時間達到這個值,server端就是發出一個”probe” packet 給客戶端,如要客戶斷是正常的,這個packet就被忽略,timer重新計時;如果客戶端異常中斷,則server端就會收到一個訊息,用以釋放連線 注意:在11gR2的RAC中,需要在$ORACLE_HOME/network/admin的sqlnet.ora中設定,而不是GRID使用者的HOME下設定:
GRID: Dead Connection Connection or DCD and RAC 11.2 (文件 ID 1136945.1) --11gR2 rac中, dcd 要在 db_home中設定,而不是在GRID_HOME中設定 參考Oracle官方資料解釋如下: With DCD is enabled, the Server-side process sends a small 10-byte packet to the client process after the duration of the time interval specified in minutes by the SQLNET.EXPIRE_TIME parameter.
How to Check if Dead Connection Detection (DCD) is Enabled in 9i ,10g and 11g (文件 ID 395505.1) How Dead Connection Detection is Triggered Let us take an example. Suppose we set the sqlnet.expire_time = 2 and the timer got armed at 10.00 am,  then the DCD packets will be sent only if there is no network(I/O) activity for that connection in the next 2 min. i.e. till 10.02 am.  If there is an i/o in between 10 to 10.02 then the connection is not dead one as the activity took place on that particular connection, which means the connection is alive and hence the DCD packets will not be sent for this period of time.  So, at any point of time, the DCD packets will only be sent if there is no activity for the full span of specified time interval.  As the first connection operation itself considered a successul I/O, the first DCD probe packet would go only after 2 * expire_time and successive one's would be sent every expiry_time provided no activity in that next span too. (2)在有使用dblink訪問的資料庫中: 多數因晚間無業務時,使用dblink訪問資料,長時間空閒後,連線時報錯失去連線等,需要重新連線才能正常;為防止連線超時斷開,可以通過設定job定時執行的方式解決,job內容可以簡單設定為如下:select 1+1 from [email protected] (設定job的間隔執行時間小於防火牆設定允許的空閒連線時間) 二、遠端終端連線linux空閒超時後自動斷開問題 現象: 在使用SecureCRT或者其他SSH工具通過telnet或SSH方式訪問linux時,空閒會話一段時間後連線會自動斷開或者提示超時/重連。 原因分析: 1、伺服器存在防火牆,會關閉超時空閒連線,或設定了關閉超時空閒連線。 2、客服端存在防火牆,會關閉超時空閒連線。 3、客服端和伺服器之間存在路由器,路由器也可能帶有防火牆,會關閉超時空閒連線。(一般情況下此種可能性較大) 解決辦法: 1、伺服器端解決辦法: 使用root使用者修改/etc/ssh/sshd_config配置檔案 ClientAliveInterval 300(預設為0,這裡如果選項前面有“#”,表示被註釋掉需要開啟,同時TCPKeepAlive 也需要設定為yes)這個引數300的是意思是每5分鐘,伺服器向客戶端發一個訊息,用於保持連線,當然數值要比防火牆超時時間的最小值小,否則還沒等傳送空閒包,連線就被斷開了。 修改後使用service sshd reload 命令執行生效,這個修改適用於所有終端連線,但不支援telnet方式連線,SSH方式可以保持連線。 2、客戶端解決辦法: 原理同上,讓客戶端每隔多長時間向伺服器發一個訊息,用於保持連線,來實現客戶端與伺服器之間的連線“不空閒”;設定如下: 如下設定的時間也需要比防火牆超時時間的最小值小。 secureCRT在選項 終端 反空閒 中設定每隔多少秒傳送一個字串,或者是NO-OP協議包。(依據SecureCRT版本不同選擇位置可能有所不同) putty:putty -> Connection -> Seconds between keepalives ( 0 to turn off ), 預設為0, 改為300。
3、修改硬體防火牆策略,解除空閒斷開限制(但考慮到網路安全,一般不建議這麼做) 三、說明以上通過簡單網路發包的方式解決超時或者空閒時間過長自動斷開的問題,對網路影響極小,建議使用。

相關推薦

plsqldblink連線Oracle資料庫時間空閒自動斷開遠端終端連線linux空閒超時自動斷開問題

一、plsql及dblink連線Oracle資料庫長時間空閒後自動斷開 現象: 1、plsql連線資料庫長時間空閒後自動斷開 2、使用dblink訪問資料,長時間空閒後,連線時報錯失去連線等,需要重新

oracle資料庫的備份與還原(本地遠端操作)

 執行環境:  可以在SQLPLUS.EXE或者DOS(命令列)中執行, DOS中可以執行時由於 在oracle 8i 中  安裝目錄\ora81\BIN被設定為全域性路徑, 該目錄下有EXP.EXE與IMP.EXE檔案被用來執行匯入匯出。 oracle用java編寫,我

PLSql連線Oracle資料庫的錯誤提示

今天我安裝了Oracle資料庫,使用PLSql連線時 提示"no listener" 與      Ora-12514:tns:偵聽器目前不知道連線描述符中請求的服務 ;      還有在本地計算機無法啟動OracleOraHome

plsql連線oracle資料庫

1 plsql直接填寫連線使用者名稱、密碼、資料庫url直接連線資料,話不多少,上圖 重點說下Database這一欄:拼接格式為:資料庫地址ip:資料庫埠號/資料庫服務名 2 sqlplus連線,cmd命令開啟windows視窗,輸入,如圖 連線命令格式為:

Oracle 資料庫 根據時間欄位求出該時間所在的月

在資料庫中,沒有維護類似萬年曆的表的時候,我們表中只有存著yyyy-mm-dd的日期資料,但是我們需要得出該日期所在的年月季周等資訊,此時便可用到以下SQL:select to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyiw')

使用sqlplus和PLSql developer遠端連線oracle資料庫

 下面的圖片展示了安裝oracle資料庫伺服器端軟體和客戶端軟體的兩個流程:       通過上面的流程,我們清楚伺服器端和客戶端分別有一個需要配置的檔案,伺服器端的是監聽器配置檔案,客戶端是網路服務名稱配置檔案。分別簡述如下:       伺服器端的監聽器檔案儲

C# 連線 Oracle 資料庫(三種方式:OracleClientODBCOLEDB)

1、OracleClient //基於.NET 2.0,只有2.0中包含OracleClient using System; using System.Collections; using System.ComponentModel; using System.Data;

禁止PLSQL以及其他客戶端工具連線ORACLE資料庫

這兩天一直在弄客戶端工具如PLSQL等登入資料庫的許可權控制,滿足了這樣不能滿足那樣,搞得頭暈。本來在系統防火牆層面應該也可以實現,但是還是要求在程式碼上來操作,開始用同事寫的一個指令碼來測試,雖然可以限制,但是不滿足要求。後來改了改,折騰了近一天,終於基本可以滿足要求。

PLSQL developer+instantclient_11_2實現遠端連線Oracle資料庫

1、 下載PLSQL developer、instantclient_11_2, 下載地址:https://pan.baidu.com/s/1_MjmIT4nUzsQ7Hi8MCrs1A, 備註:此安裝包包含plsql(64位)和instantclient

C#程式碼連線Oracle資料庫一段時間以後[connection lost contact]的問題

最近在使用C#程式碼連線Oracle資料庫,分為兩部分,WCF的客戶端與服務端。程式啟動與執行都沒有問題,部署到伺服器上後,執行也沒有問題。但是第二天再訪問的時候,就會丟擲下邊所示的異常。這是怎麼回事?Oracle.DataAccess.Client.OracleExcept

ORACLE- PLSQL Developer 遠端連線oracle資料庫

1、先到Oracle網站下載Instant Client : 根據你的作業系統選擇不同的Instant Client版本 下載會是一個壓縮檔案,解壓之後的資料夾叫:D:\Program Files\PLSQL Developer\instantclient_11_2

plsql 連線Oracle資料庫時提示no listener

如果我們的oracle連線串寫的不是localhost,而是計算機本地的ip的話,那麼ip地址發生變化,就會發生plsql連線不上資料庫的情況。 這時候需要做的是: 1. 如下關閉oracle lis

菜鳥:只安裝和配置instantclient,用plsql developer,navicat for oracle,sqlplus連線oracle資料庫

環境配置: 1.到oracle官網下載instantclient basic包,解壓縮到E:\oracle\instantclient_11_2; 2.設定環境變數 NLS_lANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(注意中間有空格,這個如

不安裝oracle客戶端使用plsql連線oracle資料庫的方法整理

 連線Oracle往往需要安裝上百兆的ORACLE客戶端,顯得十分麻煩。如下介紹如何通過使用精簡客戶端,且不需要安裝的客戶端,配合PLSQL連線oracle資料庫。 將下載後的檔案instantclient-basic-win32-11.2.0.1.0解壓,把解壓後的資

Oracle資料庫新增時間戳欄位的觸發器

在最近通過webservices介面同步增量資料時。發現在同步之前發現沒有獲取到增加的資料集。檢查程式碼發現發現做了update操作時,時間戳欄位沒有更新。或者insert操作時,沒有預設給時間戳欄位一個系統當前的值。所以在資料庫層面做了一個觸發器。如下SQL語句 CREATE OR REP

delphi 7連線oracle資料庫問題

ADOQuery1: Parameter 'a_id' not found問題 遇到此報錯,首先要查詢是否欄位拼寫問題或者繫結變數時確實“:”,排除這個之後再嘗試以下方法。 1.Delphi 7連線oracle資料庫時沒有Oracle Provider for O

記一次jdbc連線oracle資料庫佔用CPU過高的問題排查

    背景:     公司有一個通訊系統,主要是通訊資料到客戶端程式所指定的資料庫,目前支援sqlserver、mysql和oracle三種類型的資料庫,此篇主要記錄一次oracle資料庫佔用CPU飆高的問題。   &nbs

navicat連線oracle資料庫報ORA-28547 connection to server failed p

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

JAVA JDBC連線Oracle資料庫

package com.deng.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; impor

SqlDbx連線Oracle資料庫

第一步:裝oracle客戶端,裝32位的,預設即可。 第二步:D:\app\Administrator\product\11.2.0\client_1\network\admin\ 目錄下,配置tnsnames.oRA伺服器連線。 HUAIBEI = (DESCRIPTION = (ADDRESS =