oracle之lsnrctl命令

采样:
[oracle@sh02 ~]$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.4 (Santiago)
[oracle@sh02 ~]$ uname -r
2.6.32-358.el6.x86_64
[oracle@shfpdb02 ~]$ uname -r
2.6.32-358.el6.x86_64
[oracle@shfpdb02 ~]$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                80
On-line CPU(s) list:   0-79
Thread(s) per core:    2
Core(s) per socket:    10
Socket(s):             4
NUMA node(s):          4
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Stepping:              7
CPU MHz:               2194.697
BogoMIPS:              4388.89
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-9,40-49
NUMA node1 CPU(s):     10-19,50-59
NUMA node2 CPU(s):     20-29,60-69
NUMA node3 CPU(s):     30-39,70-79

查看监听器是否启用,查看监听状态:
//做两个测试,因为节点是两个,当前节点的监听器停止

[grid@sh02 ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): shfpdb01

//启动监听器
[grid@sh02 ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-MAR-2022 16:30:59

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

Starting /u01/app/11.2.0/grid/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u01/app/11.2.0/grid/network/admin/listener.ora
Log messages written to /u01/app/grid/diag/tnslsnr/shfpdb02/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 11-MAR-2022 16:30:59
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/sh02/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
Services Summary...
Service "ht" has 1 instance(s).
Instance "ht", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

//重新查看本地监听器
[grid@sh02 ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): sh02,sh01

//查看进程

[grid@sh02 ~]$ ps -efww |grep lsnr//注意这里的所属用户,否则你设置了密码保护之后,只能用所属用户登录后才能进行更改
grid 12854 1 0 15:46 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 32735 1 0 16:30 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 33921 31866 0 16:33 pts/0 00:00:00 grep lsnr

 

//我们进入oracle用户,尝试停止监听

[grid@sh02 ~]$ exit
logout
[root@sh02 ~]# su - oracle
[oracle@sh02 ~]$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-MAR-2022 16:34:30

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-01190: The user is not authorized to execute the requested listener command

 

lsnrctl命令常用参数详解:
1)start 启动指定的监听器
2)stop 关闭指定的监听器
3)status
显示监听器的状态。status命令显示监听器是不是活动的,日志与跟踪文件的位置,
监听器已经持续运行了多长时间,以及监听器所监听的任务。
4)services
列举监听器的服务信息,比如这些服务是否有任何专用的预生成服务器进程或与之相关的调度进程,以及每个服务已有多少连接被接受或拒绝。
这种方法用来检查一个监听器是否在监听一个指定服务。 列出服务的一个汇总表及为每个协议服务处理程序所建立和拒绝的连接信息个数。
5)Version 显示oracle net软件与协议适配器的版本。 6)reload 重新装入监听器,重新读取listener.ora文件,但不关闭监听器。如果该文件发生了变化,重新刷新监听器。 7)save_config 当从lsnrctl工具中对listener.ora文件进行了修改时,复制一个叫做listener.bak的listener.ora的文件。 8)trace 打开监听器的跟踪特性。 9)change_password 允许用户修改关闭监听器所需要的密码。 10)quit 退出lsnrctl工具。 set* password 指定在lsnrctl命令行工具中执行管理任务所需要的密码。

trc_file
指定监听器跟踪信息的位置。默认设置是$ORACLE_HOME\network\trace\listener.trc

trc_directory
trc_level
跟踪级别
OFF – 未启用跟踪功能。OFF 为默认设置。
USER – 将跟踪设置为用户的相应级别。跟踪以标识用户导致的错误条件。
ADMIN – 将跟踪设置为数据库管理员的相应级别。跟踪以标识特定的安装问题。
SUPPORT – 将跟踪设置为客户支持人员的相应级别。 跟踪文件可能会变得很大。
Oracle Corporation 建议在不进行网络问题诊断时关闭跟踪功能。

log_file
指定一个监听器将把日志信息写到哪里。这个参数在默认的情况下是ON,并默认为%oracle_home%\network\log\listener.log

log_directory
log_status
current_listener
inbound_connect_timeout
定义监听器在一个会话得到启动时将等待的有效响应时间。默认设置为10秒。

startup_waittime
定义监听器在响应lsnrctl命令行工具中的一条status命令之前将等待多长时间。

save_config_on_stop
指定在一个lsnrctl会话期内所发生的修改在退出时是否应该被保存起来。

show命令


rawmode
显示关于status和service的较详细信息(当他们设置成on时)值为ON或OFF。

displaymode
把lsnrctl工具的显示模式设置成raw、compact、normal或verbose
服务显示模式为NORMAL

rules
trc_file
指定监听器跟踪信息的位置。默认设置是$ORACLE_HOME\network\trace\listener.trc

current_listener
目前的监听器为 listener2
inbound_connect_timeout
定义监听器在一个会话得到启动时将等待的有效响应时间。默认设置为10秒。

