欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle之關(guān)于各類連接超時(shí)相關(guān)參數(shù)學(xué)習(xí)

 更新時(shí)間:2023年04月12日 15:07:55   作者:Hehuyi_In  
這篇文章主要介紹了Oracle之關(guān)于各類連接超時(shí)相關(guān)參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

最近遇到些空閑連接超時(shí)相關(guān)的問(wèn)題,查了下主要有以下與超時(shí)相關(guān)參數(shù),整理記錄含義及區(qū)別。

  • EXPIRE_TIME
  • IDLE_TIMEOUT
  • SESSION_TIMEOUT
  • INBOUND_CONNECT_TIMEOUT
  • profile中的idle_time
  • profile中的connect_time

一、 EXPIRE_TIME

1. 使用說(shuō)明

EXPIRE_TIME 用于死連接檢測(cè)。設(shè)定該參數(shù)為非零值,12c前會(huì)定期給空閑連接發(fā)送探測(cè)包檢查客戶端是否已異常斷開(kāi)(12c開(kāi)始則利用操作系統(tǒng)keepalive參數(shù)進(jìn)行檢測(cè))。

一旦發(fā)現(xiàn)異常連接,最多會(huì)重傳操作系統(tǒng)參數(shù)tcp_retries2指定次數(shù)。

如果超過(guò)最大重試次數(shù)仍重傳失敗,將返回錯(cuò)誤并通知oracle pmon進(jìn)程清除對(duì)應(yīng)的server process。

值得注意的是,根據(jù)文檔 Doc ID 395505.1,如果在1個(gè)SQLNET.EXPIRE_TIME之內(nèi)客戶端有數(shù)據(jù)包發(fā)送,在SQLNET.EXPIRE_TIME時(shí)間到來(lái)時(shí),oracle不會(huì)再發(fā)送探測(cè)數(shù)據(jù)包給客戶端,這樣有可能出現(xiàn)最大2*SQLNET.EXPIRE_TIME時(shí)間端內(nèi),沒(méi)有發(fā)送探測(cè)包給客戶端的情況。

比如設(shè)置sqlnet.expire_time=10,最大空閑時(shí)間則可能為2*600=1200秒,如果防火墻空閑超時(shí)為910秒,完全可能出現(xiàn)在探測(cè)包發(fā)送之前,空閑連接就已經(jīng)被斷開(kāi)的情況。

2. 使用限制

新設(shè)置參數(shù)對(duì)舊連接上不生效(It is not allowed on bequeathed connections.)

探測(cè)數(shù)據(jù)包雖然很小,卻也會(huì)產(chǎn)生額外的流量,可能降低網(wǎng)絡(luò)性能

根據(jù)操作系統(tǒng)不同,服務(wù)器可能需要執(zhí)行其他處理,以區(qū)分連接探測(cè)事件和其他事件,這也會(huì)導(dǎo)致網(wǎng)絡(luò)性能下降。

二、 IDLE_TIMEOUT

空閑超時(shí)時(shí)間。指定已建立的連接在不傳輸數(shù)據(jù)的情況下可以保持活動(dòng)狀態(tài)的時(shí)間。

Oracle默認(rèn)情況下不會(huì)關(guān)閉非活躍連接(IDLE_TIMEOUT=0),但非活躍連接過(guò)長(zhǎng)時(shí)間不退出可能導(dǎo)致連接數(shù)過(guò)高,浪費(fèi)數(shù)據(jù)庫(kù)資源。

將IDLE_TIMEOUT設(shè)置為大于0的值(單位為秒)指定會(huì)話空閑超時(shí)時(shí)間,到達(dá)超時(shí)時(shí)間后會(huì)話會(huì)被數(shù)據(jù)庫(kù)中斷。

通常防火墻會(huì)有kill空閑連接的配置,可以看看是否有必要重復(fù)設(shè)置。如果要設(shè),IDLE_TIMEOUT指定的時(shí)間應(yīng)該小于防火墻指定的空閑時(shí)間。

EXPIRE_TIME 與 IDLE_TIMEOUT的區(qū)別:

  • EXPIRE_TIME檢查的是客戶端由于各種原因已經(jīng)異常中斷的會(huì)話,雖然v$session視圖看到處于inactive狀態(tài),但其實(shí)該連接已經(jīng)僵死,不會(huì)再有數(shù)據(jù)請(qǐng)求。
  • IDLE_TIMEOUT檢查的是處于inactive狀態(tài)超過(guò)指定時(shí)間的會(huì)話,即使客戶端正常連接,到達(dá)超時(shí)時(shí)間后也會(huì)將其中斷。

