1、Oracle监听器
什么是监听器呢?首先引入 Oracle Concepts 中相关章节的释义:
The Oracle Net Listener, also called the listener, is a server-side process that listens for incoming client connection requests and manages traffic to the database. When a database instance starts, and at various times during its life, the instance contacts a listener and establishes a communication pathway to this instance.
译文:Oracle 网络监听器,也称为监听器,是一个服务器端进程,用于侦听传入的客户端连接请求,并管理到数据库的通信量。数据库实例启动时,及其存活期间的某些时候,实例会联系一个侦听器,并建立一个到此实例的通信路径。
2、客户端通过一个监听器建立连接的基础步骤
上面描述了监听器的概念,提到它是处理外部连接而存在,那么具体流程是怎样,如下:
①客户端进程或另一个数据库请求一个连接
②监听器选择一个适当的服务处理程序,来为客户端请求提供服务,并将请求转发到处理程序
③客户端进程直接连接到服务处理程序。之后监听器就不再参与其间的通信了。
3、本地服务名
客户端与服务器端的连接是通过客户端发出的请求,由服务器端监听对客户端连接进行合法性检测。
本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器(Oracle Names Server)等。
4、Oracle 网络连接方式
Oracle 网络连接方式支持异构数据库的连接,例如连接到 Sybase、Informix,DB2,SQL Server 等。
常见的协议:TCP/IP、TCP/IP with SSL、SDP、Named Pipes
5、客户端到服务器建立会话的相关术语
SQL> conn username/password@net_service_name
以上连接字符串包含用户名、密码、连接标识符,分解如下:
username:用户名
password:密码
/用与分隔用户及密码
@指示网络连接所需要的用户进程
(1)连接标识符
net_service_name:连接标识符,这是一个映射到连接描述符的简化。
它的存在主要是简化连接信息,同时避免敏感信息出现在连接符后,连接标识符可以为网络服务名、数据库服务名等。
(2)连接描述符
使用一种特殊格式来描述连接的具体信息,包含数据库所在IP地址、服务名、端口号等信息。
例如tnsname.ora文件中:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.23.6.8)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
6、服务名
客户端连接到实例的服务名,可以为该参数指定一个或多个服务名。
服务名默认与db_name一样,但Oracle推荐使用service_name而不是db_name,可以通过定义不同的服务名来区分不用的用户连接。如定义service_name=sales,service_name=it来分区销售部、it部的用户
7、配置文件及日志路径
tnsname.ora:用于配置本地客户端或远程客户端的本地名解析
listener.ora:用于配置监听器相关注册信息
10g:
$ORACLE_HOME/network/admin tnsnames.ora和listener.ora的路径
$ORACLE_HOME/network/admin/trace 日志路径
11g根据环境分为以下两种情况:
(1)ASM:grid管理监听,所以lintener的配置文件存放于 $ORACLE_HOME/network/admin。
但是tnsname.ora配置还是位于oracle原来的目录
日志路径:/u01/app/oracle/product/11.2.0/network/log
(2)FS:oracle管理监听,listener.ora、tnsname.ora位于
$ORACLE_HOME/network/admin
日志路径:/u01/app/grid/diag/tnslsnr/sid/listener/trace