插件窝 干货文章 oracle 设置监听

oracle 设置监听

监听器 配置 Listener Oracle 953    来源:    2025-04-23

Oracle 监听器设置指南

Oracle 监听器(Listener)是 Oracle 数据库网络架构中的关键组件,负责接收客户端连接请求并将其转发到相应的数据库实例。以下是设置和管理 Oracle 监听器的详细步骤。

1. 检查监听器状态

lsnrctl status

2. 启动/停止监听器

lsnrctl start
lsnrctl stop

3. 监听器配置文件位置

监听器配置文件通常位于: - $ORACLE_HOME/network/admin/listener.ora - $ORACLE_HOME/network/admin/tnsnames.ora

4. 配置监听器(listener.ora)

基本监听器配置示例:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = your_db_name)
      (ORACLE_HOME = /path/to/oracle/home)
      (SID_NAME = your_sid)
    )
  )

5. 配置TNS名称(tnsnames.ora)

客户端连接配置示例:

YOUR_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = your_service_name)
    )
  )

6. 动态注册

Oracle 实例可以自动向监听器注册,无需在 listener.ora 中静态配置:

-- 在数据库中执行
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' SCOPE=BOTH;
ALTER SYSTEM REGISTER;

7. 常见问题排查

  • 监听器无法启动:检查端口是否被占用,权限是否正确
  • 连接被拒绝:检查监听器是否运行,防火墙设置
  • ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务:检查服务名是否正确注册

8. 高级配置

多监听器配置

LISTENER1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
  )

LISTENER2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1522))
  )

日志和跟踪

lsnrctl set current_listener LISTENER1
lsnrctl set log_directory /path/to/logs
lsnrctl set log_status on
lsnrctl set trace_level admin

9. 安全配置

  • 设置监听器密码:

    lsnrctl
    set password
    change_password
    save_config
    
  • 在 listener.ora 中禁用不必要的协议:

    ADMIN_RESTRICTIONS_LISTENER=ON
    

以上是 Oracle 监听器设置的基本指南,具体配置应根据您的实际环境和需求进行调整。