监听简介
建立在通用的 TCP 和 IPC 之上的网络协议
1)服务器端的 listener (监听器)负责注册的 Oracle 的服务
2)远程客户端通过 Oracle Net 访问 Oracle 服务器端的服务
3)以 TCP 协议为基础的 OracleNet 必须描述三个基本要素:
①协议是 TCP、②服务器的 IP 地址或主机名、③端口号
1) Oracle Net 配置文件的路径
$ORACLE_HOME/network/admin/
2) 三个 Oracle Net 配置文件
①listener.ora 在服务器端的配置文件
②tnsnames.ora 在客户端的配置文件
③sqlnet.ora 客户端或服务器端 描述参数的配置文件
- 概述示例图

动态注册
- 1.实例启动后,LREG 进程每分钟自动将服务名(service_name)注册到监听器中也可以通过 alter system register 命令实现立刻注册。(11g pmon 进程)
- 2.系统有一个默认的监听器叫做 LISTENER,端口号是 1521,不需要 listener.ora 配置文件

- 3.动态注册要求实例至少启动到 mounted 状态,listener 监听器才能注册成功
- 4.动态注册需要配置 local_listener 参数
local_listener 是 Oracle 的初始化参数(动态参数,可在线修改),核心作用是:告诉数据库实例「要向哪个监听注册自己的服务信息」(即实例的「监听指向」)。
默认值:空(实例默认向「本地默认监听(1521 端口)」注册);
核心场景:非默认监听(如端口 1522、多监听实例、RAC)时,必须配置该参数,否则实例无法向监听注册服务。
# 查看参数
SQL> show parameter local_listener ;
NAME TYPE VALUE
------------------------------------ -------------------- ----------------
local_listener string
# 配置参数
SQL> ALTER SYSTEM SET local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=db-server)(PORT=实际端口))' SCOPE=BOTH;
# 重新注册
SQL> ALTER SYSTEM REGISTER;
V$LISTENER_NETWORK 是 Oracle 的动态性能视图,核心作用是:展示当前数据库实例「感知到的所有监听」的网络配置信息(包括协议、端口、监听名等),是监听配置的「实时快照」。
数据来源:实例从监听进程(tnslsnr)获取的监听网络信息,以及local_listener参数配置的监听信息;
SQL> col NETWORK for a20
SQL> col TYPE for a20
SQL> col VALUE for a100
SQL> select * from V$LISTENER_NETWORK;
NETWORK TYPE VALUE
-------------------- -------------------- ----------------------------------------------------------------------------------------------------
LOCAL LISTENER (ADDRESS=(PROTOCOL=TCP)(HOST=db_oracle_100.db.com)(PORT=1521))
SERVICE NAME oldcardtest
SERVICE NAME oldcardtest
- 5.READY 是动态注册的成功的标识

静态注册
1)静态注册要点
①静态注册必须在 listener.ora 中描述实例信息
②实例不必启动,静态监听器也能注册
③服务器启动静态监听后,可以通过远程启动数据库
2)静态注册的描述分为两部分内容
①网络三要素:①Protocal ②Host ③Port
②服务名描述:GLOBAL_DBNAME:全局数据库名(静态注册特征 UNKNOWN)
listener.ora 配置:
配置 1521 端口的静态监听程序 LISTENER 实现 PROD 和 cdb1 的静态注册
# 静默创建监控
[oracle@db_oracle_100 ~]$ netca -silent -responsefile /home/oracle/database/response/netca.rsp
正在对命令行参数进行语法分析:
参数"silent" = true
参数"responsefile" = /home/oracle/database/response/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
正在运行监听程序控制:
/u01/oracle/11.2.0.4/product/bin/lsnrctl start LISTENER
监听程序控制完成。
监听程序已成功启动。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0
[oracle@db_oracle_100 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 01-MAR-2026 12:53:18
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 01-MAR-2026 12:53:10
Uptime 0 days 0 hr. 0 min. 8 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/11.2.0.4/product/network/admin/listener.ora
Listener Log File /u01/oracle/diag/tnslsnr/db_oracle_100/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db_oracle_100.db.com)(PORT=1521)))
The listener supports no services
The command completed successfully
SQL> show parameter name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name string
db_file_name_convert string
db_name string oldcardt
db_unique_name string oldcardtest
global_names boolean FALSE
instance_name string oldcardtest
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string oldcardtest
[oracle@db_oracle_100~]$ cat /u01/oracle/11.2.0.4/product/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db_oracle_100.db.com)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC=
(GLOBAL_DBNAME=oldcard)
(SID_NAME=oldcardtest)
(ORACLE_HOME=/u01/oracle/11.2.0.4/product)
)
)
ADR_BASE_LISTENER = /u01/oracle
-
查看监听

