Oracle客户端的安装与远程连接配置方法分享

一、Oracle客户端与服务器端的通讯机制

1、OracleNet协议

如下图所示,Oracle通过Oracle Net协议实现客户端与服务器端的连接以及数据传递。OracleNet是同时驻留在Oracle数据库服务器端和客户端上的一个软件层,它封装了TCP/IP协议,负责建立与维护客户端应用程序到数据库服务器的连接。

如下图所示,客户端发出的请求首先通过OracleNet协议转换,转换成可以通过网络传输的信息,通过TCP/IP网络将请求传输到数据库服务器端;服务器端接受到客户请求后要通过OracleNet协议转换,将请求转换成数据库可以解释执行的本地指令,并在服务器端执行(主要是一些输入输出操作),并将结果通过TCP/IP协议和OracleNet协议传输给客户端显示。

2、客户端与服务器端的连接过程

在分析客户端与服务器端的连接机制之前,先要定义两个概念,一个是Oracle监听器,一个是Oracle网络服务名。

Oracle数据库服务器通过一个名为“OracleNet监听器”的组件接收来自客户端的连接请求。监听器是位于服务器端的一个后台进程,发送给数据库的客户端连接请求,首先被服务器端的监听器所侦听,并将请求所转交给对应的数据库实例,从而建立起客户端与服务器的连接。连接建立后,客户端与服务器端就可以直接进行通讯,不再需要监听器参与。

要实现监听器对客户请求的监听,需要对监听器进行配置,包括监听端口、监听器所在数据库的全局数据库名称、数据库实例等信息。

Oracle网络服务名是一个标识符,它代表着客户端连接服务器的配置信息(实际上就是连接请求的内容),包括数据库主机地址、监听端口、全局数据库名称等内容((有关全局数据库、数据库实例等,请参考Oracle数据库安装部分)。

如图所示,客户端与服务端的连接过程为:

(1)首先在服务器端有一个常驻的监听器(监听服务要打开)监听客户端发出的连接请求。
   (2)用户在客户端(企业服务器或SQL工具)输入用户名、口令及网络服务名,或在SQL命令行中输入类似“CONNECTusername/password@net_Service_name”的类似请求。
   (3)客户端查看网络服务配置文件tnsname.ora,将网络服务名映射为包含Oracle服务器地址、监听端口和全局数据库名的连接描述符。
  (4)客户端根据连接描述符定位监听器,并通过网络将连接信息传递给监听器。
   (5)监听器查询监听配置文件listener.ora,找出所要连接的数据库服务器。
   (6)客户机和服务器开始通信。

二、监听器配置

1、添加和配置监听器

如下图所示使用Oracle Net Configuration Asistant工具添加并配置服务器的监听器:

监听程序配置完成后,数据库系统会自动启动该监听器。

添加和配置监听器后也可以使用Oracle NetManager工具查看和修改监听器配置,如监听位置、监听器所服务的全局数据库名称等。如下图所示:

对于本安装,监听器配置信息记录在E:\Oracle_Server\oracle\ora92\network\admin\listener.ora文件中。其主要内容如下:

LISTENER=
    (DESCRIPTION_LIST =
      (DESCRIPTION =
        (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST = tsinghua-p5z3mm)(PORT =1521))
         )
       )
    )

SID_LIST_LISTENER =
    (SID_LIST=
     (SID_DESC =
       (SID_NAME = PLSExtProc)
         (ORACLE_HOME = E:\Oracle_Server\oracle\ora92)
           (PROGRAM = extproc)
        )
       (SID_DESC =
         (GLOBAL_DBNAME = mydb.bawei)
           (ORACLE_HOME = E:\Oracle_Server\oracle\ora92)
             (SID_NAME = mydb)
          )
        )

三、客户端工具的安装与网络服务的配置

可以在不同于数据库主机的其它机器安装客户端工具,并通过配置客户端网络服务,连接到数据库服务器。客户端安装与配置过程如下图所示(本安装将客户端安装在了与数据库同一台机器的不同目录中,模拟远程访问数据库的情况):

