什么是oracle监听

oracle监听是个服务器端进程,负责监听客户端发来的请求,能够给客户端电脑和数据库电脑建立数据的链接;oracle监听收到request后派生出server process提供服务,会根据数据库配置提供专有和共享两种模式。

什么是oracle监听

本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。

什么是oracle监听

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种,一种是动态注册,是通过pmon进程主动的自动的把实例注册到listen中

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

一般默认监听是动态注册

不需要listener.ora文件

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

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

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

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

11.png

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

12.png

默认监听的名称LISTENER,配置如上,实际上没有这个listener.ora,默认listen也是可以正常运行的那么下面增加一个在1522端口的非默认动态监听,名称叫listener2

首先netmgr图形添加一个监听

13.png

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

14.png

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

15.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 ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options 17:07:42 SYS@study> show parameter local_list NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------local_listener                       string17:08:19 SYS@study> alter system set local_listener='LISTENER2'; System altered. Elapsed: 00:00:00.0417:09:03 SYS@study> alter system register; System altered. Elapsed: 00:00:00.0017:09:21 SYS@study> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith 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                     listener2Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionStart Date                19-SEP-2019 16:38:16Uptime                    0 days 0 hr. 32 min. 6 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.oraListener Log File         /u01/app/oracle/diag/tnslsnr/study/listener2/alert/log.xmlListening 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中配置多个地址的字符串

16.png

再设置alter systemset local_listener=’LISTENER2′;

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

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

登录后复制

17.png

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

18.png

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

推荐教程:《Oracle视频教程》

以上就是什么是oracle监听的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2069274.html

(0)
上一篇 2025年2月24日 07:23:47
下一篇 2025年2月18日 09:22:38

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • oracle怎么修改directory目录

    在oracle中,可以利用“create or replace directory dumpdir as ‘directory目录路径’;”语句修改directory目录,该语句不仅可以用于修改directory目录…

    2025年2月24日
    200
  • oracle的用户权限有哪些

    oracle的用户权限:1、系统权限,允许用户执行特定的数据库动作的权限,包括了创建表、索引、连接实例等等;2、对象权限,允许用户操作特定对象的权限,包括了读取视图、执行存储过程等等。 本教程操作环境:Windows10系统、Oracle …

    2025年2月24日
    200
  • oracle的错误959怎么解决

    方法:1、用“create tablespace…datafile ‘dbf路径’ size 100M…”创建表空间;2、用“alter user demo quota unlimited o…

    2025年2月24日
    200
  • oracle怎么设置数据库只读

    方法:1、利用“ALTER DATABASE MOUNT;”语句将数据库设置为Mount模式;2、利用“alter database open read only;”语句将数据库设置为只读即可。当数据库被设置为只读状态时,用户只能查询数据。…

    2025年2月24日
    100
  • oracle怎么解决12560协议适配器错误

    解决方法:1、在服务面板中启动“OracleOraDb11g_home1TNSlistener”服务;2、启动OracleServiceBOOKSALES服务;3、用regedit将“ORACLE_SID”设置为database SID。 …

    2025年2月24日 数据库
    200
  • oracle中insert会锁表吗

    oracle中insert会锁表;当oracle执行insert等DML语句时,会在所操作的表上申请一个锁,两个insert语句同时试图向一个表进行操作时,就会造成会话被堵塞,等待其他会话提交或回滚,因而造成死锁。 本教程操作环境:Wind…

    2025年2月24日
    200
  • 怎么查询oracle内存信息

    查询方法:1、利用“show parameter sga;”语句查看内存使用情况;2、利用“show sga”、“select * from v$sga;”和“select * from v$sgainfo;”语句查看可以共享的内存情况。 …

    2025年2月24日
    200
  • oracle的942错误是什么

    oracle的942错误表示的是表或者视图不存在;出现该错误的原因是exp版本与数据库版本不相同,虽然安装包已安装成功,但表中的相关信息并未更新,可用“select comp_id,version from dba_registry”查看。…

    2025年2月24日
    200
  • oracle怎么查询归档空间

    方法:1、用“select * from v$recovery_file_dest”语句查看归档空间实际使用情况;2、用“select * from v$flash_recovery_area_usage;”语句查看闪回恢复区空间使用情况。…

    2025年2月24日
    200
  • db2与oracle的sql语句有什么区别

    区别:1、db2用“create table a like b”创建类似表,oracle用“create table a as select * from b”;2、db2用varchar类型转换,oracle用“to_char”函数转换。…

    2025年2月24日 数据库
    200

发表回复

登录后才能评论