热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle监听一般默认什么用,ORACLE监听理解

参考官方文档NetServicesReference的7OracleNetListenerParameters(listener.ora)1监听概念oracle监听,

参考官方文档Net Services Reference的7 Oracle Net Listener Parameters (listener.ora)

1 监听概念

oracle监听,是个服务器端进程,负责监听客户端发来的请求

监听器可以不必驻留在数据库主机上,即可以把实例注册到远程主机上的监听

监听是oracle自带的软件或者说组件

本地连接可以不用监听,但是远程连接必须要

oracle监听收到user process发出的request后,派生出server process来提供服务,server进程根据数据库的配置有2种模式:专有模式和共享模式

专有模式:每个客户端进程都有单独的server进程来建立session提供服务,绝大部分超过99%的数据库都是这种模式

共享模式:有个分配器叫dispatch,监听把请求放入请求队列中,dispatch会不停的查询请求队列,当发现有请求时候就把请求转给server进程,再通过server进程提供服务,处理完后反馈给响应队列,dispatch再把响应队列中的转发给用户进程。类似与饭馆吃饭,server进程相当于厨师,dispatch相当于服务员,服务员接受请求并转发给相应的空闲厨师提供服务,厨师做好的菜放在哪儿,服务员再端给客户;这种模式用的不多

dbca建库后一般会有默认监听,不用再配置,监听的服务端口默认1521

一般的库一个监听就够了,但是并发量太大的话可能需要配置多个监听,非默认监听的端口号大于1024即可,不同监听之间服务名和端口号不能一样

监听如何区别不同的库呢,所以需要把实例进行服务注册,注册到listen中,

注册就是将主机上跑的实例添加到listen里,让listen知道主机上有哪些实例

2 配置方法

2.1 动态注册

服务注册有2种,一种是动态注册,是通过pmon进程主动的自动的把实例注册到listen中

监听和实例的启动顺序,当监听先启动,没问题,如果监听后启动,那么可以手工alter system register注册下,或者不用管,pmon会隔一段时间就去注册下

一般默认监听是动态注册

不需要listener.ora文件

服务状态中有status READY(库在mount或者open状态)字样

pmon给监听提供实例名、服务名、服务处理程序的类型和地址

注册的服务名叫 db_name.db_domain,db_nameXDB.db_domain

如果要pmon注册到非默认监听,就要配置local_listener参数了

444b2d3ba55c6b042d6ea2b6db1e6d29.png

配置监听可以通过netca图形配置,也可以命令配置

b66c9db8d2eafc3bd33c8df3cfe0916b.png默认监听的名称LISTENER,配置如上,实际上没有这个listener.ora,默认listen也是可以正常运行的

那么下面增加一个在1522端口的非默认动态监听,名称叫listener2

首先netmgr图形添加一个监听

6b819aaf1141070c6dbeaf60279f384a.png

或者编辑listener.ora来添加监听也行

7c043b1559b4f2398c0abc240a9fe3b9.png

然后修改tnsnames.ora添加一个listener2的字符串,以便修改local_listener参数,(就是把监听中的那一段复制到tnsnames.ora中)

cc56c24fa50038d9f8b3d8be7ff9e2d7.png设置下local_listener参数并手工注册下即可,

[oracle@study admin]$ sql

SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 19 17:07:41 2019

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

17:07:42 SYS@study> show parameter local_list

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

local_listener string

17:08:19 SYS@study> alter system set local_listener='LISTENER2';

System altered.

Elapsed: 00:00:00.04

17:09:03 SYS@study> alter system register;

System altered.

Elapsed: 00:00:00.00

17:09:21 SYS@study> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@study admin]$ lsnrctl status listener2

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 19-SEP-2019 17:10:22

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=study.localdomain)(PORT=1522)))

STATUS of the LISTENER

------------------------

Alias listener2

Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date 19-SEP-2019 16:38:16

Uptime 0 days 0 hr. 32 min. 6 sec

Trace Level off

Security ON: Local OS Authentication

SNMP OFF

Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener Log File /u01/app/oracle/diag/tnslsnr/study/listener2/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=study.localdomain)(PORT=1522)))

Services Summary...

Service "study" has 1 instance(s).

Instance "study", status READY, has 1 handler(s) for this service...

Service "studyXDB" has 1 instance(s).

