百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

oracle数据库监听和网络服务配置及辨析

mhr18 2024-09-13 20:33 31 浏览 0 评论

什么是监听器(LISTENER)?

监听器是oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。oracle客户端与服务器端的连接是通过客户端发出的连接请求,由服务器端监听器对客户端请求进行合法检查,如果连接请求有效,则进行连接,否则拒绝该连接。

监听文件一般叫listener.ora

监听文件操作

在启动、关闭或者重启oracle监听器之前确保使用lsnrctl status命令检查oracle监听器的状态:
1、$lsnrctl status:检查当前监听器的状态
2、$lsnrctl start [listener-name] 启动所有的监听器,可以指定名字来启动特定的监听器
3、$lsnrctl stop [listener-name]  关闭所有的监听器,可以指定名字来关闭特定的监听器
4、$lsnrctl reload  重启监听器,此命令可以代替lsnrctl stop,lsnrctl start
5、lsnrctl hep      可以显示所有可用的监听器命令

oracle用户下在命令行中先输入lsnrctl,进入以下页面

$lsnretl
LSNRCTLforLinux:Version11.2.0.4.0-Productionon22-JUN-202113:14:37
Copyright(c)1991,2013,0racle.Allrightsreserved
WelcometoLSNACTL,type"help”forinformation.
LSNRCT>
1.status

显示监听器的状态。命令显示监听器是不是活动的,日志与跟踪文件的位置,监听器已经持续运行了多长时间,以及监听器所监听的任务。

2.star

启动指定的监听器。

3.stop

关闭指定的监听器。

4.services

列举监听器的服务信息。

5.version

显示oracle软件与协议适配器的版本。

6.reload

重新装入监听器,重新读取listener.ora文件,但不关闭监听器。如果该文件发生了变化,重新刷新监听器。

7.save_config

当从lsnrctl工具中对listener.ora文件进行了修改时,复制一个叫做listener.bak的listener.ora的文件。

8.trace

打开监听器的跟踪特性。

9.change_password

允许用户修改关闭监听器所需要的密码。

10.quit

退出lsnrctl命令。

11.exit

退出lsnrctl命令。

什么是网络服务名(Tnsname)?

网络服务名也称为“连接标识符”,即为该远程连接配置命名。它代表了整个连接描述,包括通信协议,主机名,端口号,服务器名称,在连接的时候只需要@网络服务名 即可连接到指定的数据库。例如在cmd或者终端输入“sqlplus 用户名/口令@网络服务名”(如 “sqlplus system/manager@orcl”),就能顺利访问指定的数据库服务器。

网络服务名是基于oracle客户端的网络配置,如果客户端需要连接数据库服务器进行操作,则需要配置该客户端,所以该客户端可以是任意一台欲连接数据库服务器进行操作的PC机,也可以是数据库服务器自身。

网络服务文件一般叫tnsnames.ora

Oracle Net 工具(命令)tnsping,是一个OSI会话层的工具,它用来: 1)验证名字解析(name resolution,是oracle自己的网络服务名) 2)远程的listener是否启动

Oracle中网络服务tnsping命令解析

1.tnsping 命令可以检查tcp协议是否已同,俗称我们说的网络通不通

2.tnsping命令监听服务器上的监听是否已开启

3.tnsping命令不检测服务器上的监听的服务名,所以tnsping通,不代表就能连通。

[oracle@pvvm090242 admin]$ tnsping orcl#tnsping 数据库实例名,下面的结果出现OK表示是成功的

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 22-JUN-2021 13:43:37

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.100.228)(PORT = 15228)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (0 msec)

oracle中监听和网络服务的辨析

oracle中为什么要配置监听和配置本地网路服务名

在Oracle中配置监听器和本地网络服务名称是连接Oracle数据库的重要步骤。以下是两者的详细解释:

  1. 监听器:Oracle监听器是一种进程,它监听来自其他计算机上的客户端请求,并将这些请求传递给正确的Oracle数据库实例。在Oracle数据库中使用监听器,您需要在每个Oracle数据库服务器上运行监听器进程以等待客户端请求。这样,每次建立与Oracle数据库服务器的连接时,客户端都首先将请求发送到监听器。如果监听器能够识别数据库的服务名,它将把请求发送到正确的实例。如果没有监听器,客户端无法连接到Oracle数据库。
  2. 本地网络服务名称:在Oracle中,本地网络服务名称(也称为tnsnames)定义了如何连接到Oracle数据库的方法。网络服务名也包含了一些连接信息,如主机名、端口、实例名等等。在客户端与Oracle数据库的连接中,网络服务名称是必需的。因此为了连接到Oracle数据库,您需要在每个客户端上配置网络服务名称。这样,客户端就能够通过网络服务名称连接到数据库,而无需记住复杂的连接细节。

