溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么進(jìn)行Oracle 監(jiān)聽器日志的解析

發(fā)布時(shí)間:2021-11-08 09:29:24 來源:億速云 閱讀:269 作者:柒染 欄目:建站服務(wù)器

這篇文章將為大家詳細(xì)講解有關(guān)怎么進(jìn)行Oracle 監(jiān)聽器日志的解析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。

Oracle監(jiān)聽器是駐留在Oracle實(shí)例所在服務(wù)器上的獨(dú)立進(jìn)程。作為客戶端進(jìn)程連接實(shí)例的重要溝通組件,Oracle監(jiān)聽器扮演著重要的地位。本篇將從監(jiān)聽器日志入手,分析閱讀監(jiān)聽器日志和日常監(jiān)聽器常見行為。

1、Oracle監(jiān)聽器功能

ü        Oracle監(jiān)聽器是一個(gè)獨(dú)立的操作系統(tǒng)進(jìn)程,運(yùn)行在操作系統(tǒng)進(jìn)程列表中。擁有獨(dú)立于數(shù)據(jù)庫實(shí)例的啟動(dòng)、終止命令控制臺(tái)(lsnrctl);

ü        Oracle監(jiān)聽器進(jìn)程伺候在服務(wù)器一個(gè)特定端口上(默認(rèn)為1521),等待通過Oracle Net Service連入到服務(wù)器的客戶端請求;

ü        另一方面,Oracle監(jiān)聽器根據(jù)系統(tǒng)設(shè)置情況(各種環(huán)境變量)接受數(shù)據(jù)庫實(shí)例的服務(wù)列表。服務(wù)Service是對外提供的服務(wù)名稱,供本地命名服務(wù)依據(jù)Service名稱連入到其中。Service是對應(yīng)數(shù)據(jù)庫SID,也就是指定的Oracle實(shí)例數(shù)據(jù)庫位置。建立和維護(hù)服務(wù)列表的過程叫做注冊register;

ü        注冊register過程分為兩種,靜態(tài)注冊和動(dòng)態(tài)注冊。靜態(tài)注冊就是通過直接將服務(wù)名寫死在listener.ora文件中。動(dòng)態(tài)注冊是通過pmon后臺(tái)進(jìn)程周期性的到監(jiān)聽器來注冊;

ü        當(dāng)一個(gè)client請求通過TCP協(xié)議訪問到特定端口的監(jiān)聽程序,Oracle監(jiān)聽器會(huì)對比請求中的Service名稱和掌握的注冊Service列表。如果不匹配,就拒絕。如果匹配,就定位到了特定的實(shí)例,包括Oracle_home地址;

ü        監(jiān)聽程序不負(fù)責(zé)進(jìn)行用戶名密碼的驗(yàn)證,此時(shí)會(huì)向Oracle實(shí)例請求一個(gè)Server Process與client Process進(jìn)行你個(gè)交互;

2、Oracle監(jiān)聽器狀態(tài)信息

在大部分平臺(tái)下,我們可以通過lsnrctl監(jiān)聽器控制程序與監(jiān)聽器進(jìn)行交互和控制操作。其中,使用status命令,可以獲取到當(dāng)前監(jiān)聽器狀態(tài)信息。

C:\Documents and Settings\Administrator>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 29-6月 -2011 13:41:27

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=acca-119hs63yxc)(PORT=1521)

))

LISTENER 的 STATUS

------------------------

別名                      LISTENER

版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

啟動(dòng)日期                  29-6月 -2011 10:51:26

正常運(yùn)行時(shí)間              0 天 2 小時(shí) 50 分 3 秒

跟蹤級(jí)別                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

監(jiān)聽程序參數(shù)文件          C:\tool\oracle\oracle\product\10.2.0\db_1\network\admi

n\listener.ora

監(jiān)聽程序日志文件          C:\tool\oracle\oracle\product\10.2.0\db_1\network\log\listener.log