startup_waittime
定义监听器在响应lsnrctl命令行工具中的一条status命令之前将等待多长时间。

snmp_visible
save_config_on_stop
指定在一个lsnrctl会话期内所发生的修改在退出时是否应该被保存起来。
命令演示
LSNRCTL> help
The following operations are available
An asterisk (*) denotes a modifier or extended command:

start               stop                status              
services            version             reload              
save_config         trace               spawn               
change_password     quit                exit                
set*                show*           
//change_password改变监听密码
//save_config 执行该命令后,会备份listenr.ora,同时设置到listenr.ora文件

LSNRCTL> version
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNSLSNR for Linux: Version 11.2.0.4.0 - Production
TNS for Linux: Version 11.2.0.4.0 - Production
Unix Domain Socket IPC NT Protocol Adaptor for Linux: Version 11.2.0.4.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production,,
The command completed successfully

LSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER  //监听器名为LISTENER  
------------------------
Alias LISTENER  //别名LISTENER  
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production  //版本信息
Start Date 15-DEC-2021 11:18:18 //启动时间
Uptime 86 days 2 hr. 30 min. 23 sec  //正常运行
Trace Level off  //跟踪级别
Security ON: Local OS Authentication  //安全性
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora  //监听程序参数文件
Listener Log File /u01/app/grid/diag/tnslsnr/sh02/listener/alert/log.xml  //监听程序log文件
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.128.51.21)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.128.51.24)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service...
Service "fp" has 1 instance(s).
Instance "fp2", status READY, has 1 handler(s) for this service...
Service "ht" has 1 instance(s).
Instance "ht2", status UNKNOWN, has 1 handler(s) for this service...

LSNRCTL> show  或者 help show 
The following operations are available after show  //以下是有效的,跟在show命令之后,例如: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
connection_rate_limit valid_node_checking_registration
registration_invited_nodes registration_excluded_nodes

LSNRCTL> show trc_file
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-01190: The user is not authorized to execute the requested listener command

TNS-01190: 用户无权执行所请求的监听程序命令

LSNRCTL> show trc_directory
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-01190: The user is not authorized to execute the requested listener command

TNS-01190: 用户无权执行所请求的监听程序命令


Oracle lsnrctl设置密码
1、设置监听器的口令.默认口令为空.
LSNRCTL> change_password
2、设置session级别的密码,如果密码错误,不报错,也显示”命令执行成功”,但不能停止监听器.
LSNRCTL> set password
3、保存到配置文件,否则下次登陆,以前设置的密码无效.
LSNRCTL> save_config



lsnrctl 监听命令
[grid@sh02 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 10-MAR-2022 20:21:04
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                15-DEC-2021 11:18:18
Uptime                    85 days 9 hr. 2 min. 46 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/sh02/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.128.51.21)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.128.51.24)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).  //有一个服务未+ASM,数据库实例名为:+ASM2
  Instance "+ASM2", status READY, has 1 handler(s) for this service... //状态ready说明是目前处于动态注册
Service "fp" has 1 instance(s).
  Instance "fp2", status READY, has 1 handler(s) for this service...
Service "ht" has 1 instance(s).
  Instance "ht2", status UNKNOWN, has 1 handler(s) for this service... //状态处于UNKNOWN表明处于静态注册
列举监听器的服务信息
[oracle@sh02 ~]$ lsnrctl services
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-MAR-2022 13:30:38
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM2", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
Service "fp" has 1 instance(s).
  Instance "fp2", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:1791 refused:0 state:ready
         LOCAL SERVER
//htcmsdb服务 Service
"ht" has 1 instance(s). Instance "ht2", status UNKNOWN, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 LOCAL SERVER The command completed successfully
三个监听文件
 [grid@sh02 ~]$ locate sqlnet.ora
/u01/app/11.2.0/grid/network/admin/sqlnet.ora
[grid@sh02
~]$ locate tnsnames.ora/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
[grid@sh02
~]$ locate listener.ora /u01/app/11.2.0/grid/network/admin/listener.ora

//查看监听文件

[oracle@sh02 ~]$ cat /u01/app/11.2.0/grid/network/admin/listener.ora
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) #出一个监听器定义的起始点
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = htcmsdb)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) //安装位置
(SID_NAME =htcmsdb2)   //oracle sid
)
)

监听文件的各个参数的作用描述如下:

LISTENER 指出一个监听器定义的起始点。它实际上是正被定义的当前监听器的名称。默认的名称是LISTENER。
DESCRIPTION 描述每个监听位置
ADDRESS_LIST 含有与监听器正在监听的那些位置有关的地址信息
PROTOCOL 指定用于本监听位置的协议
HOST     保存监听器所驻留在的那台计算机的名称
PORT     含有监听器正在上面监听的地址
SID_LIST_LISTENER 定义配置监听器所针对的ORACLE服务的列表
SID_DESC      描述每个Oracel SID
GLOBAL_DBNAME 标识全局数据库名称。本项应该与当前Oracle服务的 init.ora 文件中的SERVICE_NAMES项要一致
ORACLE_HOME   给出服务器上Oracle可执行程序的位置
SID_NAME      含有用于本Oracle实例的Oracle SID的名称
 


 如果你对监听设置了密码