-
关库

-
查看监听

-
远程登录启库

新增 1522 端口监听
- 核心流程:
配置 listener.ora(新增 1522 监听)→ 启动 LISTENER1522 → 配置 local_listener 指向 1522 → 强制注册 → 验证连通性; - 检查端口是否被占用
[root@db_oracle_100~]# netstat -tulpn | grep 1522 [root@db_oracle_100~]#
- 配置 listener.ora 文件 增加1522 配置
[root@db_oracle_100admin]# cp listener.ora listener.ora.bak
- vim listener.ora
# 保留原1521配置
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db_oracle_100.db.com)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC=
(GLOBAL_DBNAME=oldcard)
(SID_NAME=oldcardtest)
(ORACLE_HOME=/u01/oracle/11.2.0.4/product)
)
)
ADR_BASE_LISTENER = /u01/oracle
# 新增1522配置
LISTENER1522 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = db_oracle_100.db.com)(PORT = 1522))
)
)
# 静态注测监听
SID_LIST_LISTENER1522 =
(SID_LIST =
(SID_DESC=
(GLOBAL_DBNAME=oldcard1522)
(SID_NAME=oldcardtest)
(ORACLE_HOME=/u01/oracle/11.2.0.4/product)
)
)
- 增加tns 1522连接字符串
vi $ORACLE_HOME/network/admin/tnsnames.ora
oldcard_1522= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.141)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oldcard1522) ) )
- 启动监控:LISTENER1522
[oracle@db_oracle_100 ~]$ lsnrctl start LISTENER1522 -- 查看监听 [oracle@db_oracle_100 ~]$ lsnrctl status LISTENER1522
- 登录
[oracle@db_oracle_100 ~]$ sqlplus sys/oracle@oldcard_1522 as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Mar 1 13:26:43 2026
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, OLAP, Data Mining and Real Application Testing options
SQL>
- 测试连接
[oracle@db_oracle_100 ~]$ tnsping oldcard_1522 TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 01-MAR-2026 13:27:08 Copyright (c) 1997, 2013, Oracle. All rights reserved. Used parameter files: /u01/oracle/11.2.0.4/product/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.141)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oldcard1522))) OK (0 msec)
动态注册:1522监听
启动 1522 监听后,实例默认不会自动注册到该监听,需配置local_listener参数让实例向 1522 监听注册服务。
-- 查看当前local_listener配置(默认指向1521) SHOW PARAMETER local_listener; -- 配置实例向1522监听注册(两种方式,选其一) -- 方式1:直接指定1522端口连接串(推荐,无需依赖tnsnames) ALTER SYSTEM SET local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.5.141)(PORT=1522))' SCOPE=BOTH; -- 方式2:使用tnsnames中的连接串名(需先配置tnsnames.ora) -- ALTER SYSTEM SET local_listener = 'POSP1522' SCOPE=BOTH; -- 强制实例立即向1522监听注册服务(关键,无需等待自动注册) -- 修改local_listener后必须执行ALTER SYSTEM REGISTER,否则实例不会立即注册; ALTER SYSTEM REGISTER;
- 查看
[oracle@db_oracle_100 ~]$ lsnrctl status LISTENER1522 LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 01-MAR-2026 13:36:08 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1522))) STATUS of the LISTENER ------------------------ Alias LISTENER1522 Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date 01-MAR-2026 13:35:05 Uptime 0 days 0 hr. 1 min. 2 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/oracle/11.2.0.4/product/network/admin/listener.ora Listener Log File /u01/oracle/diag/tnslsnr/db_oracle_100/listener1522/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bjdx099sin141.hnapay.com)(PORT=1522))) Services Summary... Service "oldcardtest" has 1 instance(s). Instance "oldcardtest", status READY, has 1 handler(s) for this service... Service "oldcardtestXDB" has 1 instance(s). Instance "oldcardtest", status READY, has 1 handler(s) for this service... The command completed successfully
– 修改tns
oldcard_1522=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.141)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =oldcardtest)
)
)
– 测试登录
[oracle@db_oracle_100 ~]$ sqlplus sys/oracle@oldcard_1522 as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Mar 1 13:37:17 2026
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, OLAP, Data Mining and Real Application Testing options
SQL>
欢迎赞赏支持或留言指正





