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&WinCE&WM]应用程序只能运行一个实例:MutexHelper Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作

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

  9. SDE+ORACLE优化配置

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

随机推荐

  1. spring - 自定义注解

    本自定义注解的作用:用于控制类方法的调用,只有拥有某个角色时才能调用. java内置注解 1.@Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括: ElemenetTy ...

  2. Linux/Ubuntu tree 命令以树形结构显示文件夹目录结构

    1.安装命令工具 sudo apt-get -y install tree 2.可以查看关于tree命令的帮助信息 $ tree --help usage: tree [-adfghilnpqrstu ...

  3. html 的table tr td的使用

    cellspacing 属性规定单元格之间的空间. cellpadding 属性规定单元边沿与其内容之间的空白. border 简写属性在一个声明设置所有的边框属性. border 用在table属性 ...

  4. JSONKit 简单使用

    http://blog.csdn.net/l_ch_g/article/details/8477187 例子上写的比较浅显易懂, 不过我还是稍微总结一下: 导入JSONKit.h之后 字符串转NSDi ...

  5. OpenCV的基本数据结构

    参考:http://www.cnblogs.com/guoqiaojin/p/3176692.html

  6. poj1573 模拟

    Robot Motion Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11270   Accepted: 5487 Des ...

  7. Python获取目录、文件的注意事项

    Python获取指定路径下的子目录和文件有两种方法: os.listdir(dir)和os.walk(dir),前者列出dir目录下的所有直接子目录和文件的名称(均不包含完整路径),如 >> ...

  8. PHP - 获取和设置include_path .

    PHP - 获取和设置include_path 分类:             PHP              2011-02-16 13:19     2818人阅读     评论(1)     ...

  9. 如何选择Html.RenderPartial和Html.RenderAction

    Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. Html.RenderPartial是直接将用户控件嵌入到界面上: <%Htm ...

  10. 【leetcode】Best Time to Buy and Sell Stock II

    Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...