Oracle DBA基础教程
上QQ阅读APP看书,第一时间看更新

3.3 客户端配置

客户端要连接到数据库服务器必须要知道一些信息,如数据库服务器的IP地址、使用通信协议、连接端口号,以及对应的数据库服务名,这些需要在数据库客户端设置,这些信息存储在tnsnames.ora文件中,在该文件中设置要连接到的每一个数据库服务器的实体信息。

3.3.1 本地命名

本地命名使用的配置文件是tnsnames.ora文件,该文件位于客户端。我们可以使用netca来配置这个文件。本地命名是建立Oracle数据库连接最便捷的方法,在文件tnsnames.ora中存储了数据库服务名和链接描述符,该文件默认位于$Oracle_HOME/network/admin目录中。

在使用SQL*PLUS或其他方法初始化一个客户端连接时,Oracle Net组件会提供数据库的详细信息,这些信息就存储在tnsnames.ora文件中,这些信息包括数据库服务器的网络地址、通信协议以及连接端口。通过这些信息与监听程序建立通信,而后监听程序会将该连接交给SERVICE_NAME指定的数据库,一旦数据库服务器确定了用户名和密码匹配,则建立客户端的连接。此时的tnsnames.ora就是一个服务名解析的作用,将一个服务名解析为一个网络连接实体,确定要连接的具体的数据库服务。

下面是tnsnames.ora文件的内容,其中我们添加了数据库PROD的服务名信息。如果客户端需要连接到更多的数据库,则需要添加更多的映射信息。

例子3-19 tnsnames.ora文件的内容

    MYPROD =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = ocm1.oracle)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = PROD)
        )
      )
    

ADDRESS是监听器的实体信息,CONNECT_DATA说明使用的服务器体系架构和对应的数据库服务名。这样客户端软件就可以根据这些信息建立到监听器的连接,而监听器根据SERVICE_NAME找到注册的数据库,将连接交给数据库服务器,一旦数据库服务器通过用户名和密码验证,则建立客户端和服务器之间的连接。

上例列出了2个数据库,二者具有不同的特性,数据库MYPROD位于主机ocm1.oracle上,数据库服务名为PROD,而数据库EMREP位于主机ocm2.oracle上,数据库服务名为EMREP。当连接到这两个数据库时,客户端用这个文件来解析,完成到数据库服务器的连接。

说明

tnsnames.ora文件必须位于客户端上,如果有多个客户端则需要复制过去,保证连接成功,且数据库服务器端的监听程序必须运行,数据库服务器才能保持运行。

下面我们通过如下语法测试连接。

    SQL>connect username/password@net_servive_name

例子3-20 打开SQL*Plus对数据库进行操作

    [Oracle@ocm1 admin]$ sqlplus sys/Oracle@myprod as sysdba
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Mon Oct 24 11:31:10 2011
    
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining options
    
    SQL>

3.3.2 简单命名

简单命名网络连接是最简洁的连接方法,在配置方面要求很少。此时客户端用户不需要配置如TCP/IP环境下的tnsnames.ora文件就可以连接到Oracle数据库服务器。客户机只需要根据主机名(或者IP地址)、端口号以及数据库的服务名即可连接数据库服务器,这样就省去了系统中对数据库配置TCP/IP连接实体。

但是使用简单连接要求在客户机和数据库服务器上同时运行TCP/IP协议栈,简单连接在Oracle9i中引入,是数据库连接的有益补充。下面是简单连接的语法。

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

下面是简单连接中的几个注意事项。

● //(双斜杠)是可选的。

● Host:是强制参数,可以是主机名也可以是IP地址。

● Port:是端口号,该参数是可选的,如果是默认端口可以不写。

● Service_name:该参数指定数据库服务器的服务名,默认是主机名,是可选参数。如果主机名和数据库服务器名相同,则这个参数可以省略;如果不同,则必须提供数据库服务器的服务名。

下面是一个连接实例。

例子3-21 简单连接实例

    [Oracle@ocm1 admin]$ sqlplus system/Oracle@ ocm1.oracle:1521/prod
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Tue Oct 25 22:29:48 2011
    
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining options
    
    SQL>

数据库服务器所在的IP地址为192.168.1.10,使用默认端口1521作为监听端口,数据库服务器的服务名为PROD。

既然是默认端口号,此时可以不写这个参数,如下例所示。

例子3-22 默认端口号

    [Oracle@ocm1 admin]$ sqlplus system/Oracle@// ocm1.oracle /prod
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Tue Oct 25 22:34:26 2011
    
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining options
    
    SQL>

其实,使用简单连接方法与使用本地命名方法是相同的,在简单连接方法中提供的连接参数,在本地命名连接方法中的tnsnames.ora文件中都有,如下例所示。

例子3-23 本地命名连接方法中的tnsnames.ora文件

    MYPROD =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = ocm1.oracle)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = PROD)
        )
      )