Instance "study", status READY, has 1 handler(s) for this service...

The command completed successfully

[oracle@study admin]$

不过这样的话默认,pmon就不会往默认监听中注册了,也就是从1521访问不到了,如果要1521 1522同时提供服务,可以删除默认监听,配置改为

LISTENER2 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = study.localdomain)(PORT = 1522))

(ADDRESS = (PROTOCOL = TCP)(HOST = study.localdomain)(PORT = 1521))

)

由于动态监听依赖于PMON,删除监听配置文件,默认监听依然有效,监听依旧监听localhost:1521,LOCAL_LISTENER这个参数控制实例将自身动态注册到哪儿,LOCAL_LISTENER 这个参数的默认值是(ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=1521)),PMON依旧主动注册实例到监听,dbca建库后默认就是这样的注册方式

看的出来动态监听要求监听和local_listener参数配置是一致的,都是缺省的空的配置即默认监听,非默认就显示配置这两个地方即可

tnsnames

.ora在动态监听中不是必须的,只是为了配置个本地的字符串方便local_listener的配置命令而已,直接配置如下形式也ok

alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=study.localdomain)(PORT=1521))';

等同于alter system set local_listener='';

配置注册到多个监听,可以如下

alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=study.localdomain)(PORT=1521))','(ADDRESS=(PROTOCOL=TCP)(HOST=study.localdomain)(PORT=1522))';

或者先在tnsnames.ora中配置多个地址的字符串

d950ca1e7e0018a7a1e0e152f9b1f514.png

再设置alter systemset local_listener='LISTENER2';

在共享服务器模式下,可以配置listener的一个参数叫做dispatchers,把这个分派器注册到一个非默认监听

ALTER SYSTEM SET DISPATCHERS=”(PROTOCOL=tcp)(LISTENER=lsnr2)”;

0d7352c4e827b9b400ad9db5f282a4d6.png

select service_id,name from v$active_services可以查出,前面2个服务是注册到监听的,后面2个是Oracle有两个内部的服务,SYS$BACKGROUND是后台进程使用的,SYS$USERS提供给没有指定服务的用户会话使用

2ec2ab2603b70c0991c35f2980b8274c.pngservice_names是服务名,如果为空,会把db_name.db_domain 注册到监听

2.2  静态注册

另一种是静态注册,服务的状态一般是status UNKNOWN字样,静态注册是监听程序根据配置文件listener.ora里面的配置去监听指定的地址端口和实例,是oem和其他服务所需要的

静态注册不是实例主动去监听处注册,而是监听自己管理一个端口和服务的列表,监听根据这个列表来将请求转发到具体的实例

比如如下配置

LISTENER2 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = study.localdomain)(PORT = 1522))

)

SID_LIST_LISTENER2=

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=STUDY)

(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME=STUDY)

)

)

ADR_BASE_LISTENER2 = /u01/app/oracle

GLOBAL_DBNAME即服务名,看service_names参数即可,如果为空,就是db_name.db_domain,或者先动态注册看一下服务名

SID_NAME需要大写,否则安装EM会有影响,如果不确定也可以先动态注册观察下

注意命名格式是LISTENER_NAME 和 SID_LIST_LISTENER_NAME

当数据库关闭的时候,静态注册的监听依旧可以连接,动态监听就不行了,所以远程启动数据库这样的操作就一定需要静态监听

[oracle@study admin]$ sqlplus sys/oracle@10.0.0.10:1521/study as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 20 10:59:06 2019

Copyright (c) 1982, 2009, Oracle. All rights reserved.

ERROR:

ORA-12514: TNS:listener does not currently know of service requested in connect

descriptor

Enter user-name: ^C

[oracle@study admin]$ sqlplus sys/oracle@10.0.0.10:1522/study as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 20 10:59:15 2019

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to an idle instance.

10:59:15 SYS@10.0.0.10:1522/study> startup

ORACLE instance started.

Total System Global Area 1536602112 bytes

Fixed Size 2213616 bytes

Variable Size 922749200 bytes

Database Buffers 603979776 bytes

Redo Buffers 7659520 bytes

Database mounted.

Database opened.

10:59:25 SYS@10.0.0.10:1522/study>

好了,对oracle监听有个大概的了解



推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
author-avatar
黑_猫__警_长
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有