Oracle_TNS浅析

2024-02-23 08:38
文章标签 oracle 浅析 tns

本文主要是介绍Oracle_TNS浅析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Oracle TNS简述

 http://zhumeng8337797.blog.163.com/blog/static/10076891420111115104023136/

 什么是TNS?

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

 

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

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

 

    ■  数据库必须设置INSTANCE_NAME和SERVICE_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       listener1tnsnames.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)

     )

   )

)sqlnet.ora的配置

sqlnet.ora是个很重要的配置,他可以控制和管理Oracle连接的属性,根据参数作用的不同决定在客户端配置还是在server端配置.sqlnet.ora的配置是全局性的,也就说sqlnet.ora的配置是对所有的连接起作用,如果想对某个特殊的连接或服务进行约束或限制,可以在TNS配置相应参数.详细参数可以参考:

 

Oracle® Database Net Services Reference

这篇关于Oracle_TNS浅析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/738065

相关文章

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

浅析Java如何保护敏感数据

《浅析Java如何保护敏感数据》在当今数字化时代,数据安全成为了软件开发中至关重要的课题,本文将深入探讨Java安全领域,聚焦于敏感数据保护的策略与实践,感兴趣的小伙伴可以了解下... 目录一、Java 安全的重要性二、敏感数据加密技术(一)对称加密(二)非对称加密三、敏感数据的访问控制(一)基于角色的访问

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

浅析如何使用xstream实现javaBean与xml互转

《浅析如何使用xstream实现javaBean与xml互转》XStream是一个用于将Java对象与XML之间进行转换的库,它非常简单易用,下面将详细介绍如何使用XStream实现JavaBean与... 目录1. 引入依赖2. 定义 JavaBean3. JavaBean 转 XML4. XML 转 J

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.