学习目标
使用Enterprise Manager执行操作
-创建其它监听程序
-创建Oracle Net服务别名
-配置连接时故障转移
-控制Oracle Net监听程序
使用tnsping 测试Oracle Net的连接
确定何时使用共享服务器以及何时使用专用服务器
《Oracle Database Net Services Administrator‘s Guide》
《Oracle Database Net Services Reference》
Oracle Net服务
客户端或中间层到Oracle服务器端二者间创建连接,并且负责信息交换。
客户端或中间层(应用程序<-->Oracle Net)---TCP/IP---(监听程序)---数据库(RDBMS<-->Oracle Net)
Oracle Net配置文件
Oracle Net服务最常见的用法是传入数据库连接。通过配置其它网络服务,可允许访问外部代码库(EXTPROC)以及通过Oracle异构服务将Oracle实例连接到非Oracle数据源(Sybase,Informix,DB2和SQL Server)
Oracle Net监听程序
监听程序,是将所有非本地用户连接到Oracle实例的网关。单个监听程序可用于多个数据库实例以及成千上万个客户端连接。
安装Grid Infrastructure后,Oracle Net监听程序从其软件安装目录<Grid_home>启动。
建立网络连接
Oracle Net连接需了解事项:
-运行监听程序的主机
-监听程序监听的端口
-监听程序使用的协议
-监听程序处理的服务名
Oracle Net名称解析
建立连接
Oracle Net名称解析完成后,连接请求传递至监听程序。监听程序会接收一个CONNECT数据包,并检查请求包的Oracle Net服务名是否有效。
用户会话
CONNECT数据包请求了一个有效的服务名,则监听程序衍生一个“服务器进程”。监听程序会连接该进程并传递初始化信息,用户进程地址信息。此时监听程序不再处理连接,所有工作都会由服务器进程处理。
服务器进程首先检查用户的身份证明(密码),有效则创建一个用户会话。
专用服务器进程
-对通过应用程序发出的所有SQL语句进行语法分析,然后运行
-在数据库缓冲区高速缓存中查找执行SQL语句所需的数据块
-从磁盘上的数据文件中将必要的数据块读入到系统全局区(SGA)中的数据库缓冲区高速缓存部分(如果SGA中没有这些数据块)
-管理所有排序活动。排序区是用于处理排序的内存区;它包含在程序全局区(PGA)关联的内存部分。
-将结构返回到用户进程,以便应用程序可以处理这些信息
-读取审计选项并将用户进程报告给审计目标
配置和管理Oracle Network的工具
Enterprise Manager的“Net Services Administration网络服务管理”
提供了配置和管理Oracle Net服务的集成环境
Oracle Net Manager
提供了图形化用户界面(GUI),可针对本地客户端或服务器主机上的Oracle主目录配置Oracle Net服务。
网络组件
-命令:定义简单的名称和连接标识符,并将它们映射至连接描述符以确定网络位置和服务标识。Oracle Net Manager支持在本地tnsnames.ora文件或集中式目录服务中配置连接描述符
-命令方法:配置连接标识符解析为连接描述符的不同方法
-概要文件:配置用于在客户端或服务器上启用和配置Oracle Net功能的首选项
-监听程序:创建和配置监听程序以接收客户端连接
Oracle Net Configuration Assistant
安装Oracle软件时通过Oracle Universal Installer启动Oracle Net Configuration Assistant。
命令行
监听程序控制
使用lsnrctl命令行控制Oracle Net监听程序
$lsnrctl
LSNRCTL>help
lsnrctl可以完成以下工作:
-启动监听程序
-停止监听程序
-检查监听程序的状态
-根据配置文件参数初始化监听程序
-动态配置多个监听程序
-更改监听程序口令
基本命令语法
LSNRCTL>command [listener_name]
命令行语法:
$lsnrctl <command name>
$lsnrctl start
$lsnrctl stop
$lsnrctl status
提示符语法:
LSNRCTL><command name>
LSNRCTL>start
LSNRCTL>status
命令行语法通常用于执行单个命令或脚本命令。如果计划执行若干个连续的lsnrctl命令,则使用提示符语法更高效。如果监听程序受到口令的保护,则必须使用提示符语法。
使用SRVCTL启动和停止监听程序
由Oracle restart管理的任何监听程序,可以使用srvctl启动/停止它并查看其状态。
-srvctl -h
-srvctl start listener
-srvctl stop listener
-srvctl start listener -l mylistener
-srvctl status listener
监听程序主页
-最近24小时内监听程序的状态和可用性
-监听程序版本和Oracle主目录
-监听程序的第一个监听地址
-用于启动监听程序的配置文件的位置
-监听程序的启动时间和主机信息
-Oracle restart 状态
Net Services Administratrion(网络服务管理)页
-监听程序:添加,删除,启动和停止监听程序,以及更改其跟踪特性和事件记录特性。此外,还可以查询监听程序的控制状态报表。
-目录命名:可以定义简单的名称和连接标识符,并将定义的内容映射至连接描述符以确定网络位置和服务标识。将数据库服务,Oracle Net服务和Oracle Net服务别名保存到集中式目录服务中。
-本地命名:将Oracle Net服务名保存在tnsnames.ora文件中
-概要文件:配置sqlnet.ora参数
-文件位置:更改Oracle Net服务的配置文件的位置
数据库服务注册
-动态服务注册:Oracle8i和更高版本的实例会在启动数据库时向默认监听程序自动进行注册。
-静态服务注册:Oracle DB的早期版本并不自动向监听程序进行注册,因此,要求监听程序配置文件包含一个列表,其中含有监听程序为之提供服务的所有数据库服务。
静态服务注册,使用场景:
-监听程序所在的端口不是默认的1521端口
-应用程序要求进行静态服务注册
-服务名:SERVICE_NAMES初始化参数指定客户端可用来连接到实例的一个或多个名称。实例向监听程序注册其服务名。
SERVICE_NAMES = sales.example.com,eurosales.example.com
命名方法
Oracle Net支持多种解析连接信息的方法:
-简单连接命名:使用TCP/CP连接字符串
CONNECT username/password@host[:port][/service_name]
-默认启用此方式
-不需要进行客户端配置
-仅支持TCP/IP(无SSL)
-不支持高级连接选项(如:连接时故障转移,源路由,负载平衡)
-本地命名:使用本地配置文件
连接描述符存储在客户端 tnsnames.ora的本地配置文件
-需要客户端名称解析文件
-支持所有的Oracle Net协议
-支持高级连接选项(如:连接时故障转移,源路由,负载平衡)
-目录命名:使用符合LDAP的集中式目录服务器
-需要加载了Oracle Net名称解析信息的LDAP
-Oracle Internet Directory
-Microsoft Active Directory Services
-支持所有的Oracle Net协议
-支持高级连接选项
-外部命名:使用受支持的非Oracle命名服务,概念上讲,外部命名类似于目录命名。
-使用受支持的非Oracle命名服务
-包括
-网络信息服务(NIS)外部命名
-分布式计算环境(DCE)单元目录服务(CDS)
高级连接选项
本地命名和目录命名,Oracle Net支持的高级连接选项
-连接时故障转移
-源路由
-负载平衡
测试Oracle Net连接
-确保客户端与Oracle Net监听程序之间的连接
-不验证所请求的服务是否可用
-支持简单连接名称解析
tnsping host01.example.com:1521/orcl
-支持本地命名和目录命名
tnsping orcl
用户会话:
专用服务器进程,服务器进程与用户之间的比例是一比一。每个服务器进程都会使用系统资源,包括CPU和内存。
专用服务器体系结构的资料需求对系统产生了负面影响,则需要:
-通过增加更多的内存和额外的CPU
-使用Oracle共享服务器进程体系结构
共享服务器进程,每个参与共享服务器进程体系结构的服务均至少具有一个(通常多个)分派程序进程。与专用服务器进程不同,单个分派程序可以管理数以百计的用户会话。
共享服务器进程接管专用服务器进程的大部分工作,而是将用户请求传递到位于SGA共享池部分的公用队列。
用户会话存储在PGA中的部分内存结构也迁移至共享内存位置(默认是共享池,如果有配置大型池,则在大型池中)
SGA和PGA
使用专用服务器或共享服务器时,SGA和PGA的内存不同:
-所有SQL语句的文本和语法分析均存储在SGA中。
-游标状态包含SQL语句的运行时内存值,例如检索的行
-用户会话数据库包括安全性和资源用量信息。
-堆栈空间包含进程的局部变量
SGA中为每个会话分配数据空间,可以通过PRIVATE_SGA资源限制参数来限制每个会话可以分配的空间数量。
不能使用共享服务器的情况
-数据库管理
-备份和恢复操作
-批处理和批量加载操作
-数据仓库操作