首页/网络/常用端口速查/1521 Oracle 数据库监听(TNS Listener)

1521 Oracle 数据库监听(TNS Listener)

Oracle 数据库默认监听端口:客户端通过 TNS 协议向监听器请求实例服务,是 Oracle 资产最典型的指纹。

常用端口速查网络更新于 2026-10-13

Oracle 监听与 1521 端口

1521 是 Oracle 数据库监听器(TNS Listener)的默认端口。客户端不直接连数据库实例,而是先连监听器,由监听器按服务名把连接转交给对应实例。监听器本身不存储数据,但它掌握着全部连接的路由,被攻陷或配置错误都可能劫持连接;同时公网可达的 1521 会持续遭遇服务名枚举与账户爆破,是 Oracle 资产最典型的指纹。

基本信息

服务Oracle Net Listener(TNS)
协议TCP(IANA 注册名 ncr)
默认端口1521,可按环境修改
配置文件listener.ora、tnsnames.ora、sqlnet.ora
管理命令lsnrctl status / services / start / stop
安全等级仅应用网段,严禁公网暴露

典型使用场景

  • 应用连接数据库:连接串形如 主机:1521/服务名,由监听器转发到实例
  • 多实例同机部署:不同实例向同一监听器注册,按服务名分流
  • RAC 集群:客户端连 SCAN 监听地址,由集群把请求分发到各节点
  • 数据同步与抽取:上游库推送变更、下游工具按服务名连库拉数
  • 迁移与验收:用 tnsping 先验证监听可达,再用 sqlplus 验证实例可登录

监听状态与服务注册

监听状态与服务注册
lsnrctl status            # 查看监听端口、已注册服务与实例状态
lsnrctl services          # 列出各服务下可用的实例与处理程序
tnsping ORCL              # 按 tnsnames.ora 中的别名测试网络可达性
ss -lntp | grep 1521      # 从系统层面确认监听地址与进程

连接测试与信息核对

连接测试与信息核对
sqlplus -S appuser@//db01.example.com:1521/ORCLPDB1 <<'EOF'
SELECT name, open_mode FROM v$database;
SELECT SYS_CONTEXT('USERENV','SERVER_HOST') FROM dual;
EOF
# 上面第一句确认连到的库与状态,第二句确认实际落到哪台主机

输出逐列读法

输出项含义正常/异常
Listening Endpoints监听地址与端口出现 0.0.0.0 之外的公网地址需立即整改
Services Summary已注册的服务名出现陌生服务名要核实来源
Instance status READY实例可用BLOCKED 或 UNKNOWN 说明实例未正常注册
Handler status established当前连接数连接数持续攀升说明存在连接泄漏
TNS ping 结果网络可达性TNS-12541 为监听未起,12514 为服务名未注册

监听器收紧(listener.ora)

监听器收紧(listener.ora)
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.10)(PORT = 1521))))   # 绑定内网地址,不要写 0.0.0.0
# 限制动态注册来源,防止未授权实例向监听器注册
SECURE_REGISTER_LISTENER = (IPC)
# 按需启用来源白名单(部分版本支持):
# TCP.VALIDNODE_CHECKING = YES
# TCP.INVITED_NODES = (10.0.0.0/24)

账号与登录审计要点

账号与登录审计要点
-- 查看失败登录与锁定状态
SELECT username, account_status, lock_date FROM dba_users WHERE account_status <> 'OPEN';
-- 概要文件中的失败次数与锁定时间
SELECT profile, resource_name, limit FROM dba_profiles WHERE resource_name IN ('FAILED_LOGIN_ATTEMPTS','PASSWORD_LOCK_TIME');
-- 复核当前连接来源
SELECT username, machine, program, osuser FROM v$session WHERE type = 'USER';
公网 1521 会被持续扫描服务名与账户;监听地址应绑定内网,并对数据库账号设置强口令、失败延迟与账户锁定策略,演示与测试账号要禁用或锁定。
连接报错先分层:TNS-12541 表示监听器没起来或端口不对,TNS-12514 表示监听在但服务名没注册,ORA-01017 表示服务通了但账号口令不对;按这三层排查比反复改连接串有效。
变更监听配置后需要 lsnrctl reload 或重启才生效,且监听器与数据库是两套进程:只重启数据库不重启监听时,日志里会出现一段时间服务未注册的现象。
多实例与容器化部署常用非默认端口:1521 只是默认值,实际环境里按实例或命名空间顺延很常见;排查连接失败时先确认监听器实际端口,再检查应用连接串是否同步更新。
监控建议:把监听器状态与实例注册情况一起采集,只监控端口存活会漏掉服务未注册这类故障;同时对失败登录次数做趋势告警,能提前发现爆破尝试。
防火墙只放行应用服务器到监听端口的单向流量,运维连接另外走跳板机;这样即使某个应用主机被攻陷,攻击者也无法从该主机横向连接其他数据库。

易错点

  • 监听器绑定到所有网卡且公网可达,是最典型的拖库前置条件
  • 只看 1521 端口状态就以为数据库正常,漏掉服务未注册与实例异常
  • 数据库账号沿用默认口令或长期不失效,扫描到端口后即可直接尝试登录
  • 监听器配置允许任意来源动态注册,攻击者可注册伪造服务名实施连接劫持

数据来源与参考

  • Oracle Database Net Services 管理员指南
  • IANA 端口注册表(ncr)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