总之,配置Oracle的监听器和本地网络服务名称是非常重要的,因为它们为Oracle数据库提供了与客户端的连接。监听器和网络服务名称可以确保客户端和数据库之间的可靠和稳定的连接,并可帮助管理员轻松地管理数据库和客户端。

监听器和本地网络服务名称的区别和联系是

Oracle监听器和本地网络服务名称是数据库连接的两个关键组件,它们的作用不同但联系紧密。以下是它们之间的区别和联系:

  1. 区别:
  • 监听器:Oracle监听器是运行在Oracle数据库服务器上的一个进程,它监听来自客户端的请求,并把请求分发给正确的数据库实例。监听器确保数据库可以被远程客户端访问。Oracle数据库服务器上可以同时运行多个数据库实例,每个实例都具有唯一的服务名,监听器负责确定客户端请求要连接哪个数据库实例。
  • 本地网络服务名称(tnsnames):本地服务名称是指客户端配置的用于连接到Oracle数据库的网络服务名称,例如“MyDB”。在这里,“MyDB”是一个自定义字符串,它用于标识目标数据库的各种连接信息,包括主机名、端口号、服务名、协议等。
  1. 联系:
  • 监听器负责在Oracle数据库服务器上监听来自客户端的请求,并将请求分配到正确的数据库实例。客户端必须通过本地网络服务名称与顺序的目标数据库进行连接。
  • 客户端通过连接描述符(连接描述符是连接到Oracle数据库的描述符,包括主机名、服务名和端口号等信息)连接到监听器。在连接描述符中,客户端使用本地服务名称来标识将连接的目标数据库,监听器使用服务名来确定应将连接请求传递到哪个数据库实例。因此,监听器和本地服务名称都是实现远程客户端连接到Oracle数据库的必要条件。

总之,本地网络服务名称是客户端使用的字符串,它描述了连接到服务名的连接详细信息。监听器是运行在服务器上的进程,它监听来自客户端的连接请求,并将其转发到正确的数据库实例上。尽管它们的作用不同,但它们密切配合,共同实现了客户端连接到Oracle数据库的功能。

oracle的监听程序名和网络服务名可以设置为不一样

Oracle的监听程序名和网络服务名也是两个不同的概念,它们通常不需要设置为一样的。

监听程序名是在Oracle Listener配置中指定的,它用于标识监听器服务进程的名称。一个计算机上可以同时运行多个监听器服务进程,每个监听器服务进程都有其独立的进程ID和服务名。监听器服务进程用于处理客户端请求并将其转发到相应的实例上。设置监听器服务进程名称使得您可以方便地在服务进程列表中识别出不同的监听器服务进程,并进行相应的管理。

网络服务名(tnsnames)用于标识客户端连接Oracle数据库的连接信息。通过定义网络服务名称,可以轻松地指定客户端连接到Oracle数据库所需的参数,例如:主机名、端口号、服务名、协议等等。客户端使用网络服务名来连接到数据库,以便访问该数据库的数据和资源。

尽管监听程序名和网络服务名都涉及到Oracle数据库和客户端的连接,但它们的用途和含义是不同的。通常情况下,您可以为监听器服务进程名称和网络服务名称使用不同的字符串,并且可以使它们具有易于识别和管理的特点。根据需要,您可以在客户端的tnsnames文件中定义多个网络服务名称,并将其与不同的监听器服务进程关联起来,从而更灵活地管理不同的连接。

那客户端连接过来,网络服务和监听是如何工作,协作的

