1. 程式人生 > >ORACLE 11g 由新特性引發lsnrctl hang住卡死迷霧的詳細剖析歷程

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、分析監聽lsnrctltrace跟蹤檔案

進去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、開啟lsnrctltrace 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字節。只要