ORACLE 11g 由新特性引發lsnrctl hang住卡死迷霧的詳細剖析歷程
1、問題描述
同事說卡住了,連線oracle資料庫很慢,需要很久,連上了做一個簡單的查詢也非常慢,感覺像是hang主了一般。
2、分析oracle伺服器負載
一開始登入進去,檢視oracle伺服器,負載很低,伺服器毫無壓力,感覺不是伺服器卡的問題了:
[[email protected] data]# w 19:59:47 up 122 days, 4:32, 4 users, load average: 0.65, 0.71, 0.59 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT root tty1 :0 17Jun16 122days 5:00 5:00 /usr/bin/Xorg :0 -nr -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-YoRXlJ/database -nolisten tcp vt1 root pts/0 192.168.120.154 12:49 4:42m 0.04s 0.04s -bash root pts/1 192.168.120.154 12:49 0.00s 0.13s 0.05s w root pts/2 192.168.120.154 13:41 6:09m 0.06s 0.02s -bash [[email protected] data]# |
3、分析oracle伺服器lsnrctl監聽
既然不是oracle伺服器負載的問題,那麼就再看看lsnrctl監聽狀態,比較慢,而且看到最後有異常資訊:
[[email protected] admin]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 17-OCT-2016 13:27:51 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.104)(PORT=1521))) # 然後卡住了,卡住了,hang主了,沒有任何動彈,需要很久很久才能釋放出來。 # 再看下tnsping下服務,也比較慢,發現有錯誤問題出現,如下所示 [[email protected] admin]$ tnsping PD236 TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 17-OCT-2016 13:21:24 Copyright (c) 1997, 2009, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.104)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = powerdes))) TNS-12547: TNS:lost contact [[email protected] admin]$ |
4、分析監聽lsnrctl的trace跟蹤檔案
進去lsnrctl管理介面看trace檔案目錄:
(1)進去lsnrctl管理命令列 [[email protected] oradata]$ lsnrctl LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 17-OCT-2016 20:36:34 Copyright (c) 1991, 2009, Oracle. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> (2)檢視命令 LSNRCTL> show The following operations are available after show An asterisk (*) denotes a modifier or extended command: rawmode displaymode rules trc_file trc_directory trc_level log_file log_directory log_status current_listener inbound_connect_timeout startup_waittime snmp_visible save_config_on_stop dynamic_registration enable_global_dynamic_endpoint oracle_home pid (3)檢視跟蹤檔案已經檔案目錄 LSNRCTL> show trc_file Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.104)(PORT=1521))) LISTENER parameter "trc_file" set to ora_2994_139957275965184.trc The command completed successfully LSNRCTL> LSNRCTL> show trc_directory Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.104)(PORT=1521))) LISTENER parameter "trc_directory" set to /oracle/app/oracle/diag/tnslsnr/pldb236/listener/trace The command completed successfully LSNRCTL> |
然後去看後臺的日誌,看到顯示正常,沒有發現路徑錯誤之類的問題:
[[email protected] ~]# tail -f /oracle/app/oracle/diag/tnslsnr/pldb236/listener/trace/ora_2994_139957275965184.trc 2016-10-17 13:42:38.443831 : nsbrfr:nsbfs at 0x25d94c0, data at 0x25aa940. 2016-10-17 13:42:38.443843 : nsbrfr:nsbfs at 0x256f3b0, data at 0x2576610. 2016-10-17 13:42:38.443855 : nsbrfr:nsbfs at 0x25a4ac0, data at 0x25af850. 2016-10-17 13:42:38.443867 : nsbrfr:nsbfs at 0x25a4b70, data at 0x25b52c0. 2016-10-17 13:42:38.443880 : nsbrfr:nsbfs at 0x25b1fb0, data at 0x25b8a10. 2016-10-17 13:42:38.443891 : nsbrfr:nsbfs at 0x2568f10, data at 0x2566670. 2016-10-17 13:42:38.443903 : nsbrfr:nsbfs at 0x256afe0, data at 0x256b090. 2016-10-17 13:42:38.443916 : nsbrfr:nsbfs at 0x250fd00, data at 0x2568fc0. 2016-10-17 13:42:38.443937 : nlse_term_audit:entry 2016-10-17 13:42:38.443951 : nlse_term_audit:exit |
5、出絕招lsnrctl重啟
絕招無效,還是很慢,甚至lsnrctl stop以及lsnrctl start都非常慢。
# stop很慢,卡住了,至少需要50秒才能完成 LSNRCTL> stop Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.104)(PORT=1521))) ……卡呀卡……卡到外婆家 The command completed successfully LSNRCTL> start # start會快一些,快到10秒到20秒就完成了。 Starting /oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.1.0 - Production System parameter file is /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Log messages written to /oracle/app/oracle/diag/tnslsnr/pldb236/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.104)(PORT=1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.104)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 17-OCT-2016 20:46:58 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File /oracle/app/oracle/diag/tnslsnr/pldb236/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.104)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0))) Services Summary... Service "powerdes" has 1 instance(s). Instance "powerdes", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully LSNRCTL> PS:重啟之後,遠端連線oracle例項還是非常慢的,所以重啟也沒有啥效果 |
6、開啟lsnrctl的trace 16分析
嘗試開啟更高一級別的trace16,看看,這回stop快了許多,但是遠端連線還是非常慢的,開啟過程如下:
LSNRCTL> trace 16 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.104)(PORT=1521))) Opened trace file: /oracle/app/oracle/diag/tnslsnr/pldb236/listener/trace/ora_14662_140432957417216.trc The command completed successfully LSNRCTL> PS:然後去檢視這個日誌,也沒有發現異常資訊,看來此途徑無效了。 |
7、迷霧中的靈光一閃
各種地方都考慮檢查到了,問題還是沒有解決,仔細想來,這種情況也就是做了rman恢復之後的事情,在沒有做rman恢復之前,都是正常的;
Rman恢復、rman恢復、rman恢復、rman恢復……
對了,rman恢復的是2015年的資料,那麼資料庫使用者名稱密碼也是2015年的,2016年資料庫使用者密碼修改過了,想起了rman恢復是恢復了所有的東西包括環境變數博包括系統引數等等。那麼意味著現在應用連線這個資料庫所使用的使用者名稱密碼是連線不上的,連線不上就會報錯啊,但是alert日誌後臺沒有看到,那會是啥問題呢,突然腦中亮光一閃,oracle11g新特性密碼驗證延遲啊,會卡住資料庫,使用者連線不上去了。
趕緊去遮蔽密碼延遲驗證:
SQL> ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE; System altered. SQL> create pfile from spfile; File created. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 6680915968 bytes Fixed Size 2213936 bytes Variable Size 4898949072 bytes Database Buffers 1744830464 bytes Redo Buffers 34922496 bytes Database mounted. Database opened. SQL> |
然後皆大歡喜,連線資料庫也不卡了,上去查詢個數據也不卡了,一切都很快速了。因此分析是就是oracle11g的新特性密碼驗證延遲引發lsnrctl hang住了,以前也遇到類似的由於oracle11g新特性引發的問題,當時花了漫長的時間去分析,去求證,而且詳情參見我以前整理得部落格blog記錄,裡面針對oracle11g特性有比較深入的探討,blog連線地址為:http://blog.csdn.net/mchdba/article/details/51794443
另外trace參考文章地址:http://blog.itpub.net/17203031/viewspace-713587/
相關推薦
ORACLE 11g 由新特性引發lsnrctl hang住卡死迷霧的詳細剖析歷程
1、問題描述同事說卡住了,連線oracle資料庫很慢,需要很久,連上了做一個簡單的查詢也非常慢,感覺像是hang主了一般。2、分析oracle伺服器負載一開始登入進去,檢視oracle伺服器,負載很低,伺服器毫無壓力,感覺不是伺服器卡的問題了:[[email pro
ORACLE 11g的新特性,使用者名稱密碼錯誤延遲
ORACLE 11g增加新特性,當有錯誤的使用者名稱和密碼連線資料庫時,如果資料量很大,就會自動延遲登入,會自動記錄延遲時間,相應賬號出現 library cache lock
Oracle 12.1新特性:在線rename或relocate數據文件
oracle 12 move datafile在Oracle12.1之前的版本中要重命名數據文件或移動數據文件需要關閉數據庫或把表空間/數據文件置為offline狀態才可以,參考之前總結的Oracle修改數據文件名/移動數據文件。但到了12.1版本,可以直接在數據文件online狀態下把數據文件重命名或移動數
Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node
Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node 在 Oracle Database 12c 的 Cluster 中引入了很多新特性和新概念,其中重複最多的幾個名詞除了 Flex Cluster、F
oracle 12C的新特性-CDB和PDB
1.前言 CDB與PDB是Oracle 12C引入的新特性,在ORACLE 12C資料庫引入的多租使用者環境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔資料庫(PDB)。CDB全稱為ContainerDatabase,中文翻譯為資料庫容器,PDB全稱為Pl
Oracle 12.2新特性掌上手冊
編輯手記:RAC是Oracle最重要的高可用架構之一,具有擴充套件性良好、實現負載均衡等多維度的優勢,Oracle RAC提供了相應的叢集軟體和儲存管理軟體,今天我們一起來學習在12.2中,Oracle在RAC叢集資源的管理上有哪些重要的更新。 注:文章內容來自官方文件
Oracle 12.2 新特性 | PDB不同字符集變更深入解析
從12c版本12.1開始,就有了新特性——Pluggable Database,相比較之前通過schema的管理方式實現多使用者管理,Pluggable Database實現了進一步的隔離,其中包含如下特點: 將業務使用者元資料和資料庫本身的元資料進行分離,減少核心資
ORACLE 11g 通過ASH結合AWR實戰解決cpu高負載的詳細過程
select * from ( select this_.dly_note_id as dly1_396_0_, this_.created_center_cd as created2_396_0_, this_.created_date as created3_396_0_, this_.created
Android6.0新特性把外接TF卡作為內建儲存使用
之前外界曾一度認為谷歌要在Android中淘汰掉MicroSD卡,但從安卓5.0開始這個情況緩和了很多,而谷歌也允許開發者將更多MicroSD卡功能恢復。 Android 5.0中,谷歌添加了新的API,為訪問MicroSD卡提供了一種更為安全的方式。開發者能完全訪問
C#開啟一個新視窗關閉當前視窗時卡死的問題
這個問題是這樣的,有三個Windows窗體(如圖,以下主窗體Form1不考慮,只考慮Form2、Form3),現在打開了Form2,我想點Form2的“button1"來開啟Form3同時關掉Form2, 但出現如下圖的情況,Form2跟Form3兩個視窗不斷反覆出現
Oracle 11g 新特性 -- SQL Plan Management 示例
在之前的Blog 裡瞭解了Oracle 11g SQL Plan Management的理論,這篇Blog來演示一些具體的操作示例。 Oracle 11g 新特性 --SQL Plan Management 說明 官網說明: Using SQL Plan Managem
Oracle 11g 新特性 -- 臨時表空間收縮 說明
一. 臨時表空間收縮 1.1 說明 關於Oracle 的臨時表空間,之前有整理過一篇Blog: Oracle Temp 臨時表空間 以下操作會佔用大量的temporary: 1、使用者執行imp/exp 匯入匯出操作時,會使用大量的temporary段
Oracle 11g 針對SQL效能的新特性(三)- SQL Plan Management
簡介 在Oracle 11g之前,執行計劃一直是作為“執行時”生成的物件存在。雖然oracle提供了一些方法去指導它的生成,但Oracle一直沒有試圖去儲存完整的執行計劃。 從11g開始,執行計劃就可以作為一類資源被儲存下來,允許特定SQL語句只能選擇“已知”的執行計劃。 同其他方法相比,SPM更加的靈活。
oracle 11g新特性,UNPIVOT 效能測試
根據業務需要,我們有900列轉為3列900行資料的需求。 親們,你們測試過piovt與 unpivot的效能嗎?確定沒有bug嗎? 等測試完後我再去Metalink尋找一下。 下面是我測試的效能。 --200 列 SELECT substr(dt.y,1,INSTR(
Oracle 11g 新特性 -- 自適應遊標共享(Adaptive Cursor Sharing: ACS) 說明
一.自適應遊標共享(Adaptive Cursor Sharing) 說明 1.1 ACS概述 繫結變數使Oracle DB 可以為多條SQL 語句共享單個遊標,以減少分析SQL 語句所使用的共享記憶體量。然而,遊標共享和SQL 優化是兩個相互衝突的目標。用文字編
Oracle 11g 新特性 -- SQL Plan Management 說明
一.概述 SQL 語句的SQL 執行計劃發生更改時,可能存在效能風險。 SQL 計劃發生更改的原因有很多,如優化程式版本、優化程式統計資訊、優化程式引數、方案定義、系統設計和SQL 概要檔案建立等。 在以前版本的Oracle DB 中引入了各種計劃控制技術(如儲存的大綱
點評Oracle 11g新特性之執行計劃管理
摘自:http://doc.chinaunix.net/oracle/200707/156806.shtml 【內容導航】 第1頁:執行計劃管理的工作原理 第2頁:執行計劃管理的測試 摘要:本文描述了11g的新特性之一:執行計劃管理,介紹了引入該新特性的原因,以
Oracle 11g 新特性 -- 安全性增強 說明
一.密碼安全 為了遵守各種安全性和隱私規定,必須使用更安全的口令。如果口令非常短或僅包含有限的字元,則對於強力攻擊就很脆弱,而包含較多不同字元的較長口令就很難被猜出或獲得。 在Oracle Database 11g中,口令的處理方式與早期版本中的處理方式有所不同: (
oracle 12c 新特性之不可見字段
創建 oracl alt created 顯式 11g 不可見 插入數據 esc 在Oracle 11g R1中,Oracle以不可見索引和虛擬字段的形式引入了一些不錯的增強特性。繼承前者並發揚光大,Oracle 12c 中引入了不可見字段思想。在之前的版本中
Oracle 12C 新特性之擴展數據類型(extended data type)
stand 特性 standard ava dbm har sco stat rac Oracle 12C 新特性-擴展數據類型,在12c中,與早期版本相比,諸如VARCHAR2, NAVARCHAR2以及 RAW這些數據類型的大小會從4K以及2K字節擴展至32K字節。只要