什么是oracle监听
oracle监听是个服务器端进程,负责监听客户端发来的请求,能够给客户端电脑和数据库电脑建立数据的链接;oracle监听收到request后派生出server process提供服务,会根据数据库配置提供专有和共享两种模式。
本教程操作环境: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参数了
配置监听可以通过netca图形配置,也可以命令配置
默认监听的名称LISTENER,配置如上,实际上没有这个listener.ora,默认listen也是可以正常运行的那么下面增加一个在1522端口的非默认动态监听,名称叫listener2
首先netmgr图形添加一个监听
或者编辑listener.ora来添加监听也行
然后修改tnsnames.ora添加一个listener2的字符串,以便修改local_listener参数,(就是把监听中的那一段复制到tnsnames.ora中)
设置下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中配置多个地址的字符串
再设置alter systemset local_listener='LISTENER2';
在共享服务器模式下,可以配置listener的一个参数叫做dispatchers,把这个分派器注册到一个非默认监听
ALTER SYSTEM SET DISPATCHERS=”(PROTOCOL=tcp)(LISTENER=lsnr2)”;
select service_id,name from vactiveservices可以查出,前面2个服务是注册到监听的,后面2个是Oracle有两个内部的服务,SYSBACKGROUND是后台进程使用的,SYS$USERS提供给没有指定服务的用户会话使用
service_names是服务名,如果为空,会把db_name.db_domain 注册到监听
推荐教程:《Oracle视频教程》
以上是什么是oracle监听的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

要查询 Oracle 表空间大小,请遵循以下步骤:确定表空间名称,方法是运行查询:SELECT tablespace_name FROM dba_tablespaces;查询表空间大小,方法是运行查询:SELECT sum(bytes) AS total_size, sum(bytes_free) AS available_space, sum(bytes) - sum(bytes_free) AS used_space FROM dba_data_files WHERE tablespace_

数据导入方法:1. 使用 SQLLoader 实用程序:准备数据文件、创建控制文件、运行 SQLLoader;2. 使用 IMP/EXP 工具:导出数据、导入数据。提示:1. 大数据集推荐 SQL*Loader;2. 目标表应存在,列定义匹配;3. 导入后需验证数据完整性。

Oracle 安装失败的卸载方法:关闭 Oracle 服务,删除 Oracle 程序文件和注册表项,卸载 Oracle 环境变量,重新启动计算机。若卸载失败,可使用 Oracle 通用卸载工具手动卸载。

创建 Oracle 表涉及以下步骤:使用 CREATE TABLE 语法指定表名、列名、数据类型、约束和默认值。表名应简洁、描述性,且不超过 30 个字符。列名应描述性,数据类型指定列中存储的数据类型。NOT NULL 约束确保列中不允许使用空值,DEFAULT 子句可指定列的默认值。PRIMARY KEY 约束标识表的唯一记录。FOREIGN KEY 约束指定表中的列引用另一个表中的主键。请参见示例表 students 的创建,其中包含主键、唯一约束和默认值。

在 Oracle 中查看实例名的方法有三种:命令行中使用 "sqlplus" 和 "select instance_name from v$instance;" 命令。在 SQL*Plus 中使用 "show instance_name;" 命令。通过操作系统的任务管理器、Oracle Enterprise Manager 或检查环境变量 (Linux 上的 ORACLE_SID)。

Oracle 视图加密允许您加密视图中的数据,从而增强敏感信息安全性。步骤包括:1) 创建主加密密钥 (MEk);2) 创建加密视图,指定要加密的视图和 MEk;3) 授权用户访问加密视图。加密视图工作原理:当用户查询加密视图时,Oracle 使用 MEk 解密数据,确保只有授权用户可以访问可读数据。

Oracle 提供多种去重查询方法:DISTINCT 关键字返回每列的唯一值。GROUP BY 子句对结果分组并返回每个分组的非重复值。UNIQUE 关键字用于创建仅包含唯一行的索引,查询该索引将自动去重。ROW_NUMBER() 函数分配唯一数字并过滤出仅包含第 1 行的结果。MIN() 或 MAX() 函数可返回数字列的非重复值。INTERSECT 运算符返回两个结果集的公共值(无重复项)。

在 Oracle 中创建用户需遵循以下步骤:使用 CREATE USER 语句创建新用户。使用 GRANT 语句授予必要权限。可选:使用 RESOURCE 语句设置配额。配置其他选项,如默认角色和临时表空间。
