Oracle DB配置Oracle Network环境(1)

2022-03-11 00:00:00 程序 连接 服务 配置 监听

使用Enterprise Manager执行以下操作:

创建其它监听程序

创建Oracle Net 服务别名

配置连接时故障转移

控制Oracle Net 监听程序

使用tnsping测试Oracle Net 的连接

确定何时使用共享服务器以及何时使用专用服务器

 

  • Oracle Net 服务

使用Oracle Net 服务可建立从客户机或中间层应用程序到Oracle 服务器的网络连接。建立网络会话之后,Oracle Net 充当客户机应用程序与数据库服务器的数据信使。它负责建立并维护客户机应用程序和数据库服务器之间的连接,并负责在二者之间交换消息。Oracle Net(或模拟Oracle Net 功能的程序,如Java 数据库连接)位于需要与数据库服务器通信的每台计算机上。

在客户机计算机上,Oracle Net 是供应用程序连接数据库的后台组件。

在数据库服务器上,Oracle Net 包含一个称为“Oracle Net 监听程序的活动进程,该进程负责协调数据库与外部应用程序之间的连接。

Oracle Net 服务常见的用法是传入数据库连接。通过配置其它网络服务,可允许访问外部代码库(EXTPROC) 以及通过Oracle 异构服务将Oracle实例连接到非Oracle 数据源,如SybaseInformixDB2 SQL Server

 

  • Oracle Net 监听程序

Oracle Net 监听程序(简称监听程序)是将所有非本地用户连接到Oracle 实例的网关。

单个监听程序可用于多个数据库实例以及成千上万个客户机连接。

Enterprise Manager 是访问监听程序的一种方式。可以控制实际监听程序以及口令保护和日志文件位置等一般参数的配置。

管理员还可以根据需要,使用标准操作系统(OS) 文本编辑器(如vigedit)手动编辑配置文件来配置Oracle Net 服务。

注:安装了用于独立服务器的GridInfrastructure 后,Oracle Net 监听程序从其软件安装目录(<Grid_home>)启动。需要从这一软件安装中运行监听程序,以便能够连接到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 NetConfiguration Assistant 会自动配置一个名为LISTENER的监听程序,该监听程序具有数据库的TCP/IP 监听协议地址

如果执行定制安装,则Oracle NetConfiguration 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 withvalue /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 orextended 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参数。

注:在GridInfrastructure 主目录和Oracle DB 主目录中都有lsnrctl 实用程序。在使用此实用程序之前,务必将环境变量设置为合适的主目录。

 

  • 监听程序控制实用程序的语法

可以使用命令行或LSNRCTL 提示符发出监听程序控制实用

程序的命令。

命令行语法:

$ lsnrctl <command name>

$ lsnrctl start

$ lsnrctl status

提示符语法:

LSNRCTL> <command name>

LSNRCTL> start

LSNRCTL> status

LSNRCTL> status

Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rtest.localdomain)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                    LISTENER

Version                  TNSLSNR for Linux: Version 11.2.0.3.0 - Production

StartDate               07-OCT-2013 18:12:21

Uptime                   2 days 21 hr. 44 min. 3 sec

TraceLevel              off

Security                 ON: Local OS Authentication

SNMP                     OFF

Listener Parameter File  /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener LogFile        /u01/app/oracle/diag/tnslsnr/rtest/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rtest.localdomain)(PORT=1521)))

Services Summary...

Service "test0924" has 1instance(s).

  Instance "test0924",status READY, has 1 handler(s) for this service...

Service "test0924XDB" has 1instance(s).

  Instance "test0924", statusREADY, has 1 handler(s) for this service...

The command completed successfully

 

监听程序控制实用程序的语法

可以从实用程序内部(提示符语法)或命令行发出lsnrctl命令。以下两个命令具有相同的效果,但分别使用的是命令行语法和提示符语法:

命令行语法:

$ lsnrctl start

[oracle@rtest ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.3.0 -Production on 10-OCT-2013 15:57:37

Copyright (c) 1991, 2011, Oracle. All rights reserved.

Starting/u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 -Production

System parameter file is/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Log messages written to/u01/app/oracle/diag/tnslsnr/rtest/listener/alert/log.xml

Listening on:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rtest.localdomain)(PORT=1521)))

Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rtest.localdomain)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                    LISTENER

