Oracle Net Services
- 建立网络会话之后,Oracle Net 充当客户机应用程序与数据库服务器的数据信使。
- 在客户机计算机上,Oracle Net 是一个用于连接到数据库的后台组件。
- 在数据库服务器上,Oracle Net 包括一个称为监听程序的活动进程。
- Oracle Net Listener 负责协调数据库与外部应用程序之间的连接。
- Oracle Net Services 最常见的用法是允许传入数据库连接,将oracle实例连接到非oracle数据源
Oracle Net Listener
- Oracle Net Listener 是所有非本地用户连接到 Oracle 实例的网关。
建立连接过程
- 建立网络连接
- 运行监听程序的主机
- 监听程序监视的端口
- 监听程序使用的协议
- 监听程序处理的服务名
- 建立连接
- Oracle Net Names Resolution 完成之后,连接请求会从用户或中间层应用程序(此后称为用户进程)传递到 Oracle Net Listener。监听程序会接收一个连接数据包,之后会检查这个连接数据包请求的 Oracle Net 服务名是否有效。
- 如果未请求服务名,监听程序会通知连接请求,此外不执行任何其它操作。如果请求的服务名无效,监听程序会向用户进程传输一个错误代码。
- 用户会话
- 如果连接数据包请求的服务名有效,监听程序会衍生一个新进程来处理连接。这个新进程被称为“服务器进程”(PGA)。监听程序会连接到此服务器进程,并向其传递初始化信息,其中包括用户进程的地址信息。此时,监听程序不再处理连接,所有工作都会传递到服务器进程。服务器进程会检查用户的验证身份证明(通常为口令),如果身份证明有效,就会创建一个用户会话。
- PGA的作用
- 分析和运行通过应用程序发布的任何 SQL 语句。
- 检查数据块执行 SQL 语句所需的数据库缓冲区高速缓存。
- 从磁盘数据文件读取必要的数据块,如果 SGA 中尚未存在数据块,就将其传入系统全局区 (SGA) 的数据库缓冲区高速缓存部分。
- 管理所有排序活动。所谓的程序全局区 (PGA) 是服务器进程的一部分,其中包含一个称为排序区域的内存区,这个内存区用于处理排序。
- 以某种方式将结果返回到用户进程,使应用程序可以处理信息。
- 读取审计选项并将用户进程报告给审计目标。
配置和管理 Oracle Network 的工具
- Enterprise Manager
- Oracle Net Manager
- Oracle Net Configuration Assistant
- 命令行
监听程序控制实用程序
- 如果没有指定其它监听程序名称或执行 SET CURRENT_LISTENER 命令,这个命令就充当默认的监听程序(名为“LISTENER”)
- UNIX 或 Linux 命令行语法
-
- $ lsnrctl start
- $ lsnrctl status
- 提示符语法
- $ lsnrctl 进入LSNRCTL
- LSNRCTL> start
- LSNRCTL> status
- 监听名不是LISTENER的情况
-
- LSNRCTL> set cur backup
- LSNRCTL> stop
监听程序主页
单击 Enterprise Manager 中的“Database(数据库)”主页上的“Listener(监听程序)”链接来访问“Listener(监听程序)”主页。
网络服务管理页
- 监听程序:可以添加、删除、启动和停止监听程序,还可更改其跟踪特性和事件记录特性。
- 目录命名:可以定义简单的名称和连接标识符,并将定义的内容映射至连接描述符以确定网络位置和服务标识。
- 本地命名:将网络服务名称保存在 tnsnames.ora 文件中。
- 概要文件:配置 sqlnet.ora参数
- 文件位置:更改 Net Services 配置文件的位置
创建监听程序
数据库服务注册
- 动态服务注册
- 静态服务注册
- 单击“Edit Listener(编辑监听程序)”页上的“Static Database Registration(静态数据库注册)”,然后单击“Add(添加)”按钮
- 重新加载或重启监听服务
Oracle Net命名方法
- 简便连接:CONNECT username/password@host[:port][/service_name] (默认port1521,不提供服务名则默认服务名与主机名相同)
- 默认情况下处于启用状态
- 不需要进行客户端配置
- 仅支持 TCP/IP(无 SSL)
- 不支持高级连接选项
- 本地命名
- 本地命名方法将连接描述符(由其网络服务名标识)存储在客户机中名为tnsnames.ora的本地配置文件中(默认位置<oracle_home>/network/admin/tnsnames.ora。)
- 需要客户端名称解析文件
- 支持所有 Oracle Net 协议
- 支持高级连接选项
- 数据库管理员 (DBA) 必须首先分发更新的 tnsnames.ora 文件,用户才能连接到新服务或修改过的服务
- 目录命名:将连接标识符存储在符合轻型目录访问协议 (LDAP) 的集中式目录服务器中
- 新服务名添加到LDAP 目录后,即可供用户连接使用
- 需要加载了 Oracle Net 名称解析信息的 LDAP
- 支持所有 Oracle Net 协议
- 外部命名:类似于目录命名
- 使用支持的非 Oracle 命名服务
- 配置服务别名
- 高级连接选项
-
- 连接时故障转移:则别名中会列出两个或多个监听程序地址。如果第一个地址不可用,则尝试使用第二个地址。
- 负载平衡:Oracle Net 会随机从地址列表中选择一个地址
- 源路由
测试 Oracle Net 连接性
- 确保客户机与 Oracle Net 监听程序之间的连接性
- 不验证所请求的服务是否可用
- 支持简便连接名称解析
- tnsping db.us.oracle.com:1521/dba10g
- 支持本地和目录命名
- tnsping orcl
专用服务器和和共享服务器
- 专用服务器
- 服务器进程和用户进程之间是一对一的关系
- 每个服务器进程都使用系统资源,包括 CPU 周期和内存。(所以占用的内存比较高)
- 共享服务器
- 共享服务器体系结构的每个服务至少有一个(通常为多个)分派程序进程
- 连接请求到达时,维护一个列表,此列表提供了可用于每个服务名的分派程序,以及每个分派程序的连接负载
- 单个分派程序可以管理成百上千个用户会话
- 通常存储在 PGA 中的大部分内存结构必须位于共享内存位置(默认情况下,在共享池中)
- SGA 和 PGA
- 用户会话数据存储在 SGA 中
- 共享服务器:连接共享
- 不能使用共享服务器的情况
- 数据库管理
- 备份和恢复操作
- 批处理和批量加载操作
- 数据仓库操作