1. 什么是TNS?

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

2. 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: 配置客户端到服务器端的连接服务,包括客户端要连接到的服务器和数据库的配置信息.

3. Oracle所有的TNS配置文件存放位置

unix/linux: $ORACLE_HOME/network/admin

windows: %ORACLE_HOME%\network\admin

4. TNS有那些配置工具?

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

5. 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采用自定义监听器:

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

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

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

ALTER SYSTEM SET LOCAL_LISTENER=’listener_alias’;一个动态监听配置的示例:

6. TNS配置文件具体配置

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))
)
)

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配置浅析的更多相关文章

  1. ORACLE一个TNS配置错误

    oracle tns配置文件格式如下 RSXT = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.26.3. ...

  2. oracle数据库的TNS配置

    TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS ...

  3. oracle数据库tns配置方法详解

    TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS ...

  4. oracle odbc配置

    oracle odbc配置 Win7 64位 下安装oracle odbc 不能使用控制面板中 “管理工具”->“数据源(OBDC)”中安装数据源. 而要在“ 运行” 中输入  C:\Windo ...

  5. Oracle 远程访问配置

    服务端配置 如果不想自己写,可以通过 Net Manager 来配置. 以下配置文件中的 localhost 改为 ip 地址,否则,远程不能访问. 1.网络监听配置 # listener.ora N ...

  6. MyEclipse+Weblogic+Oracle+PLSQL配置注意事项

    Weblogic配置详情:<Weblogic安装与配置图文详解>Oracle+PLSQL配置详情:<PL/SQL访问远程Oracle服务器(多种方式)>MyEclipse配置: ...

  7. Oracle TNS Listener Remote Poisoning

    Oracle TNS Listener Remote Poisoning 远程数据投毒漏洞(CVE-2012-1675) 1.漏洞简介: 允许攻击者在不提供用户名/密码的情况下,向远程“TNS Lis ...

  8. Oracle 远程访问配置 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标 C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素” C#[Win32&amp;WinCE&amp;WM]应用程序只能运行一个实例:MutexHelper Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作

    Oracle 远程访问配置   服务端配置 如果不想自己写,可以通过 Net Manager 来配置. 以下配置文件中的 localhost 改为 ip 地址,否则,远程不能访问. 1.网络监听配置 ...

  9. SDE+ORACLE优化配置

    原文 SDE+ORACLE优化配置 SDE的性能取决于: 首先操作系统的性能:其次是Oracle的性能,再次是SDE的性能. 第一:操作系统,无非是内存.CPU.带宽等. 可以有待提高的地方:第一.硬 ...

随机推荐

  1. Oracle数据库入门——如何根据物化视图日志快速刷新物化视图

    Oracle物化视图的快速刷新机制是通过物化视图日志完成的.Oracle如何通过一个物化视图日志就可以支持多个物化视图的快速刷新呢,本文简单的描述一下刷新的原理. 首先,看一下物化视图的结构:SQL& ...

  2. 用Hopper搞定Mac迅雷的会员以及离线下载功能

    转自 用Hopper搞定Mac迅雷的会员以及离线下载功能 先定位Mac迅雷的可执行文件 snakeninnys-iMac:~ snakeninny$ ls /Applications/Thunder. ...

  3. iphone手机版降级

    想减少移动版本号.你能下载下来你想要的版本在苹果开发者网站,或"信誉"或可以下载到其他网站的iPhone下载固件固件网站.然后打开iTunes,进入 然后按着(alt).同一时候用 ...

  4. unity3d项目导入android studio

    第一步 拿到unity3d项目,里面包含以下文件 第二步 在android studio下新建一个project 第三步 将unity3d项目目录下的libs下的jar文件复制黏贴到android s ...

  5. phpcms v9——工作需要【套模板】

    phpcms v9 模板标签说明整理 作者:匿名 来源:ChinaZ源码报导 浏览:44061次 2011-6-17 15:52:09 字号:大 中 小 [摘要]本文介绍phpcms v9中模板标签使 ...

  6. tomcat安装启动之后localhost:8080页面进不去,提示错误500

    具体的错误展示页面如下: 首先,需要考虑到是不是安装的tomcat版本和自己安装的jdk的版本一致,如果不一致,建议将tomcat换成和jdk一致或者高于jdk版本的tomcat版本.(比如安装的jd ...

  7. wue父子通信和动态路由 还有点击事件直接赋值传参数

    这种直接在后面赋值 传值

  8. drupal7获取当前theme的路径

    //方式一 $theme_path=drupal_get_path('theme', $theme); //方式二 $theme_path=path_to_theme();

  9. JUC原子类 1

    根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ; 2. 数组类型: AtomicI ...

  10. Maven Debug

    1.在pom.xml中新增plugin <plugin>   <groupId>org.mortbay.jetty</groupId>   <artifact ...