在安装了客户端并配置了客户端网络服务名之后就可以从客户端工具登录和访问远端数据库服务器了。对于本安装,客户端网络服务配置记录在E:\Oracle_Client\oracle\ora92\network\admin\tnsnames.ora文件中,其主要内容如下:

REMOTEDB=
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.6)(PORT =1521))
       )
      (CONNECT_DATA =
        (SERVICE_NAME = mydb.bawei)
       )
    )

这样,当在客户端工具中输入网络服务名remotedb时,将被解析为数据库地址、端口、全局数据库名等信息,与输入的用户名、密码一起发送到服务器端,由监听器接收,并与监听配置文件对照,将请求转交给相应的数据库实例处理。

客户端网络服务可以使用客户端的Oracle Net Manager工具进行修改,也可以添加新的客户端网络服务名。

需要指出的是

服务器端的客户工具(SQL PLUS、企业管理控制台等)与数据库服务的连接机制与远程客户端连接是一样的。
   在安装完Oracle数据库后,系统默认在数据库服务器本地安装了SQLPLUS等客户端工具,而且在监听配置文件的相同位置E:\Oracle_Server\oracle\ora92\network\admin文件夹中默认提供了服务器端的网络服务连接配置文件tnsnames.ora,其中包含一个与数据库实例SID同名的网络服务名配置,包括数据库所在主机名或ip地址、监听端口、数据库服务名(全局数据库名)等。对于本安装,该tnsnames.ora文件主要内容如下:

MYDB =
  (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = tsinghua-p5z3mm)(PORT =1521))
    )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = mydb.bawei)
    )
  )

当使用数据库服务器端的客户工具时,和从远程客户机连接服务器一样,也是根据输入的用户名、密码及网络服务名(或类似CONNECTusername/password@net_Service_name的SQL命令行),查找tnsnames.ora文件,找到网络连接服务名等于net_Service_name的一项,并获取数据库主机地址、监听端口、全局数据库名等信息。

该请求信息同样被传输到监听端口,监听器再将该信息与同在文件夹E:\Oracle_Server\oracle\ora92\network\admin中的listener.ora监听器配置文件对照,如果listener.ora监听器配置文件中包含匹配的项,则将该请求转给对应的数据库实例。

由此可见,服务器端的客户端工具与数据库服务的连接与远程客户端连接一样,执行了相同的的过程。
   实际上,服务器端的客户工具是通过服务器端tnsnames.ora和listener.ora进行验证并建立连接;远程客户端是通过客户端的tnsnames.ora和服务器端的listener.ora执行验证和建立连接。

(0)

