配置Oracle网络环境

一、Oracle NetServices

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

  在客户机计算机上,Oracle Net是一个用于连接到数据库的后台组件。

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

  Oracle NetServices 最常见的用法是允许传入数据库连接。可通过配置其它网络服务来允许访问外部代码库(EXTPROC),并通过Oracle Heterogeneous Services 将Oracle 实例连接到非Oracle 数据源,如Sybase、Informix、DB2 和SQL Server。

 

二、、Oracle NetListener

  Oracle Net Listener 是所有非本地用户连接到Oracle 实例的网关。单个监听程序可用于多个数据库实例以及成千上万个客户机连接。

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

  高级管理员还可以根据需要,通过使用标准操作系统(OS) 文本编辑器(如vi 或gedit)手动编辑配置文件来配置Oracle Net Services。

 

三、建立网络连接

  要让应用程序通过Oracle NetListener 连接到某服务,应用程序必须拥有关于该服务的信息,包括监听程序所驻留的地址或主机、监听程序接受的协议,以及监听程序监视的端口。确定监听程序的位置之后,应用程序所需的最后一项信息就是所要连接到的服务名。确定此连接信息的进程被称为“名称解析”。

 

四、建立连接

  Oracle Net Names Resolution 完成之后,连接请求会从用户或中间层应用程序(此后称为用户进程)传递到Oracle Net Listener。监听程序会接收一个连接数据包,之后会检查这个连接数据包请求的Oracle Net 服务名是否有效。

  如果未请求服务名(例如,tnsping 请求),监听程序会通知连接请求,此外不执行任何其它操作。如果请求的服务名无效,监听程序会向用户进程传输一个错误代码。

 

五、用户会话

  如果连接数据包请求的服务名有效,监听程序会衍生一个新进程来处理连接。这个新进程被称为“服务器进程”。监听程序会连接到此服务器进程,并向其传递初始化信息,其中包括用户进程的地址信息。此时,监听程序不再处理连接,所有工作都会传递到服务器进程。

  服务器进程会检查用户的验证身份证明(通常为口令),如果身份证明有效,就会创建一个用户会话。

  专用服务器进程:建立会话之后,服务器进程充当用户在服务器上的代理。服务器进程负责:

    •分析和运行通过应用程序发布的任何SQL 语句。

    •检查数据块执行SQL 语句所需的数据库缓冲区高速缓存。

    •从磁盘数据文件读取必要的数据块,如果SGA 中尚未存在数据块,就将其传入系统全局区(SGA) 的数据库缓冲区高速缓存部分。

    •管理所有排序活动。所谓的程序全局区(PGA) 是服务器进程的一部分,其中包含一个称为排序区域的内存区,这个内存区用于处理排序。

    •以某种方式将结果返回到用户进程,使应用程序可以处理信息。

    •读取审计选项并将用户进程报告给审计目标。

 

六、配置和管理Oracle Network的工具

  1)、Enterprise Manager 的“NetServices Administration(网络服务管理)”页

  2)、Oracle Net Manager

  3)、由Oracle UniversalInstaller 启动的Oracle Net Configuration Assistant

  4)、命令行

 