Version                  TNSLSNR for Linux: Version 11.2.0.3.0 - Production

StartDate               10-OCT-2013 15:57:37

Uptime                   0 days 0 hr. 0 min. 0 sec

TraceLevel              off

Security                 ON: Local OS Authentication

SNMP                     OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener LogFile        /u01/app/oracle/diag/tnslsnr/rtest/listener/alert/log.xml

Listening Endpoints Summary...

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rtest.localdomain)(PORT=1521)))

The listener supports no services

The command completed successfully

 

提示符语法:

$ lsnrctl

LSNRCTL for Linux: Version 11.2.0.1.0 -Production on 30-JUN-

2009 01:00:01

Copyright (c) 1991, 2009, Oracle. Allrights reserved.

Welcome to LSNRCTL, type "help"for information.

LSNRCTL> start

 

命令行语法通常用于执行单个命令或脚本命令。如果计划执行若干个连续的lsnrctl命令,则使用提示符语法更高效。请注意,上面省略了listener_name参数,因此stop 命令会影响名为LISTENER的监听程序。如果监听程序受到口令的保护,则必须使用提示符语法。

 

请注意,如果监听程序名称不是LISTENER,则在命令语法中必须包含监听程序名称,或者使用SET CURRENT_LISTENER命令。假设你的监听程序名为custom_lis。以下是使用提示符语法停止名为custom_lis的监听程序的两个示例:

LSNRCTL> stop custom_lis

Connecting to

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host01)(PORT=5521)))

The command completed successfully

 

该示例与以下示例产生的结果相同:

LSNRCTL> set cur custom_lis

Current Listener is custom_lis

LSNRCTL> stop

Connecting to

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host01)(PORT=5521)))

The command completed successfully

注:在上面的语法中,current_listener缩写成了cur

 

使用命令行语法可产生相同的结果:

$ lsnrctl stop custom_lis

LSNRCTL for Linux: Version 11.2.0.1.0 -Production on 30-JUN-

2009 01:01:53

Copyright (c) 1991, 2009, Oracle. Allrights reserved.

Connecting to

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host01)(PORT=5521)))

The command completed successfully

 

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

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

对于由Oracle Restart 管理的任何监听程序,可以使用SRVCTL启动、停止它并查看其状态。示例包括:

使用SRVCTL中提供的命令显示帮助:srvctl –h

启动默认监听程序:srvctl startlistener

停止默认监听程序:srvctl stoplistener

启动名为mylistener 的监听程序:srvctl start listener –l mylistener

显示默认监听程序的状态:srvctl statuslistener

 

  • 监听程序主页

单击Enterprise Manager“Database(数据库)主页上的“Listener(监听程序)链接可访问“Listener(监听程序)主页。

在此页上,可看到:

24 小时内监听程序的状态和可用性

监听程序版本和Oracle 主目录

监听程序的个监听地址

用于启动监听程序的配置文件的位置

监听程序的启动时间和主机信息

• Oracle Restart 状态

要启动监听程序,请转到“Database(数据库)主页,单击监听程序名称以打开“Listener(监听程序)主页。单击“Stop(停止)可停止运行的监听程序;单击“Start(启动)可启动未运行的监听程序。请以可启动和停止监听程序的操作系统用户身份登录到主机。

 

  • “Net Services Administration(网络服务管理)

使用“Net ServicesAdministration(网络服务管理)页可针对多个文件系统上的Oracle 主目录配置Oracle Net 服务。

此页还提供管理监听程序的公用管理功能。可以使用“Net ServicesAdministration(网络服务管理)页配置和管理以下各项:

监听程序:添加、删除、启动和停止监听程序,以及更改其跟踪特性和事件记录特性。此外,还可查看监听程序的控制状态报表。

目录命名:可以定义简单的名称和连接标识符,并将定义的内容映射至连接描述符以确定网络位置和服务标识。将数据库服务、Oracle Net 服务和Oracle Net 服务别名保存到集中式目录服务中。

本地命名:将Oracle Net 服务名保存在tnsnames.ora文件中。

概要文件:配置sqlnet.ora参数。

文件位置:更改Oracle Net 服务的配置文件的位置。


相关文章