程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oraclelistenerlsnrctl

Oraclelistenerlsnrctl

編輯:Oracle教程

Oraclelistenerlsnrctl


lsnrctl(Listener Control)是一個SQL*Net工具,用於控制數據庫listener,這個工具提供了命令用於控制listener的啟動、停止,查看listener的狀態,改變listener的配置參數等。

lsnrctl介紹

在命令行中輸入lsnrctl,你將得到:

C:\Documents and Settings\Administrator>lsnrctl

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 26-9月 -2014 08:44:15

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

歡迎來到LSNRCTL, 請鍵入"help"以獲得信息。

LSNRCTL>

使用help命令,你將看到所有可用的命令:

LSNRCTL> help
以下操作可用
星號 (*) 表示修改符或擴展命令:

start               stop                status
services            version             reload
save_config         trace               change_password
quit                exit                set*
show*

下面是對這些命令的簡單說明:

1)start:使用指定listener名啟動listener,否則將啟動LISTERNER。在Windows系統,listener也能沖控制中心的服務中啟動;
2)stop:停止listener。Windows系統也能從控制中心的服務中停止;
3)status:提供listener的狀態信息,包括啟動時間、運行時間和trace級別;
4)services:打印所有可用的服務;
5)version:打印listener的版本信息;
6)reload:不停止和啟動listener的情況下強行讀取配置文件獲取新配置;
7)save_config:為當前listener.ora文件創建一個備份,並保存改變到當前版本;
8)trace:設置trace級別,可用值:OFF,USER,ADMIN和SUPPORT;
9)dbsnmp_start:啟動DBSNMP副代理;
10)dbsnmp_stop:停止DBSNMP副代理;
11)dbsnmp_status:打印DBSNMP副代理的狀態;
12)change_password:為listener設置一個新的密碼;
13)quit或exit:退出;
14)set:改變任何參數的值;
15)show:打印當前參數的設置。

lsnrctl應用實例

下面介紹幾個lsnrctl的使用實例。

啟動listener

當listener被停止後,連接數據庫實例將導致ORA-12541異常,查看listener狀態將得到:

LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521))(CONNECT_DATA=(SID=lytest)(SERVER=DEDICATED)))
TNS-12541: TNS: 無監聽程序
 TNS-12560: TNS: 協議適配器錯誤
  TNS-00511: 無監聽程序
   32-bit Windows Error: 61: Unknown error

這時你可以啟動listener:

LSNRCTL> start
啟動tnslsnr: 請稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系統參數文件為E:\oracle\product\10.2.0\db_1\network\admin\listener.ora
寫入E:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.74.216.39)(PORT=1521)))
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))

正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
啟動日期                  26-9月 -2014 09:33:40
正常運行時間              0 天 0 小時 0 分 4 秒
跟蹤級別                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
監聽程序參數文件          E:\oracle\product\10.2.0\db_1\network\admin\listener.ora
監聽程序日志文件          E:\oracle\product\10.2.0\db_1\network\log\listener.log
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.74.216.39)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
  例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
命令執行成功

到這裡,listener啟動成功。

trace文件

listener的trace文件為我們提供了listener的工作過程信息,幫助我們定位listener的故障。下面是lsnrctl為trace提供的幫組信息:

LSNRCTL> help trace
trace OFF | USER | ADMIN | SUPPORT [<listener_name>] : set tracing to the specified level

下面是對參數的解釋:
1)OFF:no trace output;
2)USER:user trace information;
3)ADMIN:administration trace information;
4)SUPPORT:Oracle Support Services trace information
下面開啟跟蹤:

LSNRCTL> trace support
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
打開的跟蹤文件: E:\oracle\product\10.2.0\db_1\network\trace\listener.trc
命令執行成功

查看listener狀態:

LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
啟動日期                  26-9月 -2014 10:35:06
正常運行時間              0 天 0 小時 31 分 26 秒
跟蹤級別                  support
安全性                    ON: Password or Local OS Authentication
SNMP                      OFF
監聽程序參數文件          E:\oracle\product\10.2.0\db_1\network\admin\listener.ora
監聽程序日志文件          E:\oracle\product\10.2.0\db_1\network\log\listener.log
監聽程序跟蹤文件          E:\oracle\product\10.2.0\db_1\network\trace\listener.trc
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.74.216.39)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
......

在“監聽程序跟蹤文件”中可以看到跟蹤文件路徑信息:E:\oracle\product\10.2.0\db_1\network\trace\listener.trc。
可以通過下面的命令查詢跟蹤文件名:

LSNRCTL> show trc_file
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
LISTENER 參數 "trc_file" 設為 listener.trc
命令執行成功

查看跟蹤級別:

LSNRCTL> show trc_level
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
LISTENER 參數 "trc_level" 設為 support
命令執行成功

修改跟蹤文件名:

LSNRCTL> set trc_file 'lylistener.trc'
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
LISTENER 參數 "trc_file" 設為 lylistener.trc
命令執行成功

注意修改跟蹤文件名後跟蹤將被關閉,需要重新設置(這裡使用set設置,和使用trace一樣的效果):

LSNRCTL> set trc_level user
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
LISTENER 參數 "trc_level" 設為 user
命令執行成功

下面再次查看listener狀態:

LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
啟動日期                  26-9月 -2014 10:35:06
正常運行時間              2 天 0 小時 8 分 3 秒
跟蹤級別                  user
安全性                    ON: Password or Local OS Authentication
SNMP                      OFF
監聽程序參數文件          E:\oracle\product\10.2.0\db_1\network\admin\listener.ora
監聽程序日志文件          E:\oracle\product\10.2.0\db_1\network\log\listener.log
監聽程序跟蹤文件          E:\oracle\product\10.2.0\db_1\network\trace\lylistener.trc
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.74.216.39)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
......
命令執行成功

可以看到跟蹤文件名已經更改。

為listener設置密碼保護

Oracle 10g後,Oracle本地用戶關閉listener是不需要口令的,設置口令主要為了防止:
1)本機的其他用戶關閉listener;
2)遠程關閉listener。
下面是具體的方法。

LSNRCTL> change_password
Old password:<輸入原始密碼>
New password:<輸入新密碼>
Reenter new password:<新密碼確認>

執行成功後你看到:

正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
LISTENER的口令已更改
命令執行成功

接下來,你需要保存配置:

LSNRCTL> save_config
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.74.216.39)(PORT=1521)))
保存的LISTENER配置參數。
監聽程序參數文件          E:\oracle\product\10.2.0\db_1\network\admin\listener.ora
舊的參數文件E:\oracle\product\10.2.0\db_1\network\admin\listener.bak
命令執行成功

這樣就為你的listener設置了密碼保護。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved