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 DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

PLsql Oracle 下载安装图文过程详解

《PLsqlOracle下载安装图文过程详解》PL/SQLDeveloper是一款用于开发Oracle数据库的集成开发环境,可以通过官网下载安装配置,并通过配置tnsnames.ora文件及环境变... 目录一、PL/SQL Developer 简介二、PL/SQL Developer 安装及配置详解1.下

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

查询Oracle数据库表是否被锁的实现方式

《查询Oracle数据库表是否被锁的实现方式》本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,... 目录查询oracle数据库表是否被锁1、查询锁表的会话、人员等信息2、根据 object_id查询被

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,