Oracle TNS简述

  • 什么是TNS?

TNS是Oracle Net的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,必须配置TNS,当然在少数情况下,不用配置TNS也可以连接Oracle数据库,比如通过JDBC.如果通过TNS连接Oracle,那么客户端必须安装Oracle client程序.

  • TNS有那些配置文件?

TNS的配置文件包括服务器(安装Oracle数据库的机器)端和客户端两部分.服务器有listener.ora,sqlnet.ora,tnsnames.ora,如果通过OCM(Oracle Connection Manage)和域名服务管理客户端连接,服务器端可能还包括cman.ora等文件;客户端有tnsnames.ora,sqlnet.ora. 
listener.ora:监听器配置文件,成功启动后是驻留在服务器端的一个服务.什么是监听器?监听器是用来侦听客户端的连接请求以及建立客户端和服务器端连接通道的一个服务程序.默认情况下Oracle在1521端口上侦听数据库连接请求. 
sqlnet.ora:用来管理和约束或限制tns连接的配置,通过在该文件中设置一些参数,可以管理TNS连接.根据参数作用的不同,需要分别在服务器和客户端配置. 
tnsnames.ora:配置客户端到服务器端的连接服务,包括客户端要连接到的服务器和数据库的配置信息.

Oracle所有的TNS配置文件都存放在

unix/linux: $ORACLE_HOME/network/admin 
windows: %ORACLE_HOME%\network\admin

  • TNS有那些配置工具?

我们可以手动配置,也可以通过Oracle Net Configuretion Assitant配置.

  • OracleTNS配置流程

首先在Oracle server端安装完成之后,因该先着手配置LISTENER,listenerr是进行Oracle通讯的首要组件,紧接着在客户端安装Oracle client,同时配置tnsnames.ora文件.

  • LISTENER(监听器)配置

首先监听器包括两个部分:Oracle要监听的地址、端口、通讯协议;Oracle要监听的数据库实例.非RAC环境下,LISTENER只能监听本服务器的地址和实例,RAC环境下,LISTENER还可以监听远程服务器.每个数据库最少要配置一个监听器

LISTENER=
 (DESCRIPTION=
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
    (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))
  )
 )
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/oracle10g)
      (PROGRAM=extproc)
     )
    (SID_DESC=
     (SID_NAME=mayp)
     (ORACLE_HOME=/oracle10g)
    )
   )

listener部分配置了Oracle要监听的地址信息;SID_LIST_LISTENER部分配置了Oracle需要监听的实例.

HOST参数即可以是hostname,也可以是ip地址.在一个多IP的服务器上可以配置listener同时监听多个地址.比如下面的配置:

LISTENER=
 (DESCRIPTION=
   (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.10)(PORT=1521))
      (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.1) (PORT=1521))
   )
  )

或者可以配置多个监听器,分别监听不同的IP地址.

Oracle Net支持的通讯协议有:

 ■ TCP/IP
 ■ TCP/IP with SSL
 ■ Named Pipes
 ■ SDP

Oracle 9i引入了动态监听服务注册,指的是我们不需要在listener.ora中配置oracle要监听的数据库实例信息,数据库启动的时候, PMON进程可以自动注册当前数据库实例到listener的监听列表.也就是说上面的SID_LIST_LISTENER部分就不用配置了。使用动态监听服务器端必须满足以下条件:

    ■  数据库必须设置INSTANCE_NAMESERVICE_NAME参数;

    ■  监听器采用默认的TCP协议并使用1521端口进行监听;

    ■ 如果在配置监听器时采用了其他通讯协议或者侦听端口,进行以下设置告诉Oracle采用自定义监听器:

   1、通过LOCAL_LISTENER参数明确设置当前使用的监听器,

   2、在服务器端都tnsnames.ora文件中加入自定义监听器的配置信息.如果采用了OCM,那么还可以在cman.ora中加入监听器的配置信息.

.LOCAL_LISTENER 可以通过ALTER SYSTEM动态设置.

ALTER SYSTEM SET LOCAL_LISTENER=’listener_alias’;

一个动态监听配置的示例:

listener.ora文件的配置:

LISTENER1 =
  (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.73)(PORT = 1421))
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421))
        (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))
      )
   )

LOCAL_LISTENER参数的配置(因为这里采用非1521的端口):

SQL> show parameter local_listener

NAME                                 TYPE         VALUE
------------------------------------ ------------ -----------
local_listener                       string       listener1

tnsnames.ora的配置:

LISTENER1=
 (ADDRESS_LIST=
  (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421)(IP = FIRST))
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.73)(PORT = 1421))
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421))
 )
mayp =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = mayp)
      (SERVER = DEDICATED)
    )
  )
  • TNS配置

我们说的TNS配置其实就是对tnsnames.ora文件的配置,tnsnames.ora 有客户端的配置,也有服务器端的配置.客户端和服务器端配置的区别是因为服务器端的配置跟LISTENER的配置相关.下面是一个简单的配置示例:

mayp =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = mayp)
      (SERVER = DEDICATED)
    )
  )

同样tnsnames.ora也包括两部分,ADDRESS_LIST 部分包含了远程数据库服务器的监听地址信息,也就是要告诉TNS远程数据库可通过乃些地址和CLIENT通讯;CONNECT_DATA 定义了CLIENT要连接的数据库,还有数据库的连接方式,(专用或共享)。在一个多ip环境中,TNS也可以配置多个远程IP地址:

mayp =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = mayp)
      (SERVER = DEDICATED)
    )
  )

一般在多IP环境中,还可以在TNS端配置load_balance和failover特性.这些特性在RAC环境下比较流行,load_balance特性可以让client在连接数据库是选择任意地址进行连接,是各地址的连接均衡.failover开启Oracle特有的 TAF特性,TAF为Transparent Application Failover的缩写.load_balance可以在客户端配置,也可以在服务器端配置.下面是一个客户端的配置示例:

mayp =
(DESCRIPTION =
   (ADDRESS_LIST =
     (LOAD_BALANCE=ON)
     (FAILOVER=ON)
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.73)(PORT = 1421))
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421))
   )
   (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MAYP)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
      )
   )
)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值