客户端连接Oracle数据库需要借助网络服务名(tnsnames)和监听器进行协作。其基本流程如下:

  1. 客户端使用tnsnames文件中定义的网络服务名,发起连接请求。
  2. 连接请求通过网络传输到Oracle服务器。
  3. 服务器上的监听器进程接收连接请求,通过监听器配置的连接描述符解析客户端连接的相应数据库服务名,确定应当将连接请求传递到哪个实例(instance)。
  4. 监听器进程将连接请求传递到相应的实例,建立连接。
  5. 此时客户端与Oracle数据库成功建立连接,可以进行相应的数据库操作。

总之,客户端连接过程中,tnsnames文件中定义的网络服务名用于标识连接目标,监听器进程用于监听传入连接请求并将其传递到相应的Oracle实例上,通过网络连接最终建立连接。在这个过程中,网络服务名和监听器通过配合解决了客户端到Oracle服务器的连接问题,从而保证了数据库的正常访问。

网络服务有专门的进程吗

在Oracle数据库中,网络服务(即tns服务)本身并没有专门的进程。TNS服务是一个TCP/IP协议的三层服务,运行于客户端与数据库服务器之间,负责传输Oracle客户端和服务器之间的数据。TNS服务的实现依赖于客户端操作系统的TCP/IP协议栈,而不是Oracle数据库本身。

在客户端电脑上,当客户端发起一个连接请求时,客户端操作系统的网络协议栈(TCP/IP Stack)将负责处理数据的传输。当连接请求到达数据库服务器后,数据库服务器上的监听器(listener)会解析连接描述符(Connect Descriptor)并将请求转发到相应的数据库实例上。在这个过程中,TNS服务是连接请求和响应的载体,但它并不是Oracle数据库中的独立进程。

需要注意的是,Oracle数据库的实例(instance)和进程(process)是有区别的,实例是Oracle数据库的一个运行环境,由多个进程共同组成,而进程则是在这个运行环境中具体执行任务的实体。因此,不要将TNS服务和Oracle数据库中的进程混淆,它们是两个不同的层面。

一个网络服务可以对接多个监听吗

一个网络服务名(tns service name)可以与多个监听器(listener)相关联,但一个监听器只能与一个网络服务名相关联。这意味着您可以为Oracle数据库指定多个网络服务名,每个网络服务名可以与不同的监听器进程相关联,以实现多个客户端同时连接同一个数据库。

通过为单个数据库定义多个网络服务名,可以为不同类型的客户端提供适当的连接方法。例如,基于TCP协议的Oracle客户端可以使用名为“ORCL”的网络服务名连接到数据库中,而基于HTTP协议的Oracle客户端则可以使用名为“ORCL_HTTP”的不同的服务名连接到数据库中。此外,您还可以根据需要更改网络服务名的相关监听器配置,以调整数据库的性能优化或安全配置。

总之,一个网络服务名可以与多个不同的监听器进程相关联,以实现在单个Oracle数据库上为多个客户端提供不同的连接方式。但是,一个监听器进程只能从一个通信端口侦听一个服务名,这是因为在侦听中我们需要启用服务名的协议、端口和实例的映射关系,所以不同端口或不同服务名都需要单独启动监听器进程。

什么情况下需要配置多个监听

以下是需要配置多个监听的情况:

  1. 提高可用性:在高可用性场景中,如果要在存储着主要数据的数据中心和存储着备份数据的数据中心之间进行故障转移,可以在主数据中心和备份数据中心分别设置该数据库的监听器。此时,如果主要数据中心出现问题,客户端可以自动切换到备用数据中心以维持连接,保证数据的继续访问。
  2. 提高可扩展性:在某些情况下,一个数据库中负载可能过重,需要将请求分散到多个实例上。此时,可以为每个实例添加一个监听器,并根据特定业务逻辑将请求均匀分配到各个实例。这样可以提高数据库的整体性能,同时缩短了客户端和数据库实例的响应时间。
  3. 提高安全性:有时候需要根据不同的网络安全策略和访问控制规则,将客户端的连接请求分配到不同的监听器上。例如,对于外部网络和内部网络的连接请求,为了保证内部网络的安全性,可能会使用不同的监听器来接受不同的连接请求。此时,可以为外部网络和内部网络分别配置监听器,以实现安全控制的目的。

综上所述,需要配置多个监听器可以实现高可用性、高可扩展性和安全控制等目标。在设计时,应该根据特定的业务需求来选择合适的监听器配置策略。