相关推荐

  • PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法

    本文实例讲述了PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法.分享给大家供大家参考,具体如下: php连接oracle数据库虽然不是最佳拍档,但组内开发确实有这样需求.如果没有参考合适的文档,这个过程还是挺折磨人的,下面是一个记录,原型是国外的一篇博客 Installing PDO_OCI and OCI8 PHP extensions on CentOS 6.4 64bit. 假设你已经安装好php的环境,php版本为5.3,要连接的oracle服务器是 11g R2,操作系

  • PHP下的Oracle客户端扩展(OCI8)安装教程

    最近的项目需要用php访问oracle数据库,不得不在linux下给php安装oci8扩展.php也可以使用pdo访问oracle数据库,但还是需要安装客户端. 首先到oracle官网的这个页面下载相关的文件,注意要连数据库服务器的版本,一定要对应,否则安装成功也会连不上,同时也要区分32位.64位服务器,比如我要连的数据库服务器是oracle10.2.0.4,64位主机,那么我要下载下面三个文件: 复制代码 代码如下: oracle-instantclient-basic-10.2.0.4-1

  • Oracle 11g Client客户端安装教程

    很多时候我们本机电脑不需要安装oracle数据库(因为oracle数据库过于庞大,个人电脑安装之后运行起来会比较慢),只要安装一个oracle客户端,然后通过配置PL/SQL即可以连接远程服务器上面的oracle数据库.但在安装客户端的时候会遇到一些问题,如何解决请看下面步骤 工具:win32_11gR2_client 方法/步骤: 安装包里点击setup.exe可执行程序,选择"运行时"点下一步 选择简体中文点下一步 选择要安装的路径点下一步 执行"先决条件检查"

  • Linux下安装oracle客户端并配置php5.3

    因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路. 1.下载Oracle客户端程序包,其中包含OCI.OCCI和JDBC-OCI等相关文件. 1.1下载文件地址 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 根据操作系统的版本选择对应的软件,我需要的是X86_64选择 Instant Client for Linux x86-6

  • Oracle客户端 NLS_LANG 的设置方法

    Oracle客户端NLS_LANG设置 OracleWindowsMicrosoftUnixBash 1. NLS_LANG 参数组成 NLS_LANG参数由以下部分组成: NLS_LANG=<Language>_<Territory>.<Clients Characterset> NLS_LANG各部分含义如下: LANGUAGE指定: -Oracle消息使用的语言 -日期中月份和日显示 TERRITORY指定 -货币和数字格式 -地区和计算星期及日期的习惯 CHAR

  • Oracle客户端版本及位数(Windows系统)查看方法

    一.查看oracle客户端版本:sqlplus -v 二.查看oracle客户端版本是32bit还是64bit 方法一: Step 1:运行sqlplus /nolog命令,如果你服务器安装了多个客户端版本,那么你应该进入对应安装目录的BIN目录后,运行该命令 C:\Users\Mr.Bruce>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 星期一 8月 8 16:06:05 2016 Copyright (c) 1982,

  • oracle客户端PLSQL连接失败解决方法

    上周博客中写了oracle客户端连接服务器的文章,解决了在自己本本上安装的烦恼. 原来自己的电脑与服务器在一个局域网,所以每次都是远程服务器,但是远程也不是解决的办法哈,因为多个人使用同一个服务器,所以使用极其不方便,在自己本本上安装,又比较卡.因此才出现上边博客.嘻嘻,题外话.言归正传. 从家回来,继续我那工作,打开oracle客户端PLSQL,呀,突然连接不上了. 咦,这是怎么回事呢,前几天运转正常哩,回家三四天,咋成这样了呢? 遇到问题,冷静分析其错误,从错误中,可以得知,目标主机,也就是

  • Oracle 11g服务器与客户端卸载、安装全过程

    Oracle 11g服务器与客户端的完全卸载方式与前些版本有了改变: 一.卸载前准备: 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务. 二.批处理卸载: 运行H:\app\Administrator\product\11.2.0\dbhome_1\deinstall的deinstall.bat批处理文件卸载,全程代码如下: (客户端卸载与此类似,屏幕过程中都会有询问,一路回车或y选择默认即可.) Checking for required files an

  • windows 7安装ORACLE 10g客户端的方法分享

    1.因为oracle 10g暂时没有与win7兼容的版本,我们可以通过对安装软件中某些文件的修改达到安装的目地. a)打开"\ORACLE10G_client \stage\prereq\client\"路径,找到refhost.xml文件,打开,向其中添加如下代码并保存. 复制代码 代码如下: <OPERATING_SYSTEM> <VERSION VALUE="6.1"/> </OPERATING_SYSTEM> b)打开&q

  • oracle查看字符集后修改oracle服务端和客户端字符集的步骤

    1.oracle server端字符集查询 复制代码 代码如下: select userenv('language') from dual; server字符集修改: 将数据库启动到RESTRICTED模式下做字符集更改: 复制代码 代码如下: SQL>conn /as sysdba SQL>shutdown immediate; SQL>startup mount SQL>ALTER  SYSTEM  ENABLE  RESTRICTED  SESSION; SQL>ALT

随机推荐