11g新特性 密碼錯誤驗證延遲特性的相關驗證
2015年最後一天了,加班現場,做一個小小實驗,來完結這一年。
測試目的:
起因 是晚上看到微信群裡有人說有11.2.0.4資料庫出現一個使用者間歇性的出現登陸很慢,需要10幾秒;其它使用者都正常。對此懷疑主機名解析類問題或者是密碼錯誤後的延遲觸發特性,這些都被提問題的說是查過了,於是提議做一個trace 登陸過程,無後續;
於是想到驗證一個使用者錯誤密碼導致延遲很大,是否影響其它使用者的登陸速度。(雖然我覺得不會影響,還是驗證一下,實驗為準哈哈)
本次主要驗證:
關於此特性:
密碼錯誤驗證延遲,可以通過設定EVENT="28401 TRACE NAME CONTEXT FOREVER, LEVEL 1"遮蔽
alter system set events='28401 trace name context forever, level 1'; ---不需要重啟
如多個應用使用同一使用者登陸且密碼出錯,由於密碼延遲驗證的策略,導致所有後續的連線都被HANG住以及row cache lock、library cache lock問題。
本次只討論錯誤延遲的問題。
本次實驗結果彙總:
1.同一使用者,使用錯誤密碼登陸會觸發此問題;但是如果同一會話後續使用了正確的密碼的那一次登陸速度立刻恢復正常。
2.一個使用者錯誤輸入密碼後登陸延遲對其它使用者使用正確密碼時沒有影響。同一會話其它使用者的正確密碼對發生錯誤延遲的使用者沒有影響,會仍然有延遲。
3.在當前視窗執行使用錯誤密碼登陸,延遲越來越大;然後新開視窗進行正確密碼登陸,第一次時使用了3s-->此時第一個視窗也正在登陸,可能是因此原因導致新視窗正確的密碼執行時也較慢。對此進行驗證:第一個視窗錯誤登陸後延遲10秒時,不執行新命令;第二個視窗使用正確密碼登陸,可以正常進行。
一個使用者錯誤輸入密碼後登陸延遲對其它使用者沒有影響。
同一會話其它使用者的正確密碼對已經發生錯誤延遲的使用者沒有影響,會仍然有延遲。
---------------三次測試語句及結果如下:
第一次:
使用錯誤密碼的命令:
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
--當前會話
使用當前使用者正確密碼
time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
驗證結果如下:
同一使用者,使用錯誤密碼登陸會觸發此問題;但是如果同一會話後續使用了正確的密碼的那一次登陸速度立刻恢復正常。
time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
real 0m0.129s
user 0m0.019s
sys 0m0.019s
省略部分輸出
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m6.080s
user 0m0.016s
sys 0m0.009s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
real 0m0.095s
user 0m0.015s
sys 0m0.014s
----------------------------
第二次:
使用錯誤密碼的命令:
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
--------新開會話
使用當前使用者正確密碼
time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
實驗結果:
在當前視窗執行使用錯誤密碼登陸,延遲越來越大;然後新開視窗進行正確密碼登陸,第一次時使用了3s。
此時第一個視窗也正在登陸,可能是因此原因新視窗正確的密碼執行時也較慢。
後面有實驗第一個視窗錯誤登陸後延遲10秒時,不執行新命令;第二個視窗使用正確密碼登陸,可以正常進行。
[oracle@bys1 ~]$ date
Thu Dec 31 23:14:57 CST 2015
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m0.077s
user 0m0.011s
sys 0m0.014s
省略部分輸出
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m6.092s
user 0m0.016s
sys 0m0.013s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m0.132s
user 0m0.015s
sys 0m0.006s
此時在其它視窗:
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
real 0m3.165s
user 0m0.019s
sys 0m0.015s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys 1> /dev/null 2>&1
real 0m0.117s
user 0m0.016s
sys 0m0.006s
[oracle@bys1 ~]$ date
Thu Dec 31 23:16:09 CST 2015
---------------實驗第一個視窗錯誤登陸後延遲10秒時,不執行新命令;第二個視窗使用正確密碼登陸,可以正常進行。
[oracle@bys1 ~]$ date
Thu Dec 31 23:28:57 CST 2015
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m10.115s
user 0m0.020s
sys 0m0.017s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m10.080s
user 0m0.014s
sys 0m0.012s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
^C
real 0m0.809s
user 0m0.014s
sys 0m0.013s
[oracle@bys1 ~]$ date
Thu Dec 31 23:29:32 CST 2015
--------------------
第三次:
使用錯誤密碼的命令:
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s test/test 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s test/test 1> /dev/null 2>&1
--------同樣會話
使用其它使用者正確密碼
time echo "select sysdate from dual;" | sqlplus -s test/test 1> /dev/null 2>&1
time echo "select sysdate from dual;" | sqlplus -s test/test 1> /dev/null 2>&1
實驗結果:
一個使用者錯誤輸入密碼後登陸延遲對其它使用者沒有影響。
同一會話其它使用者的正確密碼對已經發生錯誤延遲的使用者沒有影響,會仍然有延遲。
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m5.123s
user 0m0.024s
sys 0m0.019s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m6.099s
user 0m0.022s
sys 0m0.015s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m7.067s
user 0m0.009s
sys 0m0.014s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s test/test 1> /dev/null 2>&1
real 0m0.085s
user 0m0.016s
sys 0m0.013s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s test/test 1> /dev/null 2>&1
real 0m0.071s
user 0m0.010s
sys 0m0.011s
---------------------------
其它使用者的正確密碼對發生錯誤延遲的使用者沒有影響,會仍然有延遲
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m8.106s
user 0m0.019s
sys 0m0.025s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s test/test 1> /dev/null 2>&1
real 0m0.102s
user 0m0.017s
sys 0m0.018s
[oracle@bys1 ~]$ time echo "select sysdate from dual;" | sqlplus -s bys/bys1 1> /dev/null 2>&1
real 0m9.117s
user 0m0.017s
sys 0m0.021s
相關文章
- ORACLE密碼錯誤驗證延遲Oracle密碼
- 取消 11G延遲密碼驗證密碼
- Oracle11g新增密碼錯誤延遲驗證Oracle密碼
- ORACLE 11g的密碼錯誤延時驗證Oracle密碼
- oracle 11g 密碼延遲驗證問題Oracle密碼
- 延遲密碼驗證特性引起的資料庫HANG死及當機密碼資料庫
- Oracle資料庫密碼延遲驗證Oracle資料庫密碼
- 密碼延遲驗證導致的系統HANG住密碼
- volatile的特性程式碼驗證
- Laravel5.5 新特性~精簡的驗證Laravel
- Oracle11G密碼延遲驗證導致的系統HANG住Oracle密碼
- 5.3. 驗證 Seam安全中的驗證特性是基於JAAS
- ACCESS 密碼驗證/文字驗證中的小坑密碼
- 驗證碼的作用和相關技術
- Exadata修改sshd密碼驗證方式 延遲10分鐘關閉 明明密碼對了卻登入不上密碼
- Oracle 11g 密碼延遲認證與 library cache lock 等待Oracle密碼
- ZBlog關閉驗證碼功能(出現驗證碼出錯請關閉)
- 11G新特性-控制檔案延遲自動備份
- Oracle 密碼驗證方式Oracle密碼
- 幽默:證明真人的新驗證碼
- 使用表單驗證,建立資料驗證層,Ajax 統一返回驗證錯誤資訊
- ORACLE 密碼驗證函式Oracle密碼函式
- SQL資料庫開發中的SSIS 延遲驗證方法SQL資料庫
- 11G 新特性:密碼大小寫策略密碼
- 晶片驗證的相關概念(轉載)晶片
- 驗證碼原理及驗證
- 【11gR2新特性】extent延遲建立
- 密碼延遲驗出現大量library cache lock密碼
- Oracle 11gr2 的新特性-延遲段建立Oracle
- 安裝出錯,說jiveHome驗證錯誤
- 無密碼驗證:客戶端密碼客戶端
- 自定義密碼驗證函式密碼函式
- orapwd建立密碼及驗證方法密碼
- Oracle 8i 密碼驗證Oracle密碼
- Oracle 11g中的密碼延遲功能Oracle密碼
- 驗證碼---js重新整理驗證碼JS
- Eclipse去除js(JavaScript)驗證錯誤EclipseJSJavaScript
- 使用 Java 操作 Git-驗證相關JavaGit