三、 SESSION_TIMEOUT

指定用戶會(huì)話允許的最長(zhǎng)時(shí)間(以秒為單位)。很明顯這個(gè)參數(shù)要更進(jìn)一步,無(wú)論用戶會(huì)話是不是空閑,到了SESSION_TIMEOUT指定就會(huì)被中斷。

默認(rèn)值為0,表示禁用該功能。

四、 INBOUND_CONNECT_TIMEOUT

表示等待用戶認(rèn)證超時(shí)的時(shí)間。單位是秒,默認(rèn)60秒,如果客戶端在指定的時(shí)間內(nèi)沒(méi)有連接上數(shù)據(jù)庫(kù)(例如用戶認(rèn)證超時(shí)),會(huì)在listener.log中會(huì)出現(xiàn) TNS-12535: TNS:operation timed out,在alert日志中記錄 WARNING: inbound connection timed out (ORA-3136) 和 TNS-12535。

另外在listener.ora中也有一個(gè)INBOUND_CONNECT_TIMEOUT參數(shù),名為:inbound_connect_timeout_監(jiān)聽(tīng)器名。

如果建立監(jiān)聽(tīng)后在設(shè)置的時(shí)間內(nèi)沒(méi)有反應(yīng)將會(huì)斷開(kāi)連接,單位是秒,默認(rèn)60秒。

如果連接請(qǐng)求超時(shí),listener.log中會(huì)出現(xiàn) TNS-12525: TNS:listener has not received client's request in time allowed。

關(guān)于兩者之間的關(guān)系,官方文檔建議INBOUND_CONNECT_TIMEOUT_listener_name的值低于SQLNET.INBOUND_CONNECT_TIMEOUT。

Set both parameters to an initial low value.

Set the value of the INBOUND_CONNECT_TIMEOUT_listener_name parameter to a lower value than the SQLNET.INBOUND_CONNECT_TIMEOUT parameter.

For example, you can set INBOUND_CONNECT_TIMEOUT_listener_name to 2 seconds and INBOUND_CONNECT_TIMEOUT parameter to 3 seconds. If clients are unable to complete connections within the specified time due to system or network delays that are normal for the particular environment, then increment the time as needed.

前面幾個(gè)參數(shù)都是系統(tǒng)級(jí)的,下面來(lái)看可以在用戶級(jí)指定的超時(shí)參數(shù)。

五、 profile中的idle_time

用戶級(jí)的空閑超時(shí)時(shí)間。單位是分鐘,默認(rèn)是UNLIMITED,連接始終不會(huì)被斷開(kāi),這就占用了連接數(shù)資源。

配置步驟如下,注意設(shè)置后對(duì)已經(jīng)連上的會(huì)話不生效,對(duì)新連上的會(huì)話才生效。

-- 查找用戶所屬的profile,例如叫APP_USER
select username, b.*
from dba_users a, dba_profiles b
where a.profile = b.profile and username='USERNAME';
?
-- 更改該profile的idle_time
alter profile app_user limit idle_time 30;
?
-- 使修改的資源生效,需要設(shè)置resource_limit設(shè)置為true
alter system set resource_limit=true;

如果用戶空閑超過(guò)指定時(shí)間,會(huì)報(bào)錯(cuò)ORA-02396:exceeded maximum idle time, please connect again

六、 profile中的connect_time

用戶級(jí)的會(huì)話超時(shí)時(shí)間(類似前面SESSION_TIMEOUT),單位是分鐘,默認(rèn)是UNLIMITED。

用戶會(huì)話在到達(dá)設(shè)置的時(shí)候后不能再繼續(xù)操作(無(wú)論期間是不是空閑)。

設(shè)置方法跟前面類似

-- 查找用戶所屬的profile,例如叫APP_USER
select username, b.*
from dba_users a, dba_profiles b
where a.profile = b.profile and username='USERNAME';
?
-- 更改該profile的connect_time
alter profile app_user limit connect_time 30;
?
-- 使修改的資源生效,需要設(shè)置resource_limit設(shè)置為true
alter system set resource_limit=true;

如果是設(shè)置1分鐘,會(huì)在將近2分鐘的時(shí)候提醒你重新登錄,ORA-02399: exceeded maximum connect time, you are being logged off。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論