監(jiān)聽端點(diǎn)概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=acca-119hs63yxc)(PORT=1521)))

服務(wù)摘要..

服務(wù) "OTSXDB" 包含 1 個(gè)例程。

  例程 "ots", 狀態(tài) READY, 包含此服務(wù)的 1 個(gè)處理程序...

服務(wù) "OTS_XPT" 包含 1 個(gè)例程。

  例程 "ots", 狀態(tài) READY, 包含此服務(wù)的 1 個(gè)處理程序...

服務(wù) "ots" 包含 1 個(gè)例程。

  例程 "ots", 狀態(tài) READY, 包含此服務(wù)的 1 個(gè)處理程序...

命令執(zhí)行成功

命令status可以查看當(dāng)前監(jiān)聽器的所有信息。當(dāng)前監(jiān)聽器對應(yīng)的服務(wù)包括三個(gè),分別為otsxdb、otx_xpt和ots。三個(gè)服務(wù)名是對外使用的,本質(zhì)上對應(yīng)的Oracle實(shí)例都是ots。

監(jiān)聽器進(jìn)程工作都有對應(yīng)的日志信息,在狀態(tài)顯示中,我們也可以看到日志文件位置(C:\tool\oracle\oracle\product\10.2.0\db_1\network\log\listener.log)。下面我們從一個(gè)新的日志文件,看監(jiān)聽器工作。

3、Oracle監(jiān)聽器日志解析

下面是我們截取的監(jiān)聽器片段,篇幅原因,有省略。

以 pid=2736 開始

監(jiān)聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=acca-119hs63yxc)(PORT=1521)))

Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE

29-6月 -2011 10:51:27 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Administrator))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * status * 0

29-6月 -2011 10:51:39 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Administrator))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * status * 0

29-6月 -2011 10:52:00 * (CONNECT_DATA=(SID=OTS)(CID=(PROGRAM=C:\tool\oracle\oracle\product\10.2.0\db_1\perl\5.8.3\bin\MSWin32-x86-multi-thread\perl.exe)(HOST=ACCA-119HS63YXC)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.93)(PORT=3126)) * establish * OTS * 12505

TNS-12505: TNS: 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中所給出的 SID

29-6月 -2011 10:52:00 * service_register * ots * 0

29-6月 -2011 10:52:11 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Administrator))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * status * 0

29-6月 -2011 10:52:48 * service_update * ots * 0

29-6月 -2011 10:53:00 * service_update * ots * 0

(有省略。。。)

29-6月 -2011 10:53:17 * ping * 0

29-6月 -2011 10:53:18 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=SYSTEM))(COMMAND=status)(ARGUMENTS=64)(SERVICE=(ADDRESS=(PROTOCOL=TCP)(HOST=acca-119hs63yxc)(PORT=1521)))(VERSION=169869568)) * status * 0

29-6月 -2011 10:53:29 * (CONNECT_DATA=(SID=OTS)(CID=(PROGRAM=C:\tool\oracle\oracle\product\10.2.0\db_1\perl\5.8.3\bin\MSWin32-x86-multi-thread\perl.exe)(HOST=ACCA-119HS63YXC)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.93)(PORT=3141)) * establish * OTS * 0

29-6月 -2011 10:53:57 * (CONNECT_DATA=(SERVICE_NAME=ots)(CID=(PROGRAM=D:\PLSQL Developer\plsqldev.exe)(HOST=LIUZIYU-PC)(USER=Liuziyu))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.40)(PORT=1760)) * establish * ots * 0

29-6月 -2011 10:54:00 * (CONNECT_DATA=(SERVICE_NAME=ots)(CID=(PROGRAM=D:\PLSQL Developer\plsqldev.exe)(HOST=LIUZIYU-PC)(USER=Liuziyu))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.40)(PORT=1761)) * establish * ots * 0

