使用Oracle Net 服务可建立从客户机或中间层应用程序到Oracle 服务器的网络连接。建立网络会话之后,Oracle Net 充当客户机应用程序与数据库服务器的数据信使。它负责建立并维护客户机应用程序和数据库服务器之间的连接,并负责在二者之间交换消息。Oracle Net(或模拟Oracle Net 功能的程序,如Java 数据库连接)位于需要与数据库服务器通信的每台计算机上。
在客户机计算机上,Oracle Net 是供应用程序连接数据库的后台组件。
在数据库服务器上,Oracle Net 包含一个称为“Oracle Net 监听程序”的活动进程,该进程负责协调数据库与外部应用程序之间的连接。
Oracle Net 服务最常见的用法是传入数据库连接。通过配置其它网络服务,可允许访问外部代码库(EXTPROC) 以及通过Oracle 异构服务将Oracle实例连接到非Oracle 数据源,如Sybase、Informix、DB2 和SQL Server。
Oracle Net 监听程序(简称监听程序)是将所有非本地用户连接到Oracle 实例的网关。
单个监听程序可用于多个数据库实例以及成千上万个客户机连接。
Enterprise Manager 是访问监听程序的一种方式。可以控制实际监听程序以及口令保护和日志文件位置等一般参数的配置。
高级管理员还可以根据需要,使用标准操作系统(OS) 文本编辑器(如vi或gedit)手动编辑配置文件来配置Oracle Net 服务。
注:安装了用于独立服务器的Grid Infrastructure 后,Oracle Net 监听程序从其软件安装目录() 启动。需要从这一软件安装中运行监听程序,以便能够连接到ASM 实例。默认使用这一监听程序监听安装在同一服务器上的所有数据库实例。
- 建立网络连接
要建立客户机或中间层连接,Oracle Net 要求客户机了解下列事项:
• 运行监听程序的主机
• 监听程序监视的端口
• 监听程序使用的协议
• 监听程序处理的服务名
如果要让应用程序通过Oracle Net 监听程序连接到某服务,应用程序必须拥有关于该服务的信息,包括监听程序所驻留的地址或主机、监听程序接受的协议,以及监听程序监视的
端口。在确定监听程序的位置之后,应用程序所需的最后一项信息就是它所要连接到的服务名。
Oracle Net“名称解析”就是确定该连接信息的过程。
- 建立连接
Oracle Net 名称解析完成之后,连接请求将从用户或中间层应用程序(以下称为“用户进程”)传递到监听程序。监听程序会接收一个CONNECT数据包,之后会检查此CONNECT数据包请求的Oracle Net 服务名是否有效。
如果没有请求服务名(例如tnsping请求),监听程序会确认连接请求,此外不执行任何其它操作。如果请求的服务名无效,则监听程序会将错误代码传输给该用户进程。
如果CONNECT数据包请求了一个有效的服务名,则监听程序将衍生一个新的进程来处理该连接。此新进程称为“服务器进程”。监听程序会连接到该进程并传递初始化信息,包
括用户进程的地址信息。此时,监听程序不再处理连接,所有工作都会传递到服务器进程。服务器进程将检查用户的验证身份证明(通常为口令),如果身份证明有效,则创建一个
用户会话。
专用服务器进程:建立会话后,服务器进程随即充当服务器上的用户代理。服务器进程负责以下工作:
• 对通过应用程序发出的所有SQL 语句进行语法分析,然后运行
• 在数据库缓冲区高速缓存中查找执行SQL 语句所需的数据块
• 从磁盘上的数据文件中将必要的数据块读入到系统全局区(SGA) 的数据库缓冲区高速缓存部分(如果SGA 中没有这些数据块)
• 管理所有排序活动。排序区是用于处理排序的内存区;它包含在与程序全局区(PGA) 关联的内存部分中
• 将结果返回到用户进程,以便应用程序可以处理这些信息
• 读取审计选项并将用户进程报告给审计目标
- 配置和管理Oracle Network 的工具
• Enterprise Manager 的“Net Services Administration(网络服务管理)”页
• Oracle Net Manager
• Oracle Net Configuration Assistant
• 命令行
配置和管理Oracle Network 的工具
使用以下工具和应用程序管理Oracle Network 配置:
• Enterprise Manager:提供了配置和管理Oracle Net 服务的集成环境。使用Enterprise Manager 可针对多个文件系统上的Oracle 主目录配置Oracle Net 服务,还可管理监听程序。
• Oracle Net Manager:提供一个图形用户界面(GUI),通过此界面可针对本地客户机或服务器主机上的Oracle 主目录配置Oracle Net 服务。通过Oracle Net Manager,可
针对本地客户机或服务器主机上的Oracle 主目录配置Oracle Net 服务。可以使用Oracle Net Manager 配置以下网络组件:
- 命名:定义简单的名称和连接标识符,并将它们映射至连接描述符以确定网络位置和服务标识。Oracle Net Manager 支持在本地tnsnames.ora文件或集中式目录服务中配置连接描述符
- 命名方法:配置将连接标识符解析为连接描述符的不同方法
- 概要文件:配置用于在客户机或服务器上启用和配置Oracle Net 功能的首选项
- 监听程序:创建和配置监听程序以接收客户机连接
• Oracle Net Configuration Assistant:安装Oracle 软件时通过Oracle Universal Installer 启动。使用Oracle Net Configuration Assistant 可配置Oracle DB 的监听协议地址和
服务信息。在典型的数据库安装期间,Oracle Net Configuration Assistant 会自动配置一个名为LISTENER的监听程序,该监听程序具有数据库的TCP/IP 监听协议地址。
如果执行定制安装,则Oracle Net Configuration Assistant 会提示配置所选择的监听程序名称和协议地址。在安装数据库之后,使用Oracle Net Configuration Assistant 进行初始网络配置。然后,可以使用Oracle Enterprise Manager 和Oracle Net Manager 配置和管理你的网络。
• 命令行:用于启动、停止监听程序进程或查看监听程序进程的状态。由操作系统用户启动或停止监听程序。如果未启动监听程序,则无法使用Enterprise Manager。
- 监听程序控制实用程序
可以使用lsnrctl命令行实用程序(或通过EM)控制
Oracle Net 监听程序。
[oracle@rtest ~]$ . oraenv
ORACLE_SID = [test0924] ?
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@rtest ~]$ lsnrctl
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 10-OCT-2013 15:50:26
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> help
The following operations are available
An asterisk (*) denotes a modifier or extended command:
start stop status
services version reload
save_config trace spawn
change_password quit exit
set* show*
监听程序控制实用程序
启动实例时,监听程序进程会建立一个指向Oracle DB 的通信路径。随后,监听程序可接受数据库连接请求。
使用监听程序控制实用程序可控制监听程序。使用lsnrctl,可以:
• 启动监听程序
• 停止监听程序
• 检查监听程序的状态
• 根据配置文件参数重新初始化监听程序
• 动态配置多个监听程序
• 更改监听程序口令
该实用程序的基本命令语法为:
LSNRCTL> command [listener_name]
发出lsnrctl命令时,如果没有指定其它监听程序名称或执行SET CURRENT_LISTENER命令,此命令将作用于默认的监听程序(名为LISTENER)。如果监听程序名为LISTENER,则可省略listener_name参数。
注:在Grid Infrastructure 主目录和Oracle DB 主目录中都有lsnrctl 实用程序。在使用此
实用程序之前,务必将环境变量设置为合适的主目录。