解析Oracle监听器工作原理及动态静态服务注册实战

在这里插入图片描述

监听器

Oracle Net Listener(监听器)是一个位于数据库服务器上的进程,它负责监听客户端的连接请求并将这些请求转发给相应的数据库服务。监听器的工作原理主要包括以下几个步骤:

  • 监听连接请求:监听器在预定义的网络地址(主机名和端口号)上监听客户端连接请求。
  • 处理连接请求:当收到连接请求时,监听器会根据请求中的服务名称将请求转发给相应的数据库实例。
  • 管理连接:监听器持续监控这些连接,并在需要时处理断开和重连等操作。
例子:

假设有一个监听器配置如下:

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

当客户端尝试连接到数据库时,例如:

SQL> CONNECT hr/hr@dbserver:1521/orcl

监听器会监听dbserver主机上的1521端口,接受这个连接请求,并将其转发给名为orcl的数据库实例。

配置监听器

在Oracle数据库中,可以配置监听器使用动态或静态服务注册。

动态服务注册:

动态服务注册是由数据库实例自动完成的。当数据库启动时,实例会自动向监听器注册自己提供的服务。这个过程由LREG(注册进程)管理。

例子:

默认情况下,Oracle数据库配置为使用动态服务注册。当数据库实例启动时,LREG进程会将数据库服务信息注册到监听器。

静态服务注册:

静态服务注册是通过手动配置监听器配置文件listener.ora来完成的。管理员需要在配置文件中明确指定数据库服务的相关信息。

例子:

listener.ora文件中添加静态服务注册的配置:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )

上述配置明确指定了数据库服务orcl,其主目录位于/u01/app/oracle/product/19.0.0/dbhome_1

具体例子详解

监听器配置文件 (listener.ora):
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = finance.us.flowers.com)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = FINDB)
    )
  )

在这个配置文件中,监听器名为LISTENER,监听dbserver主机上的1521端口。SID列表中包含了一个静态注册的服务finance.us.flowers.com,其实例名为FINDB

客户端配置文件 (tnsnames.ora):
finflowers =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = flowers-server)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = finance.us.flowers.com)
    )
  )

客户端连接使用以下命令:

SQL> CONNECT jsmith/jspass@finflowers

客户端将使用tnsnames.ora文件中配置的信息连接到flowers-server主机上的1521端口,并连接到服务名为finance.us.flowers.com的数据库实例。

动态服务注册的配置步骤:

  1. 确保初始化参数正确配置:
INSTANCE_NAME = FINDB
LOCAL_LISTENER = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbserver)(PORT=1521)))
SERVICE_NAMES = finance.us.flowers.com
  1. 在服务器端的tnsnames.ora文件中配置协议地址:
LISTENER_FINDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
  1. 使用ALTER SYSTEM REGISTER命令在监听器启动后立即启动服务注册:
ALTER SYSTEM REGISTER;

非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。

全网第一个AI+PPT提效小册希望能对大家有帮助订阅之后有专属学习交流群
以及AI考试资料分享

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值