[oracle@sh02 ~]$ lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-MAR-2022 14:29:51
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-01190: The user is not authorized to execute the requested listener command  
//不允许随便关闭监听

 由于集群采用的scan 监听器对外服务,所以这里要讲这块,远程访问时,如果关闭scan 监听就会找不到监听器,但是关闭本地监听器没有关系.

 修改SCAN Listener的端口配置


[oracle@sh02 ~]$ ps -ef | grep -i tns
root 405 2 0 2021 ? 00:00:00 [netns]
grid 12854 1 0 15:46 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 32735 1 0 16:30 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit

1、修改前,先检查一下SCAN及SCAN Listener 的配置情况:

[oracle@sh02 ~]$ srvctl config scan
SCAN name: sh-cluster-scan, Network: 1/10.128.51.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /sh-cluster-scan/10.128.51.22

2、关闭SCAN Listener

[oracle@sh02 ~]$ srvctl stop scan_listener

3、检查是否被关闭

[oracle@sh02 ~]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is not running

客户端连接出现

4、修改端口
srvctl modify scan_listener -p 1526
srvctl modify scan_listener -endpoints 1526
5、检查修改是否生效

[oracle@sh02 ~]$ srvctl start scan
PRCC-1014 : scan1 was already running
PRCR-1004 : Resource ora.scan1.vip is already running
PRCR-1079 : Failed to start resource ora.scan1.vip
CRS-5702: Resource 'ora.scan1.vip' is already running on 'sh02'

[oracle@sh02 ~]$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521

6、启动SCAN Listener:
[oracle@sh02 ~]$ srvctl start scan_listener
//启动后,ps/sql能够正常登录
7、检查下,确保成功 srvctl status scan_listener srvctl modify 命令除了能够修改SCAN端口,还可以修改SCAN的名字: srvctl modify scan -n newname

停止和启动scan listener时要注意下

//我在oracle用户在执行启动scan listener

[oracle@sh02 ~]$ srvctl start scan_listener

//查看进程看不到scan
[oracle@sh02 ~]$ ps -ef | grep -i tns
root 405 2 0 2021 ? 00:00:00 [netns]
grid 32735 1 0 16:30 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit

//停止sacn_listener

[oracle@sh02 ~]$ srvctl stop scan_listener

//退出
[oracle@sh02 ~]$ exit
logout

//用grid用户登录
[root@sh02 ~]# su - grid
[grid@sh02 ~]$ srvctl stop scan_listener
PRCC-1016 : LISTENER_SCAN1 was already stopped
PRCR-1005 : Resource ora.LISTENER_SCAN1.lsnr is already stopped

//启动scan_listener

[grid@sh02 ~]$ srvctl start scan_listener
[grid@sh02 ~]$ ps -efww |grep lsnr
grid 32735 1 0 16:30 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 42083 1 0 16:50 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 42195 41859 0 16:50 pts/0 00:00:00 grep lsnr
[grid@sh02 ~]$ ps -efww |grep tns
root 405 2 0 2021 ? 00:00:00 [netns]
grid 32735 1 0 16:30 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 42083 1 0 16:50 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 42224 41859 0 16:50 pts/0 00:00:00 grep tns

//再回到oracle用户,这个时候就可以查看到

[oracle@sh02 ~]$ ps -ef | grep tns
root 405 2 0 2021 ? 00:00:00 [netns]
grid 32735 1 0 16:30 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 42083 1 0 16:50 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
oracle 43393 43352 0 16:53 pts/0 00:00:00 grep tns

我们看看关闭本地监听器对本地登录是否有影响

//现在是关闭了本地和scan情况下
[oracle@sh02 ~]$ sqlplus sh/Sh12@10.128.51.22:1521/fp SQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 11 17:05:45 2022 Copyright (c) 1982, 2013, Oracle. All rights reserved. ERROR: ORA-12541: TNS:no listener Enter user-name: ERROR: ORA-01017: invalid username/password; logon denied Enter user-name: ERROR: ORA-01017: invalid username/password; logon denied SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
//启动scan

[oracle@sh02 ~]$ srvctl start scan_listener
[oracle@sh02 ~]$ sqlplus sh/Sh12@10.128.51.22:1521/fp

SQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 11 17:08:23 2022

Copyright (c) 1982, 2013, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL>

//关闭scan,启动本地,报错
所以一旦开启scan模式,则本地监听器是可有可无的.

 

posted @ 2022-03-10 20:08  jinzi  阅读(3896)  评论(0编辑  收藏  举报