图文深入理解Oracle Network配置管理(一)

  1. List item

本篇图文深入介绍Oracle Network配置管理。

Oracle Network概述

Oracle Net 服务

Oracle Net 监听程序

<oracle_home>/network/admin/listener.ora
<oracle_home>/network/admin/sqlnet.ora

建立网络连接

要建立客户机或中间层连接,Oracle Net 要求客户机了解下列事项:

• 运行监听程序的主机(Host)

• 监听程序监视的端口(Port)

• 监听程序使用的协议(Protocol)

• 监听程序处理的服务名(Service Name)

建立连接

连接请求从用户或中间层应用程序(以下称为"用户进程")传递到监听程序(Listener)。

监听程序会接收一个 CONNECT 数据包,之后会检查此CONNECT 数据包请求的 Oracle Net 服务名是否有效?

• 如果没有请求的服务名(例如 tnsping 测试请求),监听程序会确认连接请求,不执行任何其它操作。

• 如果请求的服务名无效,则监听程序会将错误代码传输给该用户进程。

用户会话

• 如果 CONNECT 数据包请求了一个有效的服务名,则监听程序将衍生一个新的进程来处理该连接。此新进程称为"服务器进程"(Server Process)。

• 监听程序会传递初始化信息给服务器进程,包括用户进程的地址信息。并把所有工作都传递到服务器进程处理。

• 服务器进程将检查用户的验证身份证明(通常为用户密码),如果身份证明有效,则创建一个用户会话(Session)。

配置和管理 Oracle Network 的工具

• Enterprise Manager: Home > Listener > Related_Links: Net

Services Administration

• Oracle Net Manager (netmgr)

• Oracle Net Configuration Assistant (netca)

• 命令行工具 (lsnrctl 或 srvctl)

• 网络配置文件:

--listener.ora

-- tnsnames.ora

-- sqlnet.ora

可以使用 lsnrctl 命令(或通过 OEM)控制 Oracle Net 监听程序。可以使用命令行或 LSNRCTL 提示符发出监听控制程序的命令。

• 命令行语法:

$ lsnrctl <command name>
$ lsnrctl start
$ lsnrctl status

• 提示符语法:

LSNRCTL> <command name>
LSNRCTL> start
LSNRCTL> status

使用 SRVCTL 启动和停止监听程序

如果配置了 Oracle Restart,则应使用 SRVCTL 来管理监听程序。

$ srvctl -h
$ srvctl start listener
$ srvctl stop listener
$ srvctl start listener --l mylistener
$ srvctl status listener

数据库(动态/静态)服务注册

• 动态服务注册:DB 实例会在启动数据库时向默认监听程序自动进行注册,不需要其它的监听程序配置。

• 静态服务注册:为监听程序配置文件添加一个数据库服务列表,监听程序为之提供服务

Oracle Net 命名方法

Oracle Net 支持多种解析连接信息的方法:

• 简便连接命名(EZCONNECT):无需配置,直接使用 TCP/IP 连接字符串(由主机名、可选端口和服务名组成),格式如下:

CONNECT username/password@host[:port][/service_name]

• 本地命名:使用本地 tnsnames.ora 配置文件

• 目录命名:使用符合 LDAP 的集中式目录服务器

• 外部命名:使用 Oracle 支持的第三方服务命名方式,如:

-- 网络信息服务 (NIS)

-- 分布式计算环境 (DCE) 单元目录服务 (CDS)

简便连接(EZConnect)

• 默认启用此方式

• 不需要进行客户机配置,连接字符串采用以下形式:

<username>/<password>@<hostname>:<listener port>/<service name>

• 仅支持 TCP/IP(无 SSL),默认 port 1521

• 不支持高级连接选项,如:

-- 连接时故障转移

-- 源路由

-- 负载平衡

SQL> CONNECT hr/hr@oracle.example.com:1521/orcl

本地命名

本地命名的好处是:数据库用户仅需要记住一个短别名,而不必记住简便连接所需的长连接字符串。

• 本地已知服务列表存储在以下配置文件中,默认位置在:

<oracle_home>/network/admin/tnsnames.ora

• tnsnames.ora 文件的位置也可以使用 TNS_ADMIN 环境变量指定

• 需要客户机名称解析文件(Hosts 文件)

• 支持所有的 Oracle Net 协议

• 支持高级连接选项,如:

-- 连接时故障转移、源路由、负载平衡

目录命名

目录命名的好处是:只需将更新的服务名添加到 LDAP 目录,此服务名便可供用户在连接时使用,无需再到各个客户端修改设定。

• 需要加载了 Oracle Net 名称解析信息的 LDAP:

-- Oracle Internet Directory -- Microsoft Active Directory Services

• 支持所有的 Oracle Net 协议

• 支持高级连接选项

外部命名方法

• 外部命名类似于目录命名,是使用了受支持的非 Oracle 命名服务,包括:

-- 网络信息服务 (NIS) 外部命名

-- 分布式计算环境 (DCE) 单元目录服务 (CDS)

测试 Oracle Net 连接

tnsping 实用程序测试 Oracle Net 服务别名:

• 确保客户机与 Oracle Net 监听程序之间的连接

• 不验证所请求的服务是否可用

• 支持简便连接名称解析:

tnsping host01.example.com:1521/orcl

• 支持本地命名和目录命名:

tnsping orcl

用户会话:专用服务器进程(Dedicated Server Processes)

用户会话:共享服务器进程(Shared Server Processes)

不能使用共享服务器的情况

不能使用共享服务器执行某些类型的数据库工作:

• 数据库管理(包括:启动和关闭实例、创建表空间和数据文件等需要由 DBA 执行的任务)

• 备份和恢复操作

• 批处理和批量加载操作

• 必须处理大批数据的数据仓库操作。

配置数据库之间的通信

• 在站点之间发送数据或消息时,需要在双方站点上进行网络配置。

• 必须配置以下项:

-- 网络连接(例如 tnsnames.ora)

-- 数据库链接(PUBLIC DATABASE LINK )

CREATE DATABASE LINK <remote_global_name>
CONNECT TO <user> IDENTIFIED BY <pwd>
USING '<connect_string_for_remote_db>';

未完待续。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB基本知识和排障案例及经验、性能调优等。

相关推荐
不撸先疯。7 分钟前
docker镜像源配置、换源、dockerhub国内镜像最新可用加速源(仓库)
运维·docker·容器·dockerhub
荼靡60319 分钟前
shell(三)
linux·服务器·数据库
尘浮生29 分钟前
Java项目实战II基于SpringBoot的共享单车管理系统开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·微信小程序·小程序
Stark-C31 分钟前
功能齐全,支持协作 | Docker部署一款支持多人共享的私密浏览器『n.eko』
运维·docker·容器
嘟嘟Listing1 小时前
设置jenkins时区记录
运维·jenkins
嘟嘟Listing1 小时前
jenkins docker记录
java·运维·jenkins
伴野星辰1 小时前
小乌龟TortoiseGit 安装和语言包选择
linux·运维·服务器
枫叶丹41 小时前
【在Linux世界中追寻伟大的One Piece】多线程(一)
java·linux·运维
残念ing1 小时前
【Linux】—简单实现一个shell(myshell)
linux·运维·服务器
明月心9521 小时前
linux mount nfs开机自动挂载远程目录
linux·运维·服务器