图文深入理解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/[email protected]: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基本知识和排障案例及经验、性能调优等。

相关推荐
TDengine (老段)12 分钟前
TDengine 中的日志系统
java·大数据·数据库·物联网·时序数据库·tdengine·iotdb
DADIAN_GONG40 分钟前
incomplete command on Huawei switch
linux·运维·华为
水星灭绝42 分钟前
orangepi zero烧录及SSH联网
运维·ssh
kfepiza1 小时前
Debian编译安装mysql8.0.41源码包 笔记250401
数据库·笔记·mysql·debian·database
tjfsuxyy1 小时前
SqlServer整库迁移至Oracle
数据库·oracle·sqlserver
老王笔记1 小时前
MySQL统计信息
数据库·mysql
緣起緣落1 小时前
Linux(CentOS 7) 部署 redis 集群
linux·运维·服务器·redis·centos·集成学习
无名之逆2 小时前
[特殊字符] Hyperlane 框架:高性能、灵活、易用的 Rust 微服务解决方案
运维·服务器·开发语言·数据库·后端·微服务·rust
运维开发小白2 小时前
使用夜莺 + Elasticsearch进行日志收集和处理
运维·c#·linq