oracle监听器

客户端访问数据库实例是通过监听器创建连接服务器的。

 

 如果某个用户希望通过其用户进程建立针对实例的会话,可以执行如下语句:

connect  user/pwd@orcl

其中@符号指示了网络连接所需要的用户进程。如果省略@符号,以及连接字符串‘orcl’,那么用户进程就认定希望连接的实例在本地计算机上运行。

即使本地连接,也会使用到oracle net;

oracle net解析连接字符串:

使用的协议、运行数据库侦听的ip地址、监听器监视传入连接请求的端口以及希望连接的实例名称(这个名称不需要与连接字符串相同)。如果不是ip而是主机名,则这个主机名被dns服务器进一步解析为ip地址。

监听器在listener.ora中定义,此文件的默认存储位置为ORACLE_HOME/network/admin/listener.ora,此文件中可以创建多个不同的监听地址。

 

 要创建监听器只需要在listener.ora文件中创建一个条目,并启动它即可。

 

数据库注册

针对一个实例产生服务器进程需要使用侦听器。通过“注册”过程,监听器能够查找到所连接的实例。

如果没有使用RAC,那么监听器与实例必须在同一台计算机上运行。在RAC环境中,集群中任何计算机上的任何监听器都能够连接任何计算机上的任何实例。

数据库注册实例的方法有静态(static)和动态两种(dynamic)两种。

静态就是编辑listener.ora文件

动态注册

PMON进程将每一分钟自动执行注册,但可以在启动实例后的任何时间,使用下列命令强制重新注册:

alter system register;

如果监听器在默认端口1521上运行,则将完全不需要配置动态注册。所有实例将自动查看相应端口上本地主机上的监听器,如果找到,则将进行注册。但是,如果监听器不在主机名标识的地址上的默认端口运行,则必须通过设置local_listener参数和重新注册来指定监听器的位置,例如:

alter system set local_listener=list2;
alter system register;

在本例中,local_listener用名称指定。只有将此名称解析为地址,实例才能找到监听器并执行注册。一种替代方法是在参数中硬编码监听器的地址:

alter system set local_listener='(adress=(protocol=tcp)(host=127.0.0.1)(port=1522))';

 

名称解析

1、直接解析easy connect 

connect store/admin123@jdsa.vdoos.das.sds:1522/orag

2、本地命名

用户可以为连接 字符串提供一个oracle net 服务别名,该别名通过一个本地文件解析为完整的网络地址(包括协议、地址、端口、服务名或实例名)。这个本地文件是臭名昭著的、困扰DBA多年的tnsnames.ora文件。下面示例给出了一个tnsnames.ora文件。

 

 服务别名、服务名和实例名之间不需要存在 任何 关系 ,不过为了便于使用,这些名称通常是相同的。

监听器控制实用程序

命令行实用程序lsnrctl可以启动 和关闭监听器 。

如果没有使用默认的名称LISTENER,就必须指定监听器的名称。

 

 lsnrctl有关的一些命令,如果这些命令没有指定监听器名称,那么命令将针对名为listener的 监听器执行。

在配置oracle net时,将牵涉3个关键重要文件:

 

 

针对客户端连接请求的一般解析逻辑

 

posted @ 2022-09-09 14:39  wongchaofan  阅读(233)  评论(0编辑  收藏  举报