七、监听程序控制实用程序

  启动实例时,监听程序进程会建立一个指向Oracle数据库的通信路径。随后,监听程序可接受数据库连接请求。

  使用监听程序控制实用程序,您可以控制监听程序。这个实用程序的基本命令语法为:

    LSNRCTL>command [listener_name]

  发布lsnrctl命令时,如果没有指定其它监听程序名称或执行SET CURRENT_LISTENER命令,这个命令就充当默认的监听程序(名为“LISTENER”)。如果监听程序名为LISTENER,则可省略listener_name 参数。

 

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

  可以从实用程序内部(提示符语法)或命令行发布lsnrctl 命令。下面两个命令的效果相同

  第一个使用命令行语法:

    $ lsnrctl start

  第二个使用提示符语法:

    $ lsnrctl

    LSNRCTL for Linux: Version 10.2.0.0.0 on 12-MAY-2005

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

    Welcome to LSNRCTL, type "help" for information.

    LSNRCTL> start

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

  请记住,如果监听程序名称不是LISTENER,则语法中必须包含监听程序名称与命令,或者使用SET CURRENT_LISTENER 命令。假定监听程序名BACKUP。以下是使用提示符语法停止名为BACKUP 的监听程序的两个示例。

    LSNRCTL> stop backup

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5521)))

    The command completed successfully

  这个语法与下一个语法会产生相同的结果:

    LSNRCTL> set cur backup

    Current Listener is backup

    LSNRCTL> stop

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5521)))

    The command completed successfully

 注:在上面的语法中,current_listener已缩写为cur。

 使用命令行语法也可获得相同的结果:

    /home/oracle> lsnrctl stop backup

    LSNRCTL for Linux: Version 10.2.0.0.0 on 12-MAY-2005 15:19:33

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

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5521)))

    The command completed successfully

 

九、数据库服务注册

  为了将客户机连接转发到实例,监听程序必须了解实例名称以及实例的ORACLE_HOME的位置。监听程序可通过下列两种方式查找此信息:

   • 动态服务注册:Oracle8i、Oracle9i 和OracleDatabase 10g 实例会在启动数据时使用默认监听程序自动进行注册。默认监听程序不需要进行其它监听程序配置;所谓动态注册是指实例启动之后,由后台进程PMON在监听中注册数据库服务信息。在动态注册机制下,原来监听器中的SID_LIST部分将不再需要。

   • 静态服务注册:Oracle 数据库的早期版本不会自动使用监听程序进行注册,因此,监听程序配置文件需要包含一个监听程序为之提供服务的所有数据库服务的列表。在较新版本中,如果存在以下情况,仍然可以选择使用静态服务注册:

    1)、监听程序所在的端口不是默认的1521,您又不想将实例配置为使用非默认端口进行注册。

    2)、应用程序要求进行静态服务注册。

         要添加静态数据库服务,必须提供一下三项信息:

                   a)、服务名称(与全局数据库名<DB_NAME>.<DB_DOMAIN> 相同)

                   b)、ORACLE_HOME路径

                   c)、OracleSystem Identified(SID与实例名相同)

         添加完静态数据库服务之后,必须重新加载(使用RELOAD 命令)或重新启动监听程序,更改才能生效。

以下是静态注册的实例:

[oracle@rhel admin]$ more listener.ora

# listener.ora Network Configuration File:/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

 (SID_LIST =

   (SID_DESC =

     (GLOBAL_DBNAME = orcl)

     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

     (SID_NAME = orcl)

    )

  )

 

LISTENER =

 (DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = rhel)(PORT = 1521))

  )

 

ADR_BASE_LISTENER = /u01/app/oracle

 

十、命名方法

  Oracle Net 支持以下命名方法:

  • 简便连接命名:使用简便连接命名方法,客户机可使用如下TCP/IP 连接字符串(由主机名、可选端口和服务名组成)连接到Oracle 数据库服务器:

    CONNECTusername/password@host[:port][/service_name]

    简便连接命名方法不需要进行配置。

  • 本地命名:本地命名方法将连接描述符(由其网络服务名标识)存储在客户机中名为tnsnames.ora 的本地配置文件中。

  • 目录命名:为了访问数据库服务,目录命名方法将连接标识符存储在符合轻型目录访问协议(LDAP) 的集中式目录服务器中。

  • 外部命名:外部命名方法将网络服务名存储在支持的非Oracle 命名服务中。支持的第三方服务包括:

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

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

 