29-6月 -2011 10:54:00 * (CONNECT_DATA=(SERVICE_NAME=ots)(CID=(PROGRAM=D:\PLSQL Developer\plsqldev.exe)(HOST=LIUZIYU-PC)(USER=Liuziyu))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.40)(PORT=1762)) * establish * ots * 0

29-6月 -2011 10:54:03 * service_update * ots * 0

29-6月 -2011 10:54:09 * service_update * ots * 0

日志內(nèi)容很多,我們分為重點(diǎn)的幾個(gè)部分。

在日志頭,Oracle告知了我們?nèi)罩靖袷?,使?進(jìn)行內(nèi)容分割。

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE

其中包括連接時(shí)間時(shí)間,請求數(shù)據(jù)Data和其他相關(guān)事件信息。這些可以幫助我們分析日志內(nèi)容。

ü        監(jiān)聽器無法找到指定服務(wù)

對應(yīng)片段:

29-6月 -2011 10:52:00 * (CONNECT_DATA=(SID=OTS)(CID=(PROGRAM=C:\tool\oracle\oracle\product\10.2.0\db_1\perl\5.8.3\bin\MSWin32-x86-multi-thread\perl.exe)(HOST=ACCA-119HS63YXC)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.93)(PORT=3126)) * establish * OTS * 12505

TNS-12505: TNS: 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中所給出的 SID

分析日志格式后,可以發(fā)現(xiàn)在這個(gè)時(shí)間(10:52),Oracle監(jiān)聽器接受到程序的訪問,程序來自主機(jī)(ACCA-119HS63YXC),使用system用戶登錄,程序名稱是perl.exe。由于當(dāng)前系統(tǒng)沒有注冊Service信息,也沒有注冊SID信息,所以不能夠連接識(shí)別對SID=OTS請求。

報(bào)錯(cuò)無法識(shí)別SID。

ü        實(shí)例主動(dòng)進(jìn)行動(dòng)態(tài)注冊

此時(shí),數(shù)據(jù)庫服務(wù)器先于監(jiān)聽程序啟動(dòng),默認(rèn)要等待很長的時(shí)間才會(huì)發(fā)生動(dòng)態(tài)注冊。我們使用alter system register;命令手動(dòng)啟動(dòng)動(dòng)態(tài)注冊過程。監(jiān)聽程序上發(fā)現(xiàn)pmon進(jìn)程的注冊進(jìn)程,并且記錄在日志中。

29-6月 -2011 10:52:00 * service_register * ots * 0

將數(shù)據(jù)庫sid=ots對應(yīng)的三個(gè)實(shí)例進(jìn)行注冊。

ü        用戶Client連接進(jìn)程

當(dāng)出現(xiàn)連接請求的時(shí)候,日志記錄。

29-6月 -2011 10:55:19 * (CONNECT_DATA=(SERVICE_NAME=ots)(CID=(PROGRAM=D:\PLSQL Developer\plsqldev.exe)(HOST=LIUZIYU-PC)(USER=Liuziyu))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.39.40)(PORT=1782)) * establish * ots * 0

根據(jù)日志格式,可以理解為從遠(yuǎn)程(HOST=LIUZIYU-PC,IP=10.1.39.40)主機(jī)通過TCP協(xié)議訪問到監(jiān)聽程序,要求連接到ots服務(wù)上。使用的程序是pl/sql developer。

ü        周期性pmon注冊

動(dòng)態(tài)注冊是一種經(jīng)常性的注冊行為,pmon每隔幾分鐘的時(shí)間就會(huì)向監(jiān)聽器進(jìn)行一次注冊動(dòng)作。

29-6月 -2011 10:55:33 * service_update * ots * 0

4、結(jié)論

監(jiān)聽器是我們經(jīng)常打交道的數(shù)據(jù)庫組件之一。同數(shù)據(jù)庫的alert_log一樣,監(jiān)聽器日志能夠幫助我們解決很多日常故障問題。

關(guān)于怎么進(jìn)行Oracle 監(jiān)聽器日志的解析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI