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

相关文章

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

浅析如何保证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优化建议注