1、简便连接

  使用简便连接时,可作为连接字符串的一部分提供Oracle Net 连接所需的所有信息。简便连接的连接字符串采用以下形式:

    <username>/<password>@<hostname>:<listenerport>/<service name>

  监听程序端口和服务名为可选项。如果未提供监听程序端口,Oracle Net 就假定使用的是默认端口1521。如果未提供服务名,Oracle Net 假定连接字符串中提供的数据库服务名与主机名相同。

  假定监听程序使用TCP 监听端口1521,以及SERVICE_NAMES=db和DB_DOMAIN=us.oracle.com 实例参数,则幻灯片中显示的连接字符串可简化为:

    SQL> connecthr/hr@db.us.oracle.com

  注:SERVICE_NAMES 初始化参数可接受多个以逗号分隔的值。这些值中只能有一个值必须为db,此方案才能起作用。

 

2、本地命名

  使用本地命名时,用户需要为OracleNet 服务提供一个别名。Oracle Net 会根据本地已知服务的列表来检查别名,如果发现匹配名称,会将别名转换为主机、协议、端口和服务名。本地命名的一个优势是,数据库用户仅需要记住简便连接所需的短别名,而不必记住很长的连接字符串。

  本地已知服务列表存储在文本配置文件中:<oracle_home>/network/admin/tnsnames.ora。这是tnsnames.ora文件的默认位置,但是,这个文件也可以位于使用TNS_ADMIN 环境变量的其它位置。如果组织的Oracle Net 服务配置不经常发生更改,则适合使用本地命名。

 

3、目录命名

  使用目录命名时,用户需要为OracleNet 服务提供一个别名。Oracle Net 会根据外部已知服务的列表来检查别名,如果发现匹配的名称,会将别名转换为主机、协议、端口和服务名。与本地命名一样,数据库用户只需要记住短别名。

  目录命名的一个优势是,新服务名添加到LDAP目录后,即可供用户连接使用。使用本地命名时,数据库管理员(DBA) 必须首先分发更新的tnsnames.ora 文件(这些文件包含已更改的服务名信息),用户才能连接到新服务或修改过的服务。

  如果组织的Oracle Net 服务配置经常发生更改,则适合使用目录命名。

 

4、外部命名方法

  外部命名方法将网络服务名存储在支持的非Oracle命名服务中。支持的第三方服务包括:

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

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

  从概念上讲,外部命名类似于目录命名。

 

十一、创建本地服务别名Net Service Name

 创建本地服务别名需要提供一下信息:

    1)、运行监听程序的主机

    2)、监听程序监视的端口

    3)、监听程序使用的协议

    4)、监听程序处理的服务名

[oracle@rhel admin]$ more tnsnames.ora

# tnsnames.ora Network Configuration File:/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

 

ORCL =

 (DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = rhel)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = orcl)

    )

  )

 

十二、高级连接选项

  通过高级连接选项,Oracle Net 可以充分利用监听程序的故障转移和负载平衡功能,以及Oracle Connection Manager 源路由功能。

  如果启用了连接时故障转移,则别名中会列出两个或多个监听程序地址。如果第一个地址不可用,则尝试使用第二个地址。Oracle Net 会始终按列出的顺序试用地址,直至遇到起作用的监听程序,或者试用完所有地址后失败。

  如果启用了负载平衡,Oracle Net 会随机从地址列表中选择一个地址。

  源路由与OracleConnection Manager 配合使用。Oracle Connection Manager 可以充当Oracle Net 通信的代理服务器,使OracleNet 通信可以安全地通过防火墙进行路由。Oracle Net 将地址视为中继列表,首先连接到第一个地址,然后请求从第一个地址传递到第二个地址,直至到达目标位置。它与故障转移或负载平衡的不同之处在于,每次进行连接时都会用到所有地址。

  请注意,连接时故障转移和负载平衡有五个选项。这五个选项如下所示:

十三、测试Oracle Net连接性

  tnsping 相当于Oracle Net中的TCP/IP ping 实用程序。它进行快速测试,以验证到目标位置的网络路径是否正常。例如,在命令行窗口输入tnsping orcl。

  实用程序可验证主机名、端口以及协议是否能到达监听程序,并不实际检查监听程序是否处理服务名。tnsping 的另一个用途是指明了配置文件的位置。当系统中具有多个ORACLE_HOME 位置时,这很有帮助。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值