相关推荐

如何检查 Linux 服务器是物理服务器还是虚拟服务器?

在企业级运维、故障排查和性能调优过程中,准确了解服务器的运行环境至关重要。无论是物理机还是虚拟机,都存在各自的优势与限制。在很多场景下,尤其是当你继承一台服务器而不清楚底层硬件细节时,如何快速辨识它是...

第四节 Windows 系统 Docker 安装全指南

一、Docker在Windows上的运行原理(一)架构限制说明Docker本质上依赖Linux内核特性(如Namespaces、Cgroups等),因此在Windows系统上无法直...

C++ std:shared_ptr自定义allocator引入内存池

当C++项目里做了大量的动态内存分配与释放,可能会导致内存碎片,使系统性能降低。当动态内存分配的开销变得不容忽视时,一种解决办法是一次从操作系统分配一块大的静态内存作为内存池进行手动管理,堆对象内存分...

Activiti 8.0.0 发布,业务流程管理与工作流系统

Activiti8.0.0现已发布。Activiti是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速、稳定的BPMN2流程引擎。Activiti可以...

MyBatis动态SQL的5种高级玩法,90%的人只用过3种

MyBatis动态SQL在日常开发中频繁使用,但大多数开发者仅掌握基础标签。本文将介绍五种高阶技巧,助你解锁更灵活的SQL控制能力。一、智能修剪(Trim标签)应用场景:动态处理字段更新,替代<...

Springboot数据访问(整合Mybatis Plus)

Springboot整合MybatisPlus1、创建数据表2、引入maven依赖mybatis-plus-boot-starter主要引入这个依赖,其他相关的依赖在这里就不写了。3、项目结构目录h...

盘点金州勇士在奥克兰13年的13大球星 满满的全是...

见证了两个月前勇士与猛龙那个史诗般的系列赛后,甲骨文球馆正式成为了历史。那个大大的红色标志被一个字母一个字母地移除,在周四,一切都成为了过去式。然而这座,别名为“Roaracle”(译注:Roar怒吼...

Mybatis入门看这一篇就够了(mybatis快速入门)

什么是MyBatisMyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为M...

Springboot数据访问(整合druid数据源)

Springboot整合druid数据源基本概念SpringBoot默认的数据源是:2.0之前:org.apache.tomcat.jdbc.pool.DataSource2.0及之后:com.z...

Linux 中的 &quot;/etc/profile.d&quot; 目录有什么作用 ?

什么是/etc/profile.d/目录?/etc/profile.d/目录是Linux系统不可或缺的一部分保留配置脚本。它与/etc/profile文件相关联,这是一个启动脚本,该脚...

企业数据库安全管理规范(企业数据库安全管理规范最新版)

1.目的为规范数据库系统安全使用活动,降低因使用不当而带来的安全风险,保障数据库系统及相关应用系统的安全,特制定本数据库安全管理规范。2.适用范围本规范中所定义的数据管理内容,特指存放在信息系统数据库...

Oracle 伪列!这些隐藏用法你都知道吗?

在Oracle数据库中,有几位特殊的“成员”——伪列,它们虽然不是表中真实存在的物理列,但却能在数据查询、处理过程中发挥出意想不到的强大作用。今天给大家分享Oracle伪列的使用技巧,无论...

Oracle 高效处理数据的隐藏神器:临时表妙用

各位数据库搬砖人,在Oracle的代码世界里闯荡,处理复杂业务时,是不是总被数据“搅得头大”?今天给大家安利一个超实用的隐藏神器——临时表!当你需要临时存储中间计算结果,又不想污染正式数据表...

Oracle 数据库查询:多表查询(oracle多表关联查询)

一、多表查询基础1.JOIN操作-INNERJOIN:返回两个表中满足连接条件的匹配行,不保留未匹配数据。SELECTa.emp_id,b.dept_nameFROMempl...

一文掌握怎么利用Shell+Python实现多数据源的异地备份程序

简介:在信息化时代,数据安全和业务连续性已成为企业和个人用户关注的焦点。无论是网站数据、数据库、日志文件,还是用户上传的文档、图片等,数据一旦丢失,损失难以估量。尤其是当数据分布在多个不同的目录、服务...

取消回复欢迎 发表评论: