oracle网络架构

Oracle 网络配置文件

Oracle 的网络配置主要涉及三个关键的文件:listener.oratnsnames.orasqlnet.ora 。这些文件通常位于 $ORACLE_HOME/network/admin/ 目录下,$ORACLE_HOME 是 Oracle 安装目录的环境变量,通常为 /u01/app/oracle/product/xx.x.x/dbhome_1

1. listener.ora 文件

listener.ora 文件用于配置数据库监听器(Listener)。监听器是 Oracle 网络架构中的一个重要组件,负责客户端与数据库实例之间的连接请求。监听器可以是静态或动态的。

静态监听配置

静态监听配置依赖于 listener.ora 文件的手动设置。即使数据库实例未启动,监听器也会启动并等待客户端请求。

示例配置:

复制代码
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )
​
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orcl)                -- 数据库实例名
      (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1)  -- Oracle 安装路径
      (PROGRAM = extproc)              -- 可选,外部过程处理
    )
  )

配置说明:

  • SID_NAME:数据库实例的 SID 名称。

  • ORACLE_HOME:Oracle 软件的安装路径。

  • PROGRAM:指定运行的程序,如 extproc(外部过程处理)。

  • ADDRESS:监听器的网络地址,包括协议、主机地址和端口号。

动态监听配置

动态监听依赖于数据库实例自动向监听器注册自身信息。Oracle 12c 及以后版本使用 LREG(Listener Registration Process)进程实现动态注册,注册时数据库实例会根据 init.ora 文件中的 instance_nameservice_names 自动注册。

工作流程:

1.实例启动时

LREG 读取 init.ora文件中的INSTANCE_NAMESERVICE_NAMES 等参数,并通过 LOCAL_LISTENER 或默认地址(localhost:1521)与监听器通信。

2.动态注册

LREG 将实例和服务信息发送给监听器,包括:

  • 实例名称(INSTANCE_NAME)。 - 服务名称(SERVICE_NAMES)。 - 数据库负载和状态(如 READYNOT READY)。

3.状态更新

在实例运行期间,LREG 监控服务状态的变化(如实例变为不可用时),并及时通知监听器更新服务信息。

4.重新注册

当监听器重启时,LREG 会自动重新注册实例和服务信息。

无论是静态监听还是动态监听,最终的结果都是创建了监听器,最终都会有一个监听器在运行,负责接收和处理客户端或服务端的连接请求。两者的区别主要在于创建和管理监听器的时机及方式。

2. tnsnames.ora 文件

tnsnames.ora 文件用于为 Oracle 客户端提供数据库连接的简化信息。它允许客户端通过简单的 TNS 名称(如 ORCL)来访问数据库,而无需每次输入复杂的连接信息(如主机名、端口号等)。

示例配置:

复制代码
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))  -- 数据库连接信息
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)  -- 数据库服务名
    )
  )

配置说明:

  • ORCL:TNS 名称,客户端通过此名称连接数据库。

  • ADDRESS:连接的协议、主机地址和端口。

  • SERVICE_NAME:数据库的服务名。

使用时,客户端可以通过以下命令连接:

复制代码
sqlplus user/password@ORCL

而无需每次都指定完整的连接字符串。

如果不配置tnsname.ora文件,连接需要

复制代码
sqlplus user/password@//hostname:port/service_name

3. sqlnet.ora 文件

sqlnet.ora 文件用于定义客户端与数据库之间的连接参数,控制数据库的网络行为,如身份验证协议、连接超时等。

示例配置:

复制代码
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 12
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12
TCP.INVITED_NODES = (192.168.1.0/24, 10.0.0.0/8)
TCP.EXCLUDED_NODES = (192.168.2.0/24)
SQLNET.EXPIRE_TIME = 10

配置说明:

  • SQLNET.ALLOWED_LOGON_VERSION_CLIENT:客户端允许的最低身份验证协议版本。

  • SQLNET.ALLOWED_LOGON_VERSION_SERVER:服务器允许的最低身份验证协议版本。

  • TCP.INVITED_NODES:允许连接数据库的 IP 地址范围。

  • TCP.EXCLUDED_NODES:拒绝连接数据库的 IP 地址范围。

  • SQLNET.EXPIRE_TIME:设置客户端与服务器之间连接的超时检查时间(以分钟为单位)。

4. 连接方式:共享连接与专有连接

在 Oracle 数据库中,客户端连接的方式有两种:专有连接共享连接

专有连接(Dedicated Server)

每个客户端请求都会由一个独立的服务器进程(Dedicated Server Process)处理。每当客户端请求连接时,Oracle 会为该客户端分配一个专门的服务器进程。

共享连接(Shared Server)

多个客户端共享同一个服务器进程。Oracle 使用一个"共享进程池"来处理多个用户的请求,这种机制类似于连接池。

5.Oracle 数据库的连接建立过程

或者说 监听器与客户端的连接过程

1.客户端请求连接

  • 客户端(比如 SQL*Plus 或应用程序)通过网络向 Oracle 数据库发起连接请求,通常包括要连接的服务名、主机名、端口等信息。 - 这个请求首先会发送到 Listener

2.**Listener (监听)**接收请求:

  • Listener 会查看请求中的服务名或其他参数,找到对应的 Oracle 数据库实例。

3.Listener 分配 Service Handler

  • Listener 根据请求信息找到对应的数据库实例(如 ORCL),并为客户端创建一个 service handler 。 - 这个 handler 通常是一个独立的后台进程(例如 Oracle 的 服务器进程),负责处理客户端的请求。

4.客户端与 Handler 直接连接

  • 一旦 Listener 为客户端分配了一个可用的 handler,客户端就会直接与这个 handler 进行连接。此时,Listener 不再参与后续的通信。 - 客户端与 handler 之间的通信是通过网络协议进行的,处理查询、事务等操作。

5.Listener 可以停止而不影响连接

  • 因为 Listener 仅负责处理连接请求,一旦连接建立,客户端与 handler 之间的交互就独立于 Listener。即使 Listener 停止,已经建立的连接仍然能够继续运行。 - 这种机制确保了即使在 Listener 停止或重启的情况下,已经与数据库建立的连接仍然保持有效。

过程总结图

  1. 客户端请求 → 2. Listener 接收请求 → 3. Listener 分配 Service Handler → 4. 客户端与 Handler 连接 → 5. Listener 停止对后续连接不影响
相关推荐
大明湖的狗凯.4 小时前
Servlet、omcat服务器架构与工作原理
服务器·servlet·架构
网硕互联的小客服5 小时前
centos系统快捷命令有哪些?
运维·服务器·网络·centos
D^ε^S6 小时前
GB28181系列三:GB28181流媒体服务器ZLMediaKit
服务器·网络·网络协议·音视频
威视锐科技6 小时前
YunSDR通信小课堂-17
网络·网络协议·信息与通信
J.P.August6 小时前
如何设置 Data Guard 的报警机制?
数据库·oracle
清风孤客7 小时前
Vue.js 如何塑造现代网络体验
前端·网络·vue.js
多敲代码防脱发8 小时前
数据链路层(Java)(MAC与IP的区别)
运维·服务器·网络·java-ee
wa的一声哭了8 小时前
word中写论文的一些trick
java·数据库·python·sql·mysql·oracle·perl
Geek极安网络安全8 小时前
2024 年安徽省职业院校技能大赛(高职组) “5G 组网与运维”赛项规程
运维·服务器·网络·5g·安全·web安全
Tony聊跨境8 小时前
数据保护策略:如何保障重要信息的安全
大数据·运维·服务器·网络·网络协议·安全