oracle数据库tns配置方法详解

摘要:
虽然Oracle无法自动列出网络中的服务器,但您需要读取TNS配置文件以列出配置的服务器名称。当通过客户端NetManager创建到数据库服务器的连接服务时,它实际上在tnsnames中。TNS内容被添加到ora文件中。Oracle的所有TNS配置文件的默认路径:%Oracle_HOME%networkadminlistener。ora:监听器配置文件。成功启动后,它是驻留在服务器上的服务。sqlnet。Ora:用于管理和限制或限制TNS连接的配置。您可以通过在此文件中设置一些参数来管理TNS连接。

NS简要介绍与应用

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

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

Oracle当中,如果想访问某个服务器,必须要设置TNS,它不像SQL SERVER那样在客户端自动列举出在局域网内所有的在线服务器,只需在客户端选择需要的服务器,然后使用帐号与密码登录即可。而Oracle不能自动列举出网内的服务器,需要通过读取TNS配置文件才能列出经过配置的服务器名。

配置文件名一般为:tnsnames.ora,默认路径:%ORACLE_HOME% etworkadmin nsnames.ora

oracle数据库tns配置方法详解第1张

上图中的CGDB和STDCG就是对应的TNS,HOST是指向数据库服务器的IP,当然局域网内用计算机名称也是可以的。通过客户端Net Manager创建一个连接到数据库服务器的连接服务时,实际上就是在tnsnames.ora文件中增加了一个TNS的内容。

TNS的详细配置文件

TNS的配置文件包括服务器端和客户端两部分。

服务器端有listener.ora、sqlnet.ora和tnsnames.ora,如果通过OCM(Oracle Connection Manage)和域名服务管理客户端连接,服务器端可能还包括cman.ora等文件;

客户端有tnsnames.ora,sqlnet.ora。

Oracle所有的TNS配置文件的默认路径:%ORACLE_HOME% etworkadmin

listener.ora:监听器配置文件,成功启动后是驻留在服务器端的一个服务。监听器是用来侦听客户端的连接请求以及建立客户端和服务器端连接通道的一个服务程序。默认情况下Oracle在1521端口上侦听客户端连接请求。

sqlnet.ora:用来管理和约束或限制tns连接的配置,通过在该文件中设置一些参数,可以管理TNS连接。根据参数作用的不同,需要分别在服务器和客户端配置.。

tnsnames.ora:配置客户端到服务器端的连接服务,包括客户端要连接到的服务器和数据库的配置信息。

TNS配置

可以通过Oracle Net Configuretion Assitant配置TNS,也可以手动配置。

首先在Oracle服务器端安装完成之后,

应该先着手配置LISTENER,LISTENER是进行Oracle通讯的首要组件,

紧接着在客户端安装Oracle client,同时配置tnsnames.ora文件。

首先监听器包括两个部分:

Oracle要监听的地址、端口、通讯协议;

Oracle要监听的数据库实例,

非RAC环境下,LISTENER只能监听本服务器的地址和实例,RAC环境下,LISTENER还可以监听远程服务器。每个数据库最少要配置一个监听器。(注:RAC环境,指的是Oracle服务器集群配置的环境)

oracle数据库tns配置方法详解第2张

LISTENER部分配置了Oracle要监听的地址和端口信息;该文件中还会包括SID_LIST_LISTENER部分,这部分配置了Oracle需要监听的实例。(注:在上述截图中并没有SID_LIST_LISTENER这一部分,这是因为Oracle自9i版本引入了动态监听服务注册,在数据库启动时,会自动注册当前数据库实例到监听列表,所以无需配置SID_LIST_LISTENER部分了)

HOST参数可以是Oracle服务器主机名称,也可以是相应的IP地址。

在一个多IP的服务器上可以配置listener同时监听多个地址,比如下面的配置:

LISTENER= (DESCRIPTION= (ADDRESS_LIST=

(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.11)(PORT=1521))

(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.11) (PORT=1521))) ),或者可以配置多个监听器,分别监听不同的IP地址。

一般说的TNS配置其实就是对tnsnames.ora文件的配置,tnsnames.ora有客户端的配置,也有服务器端的配置。

客户端和服务器端配置的区别是因为服务器端的配置跟LISTENER的配置相关。下面是一个简单的配置示例:

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

tnsnames.ora也包括两部分,

ADDRESS_LIST 部分包含了Oracle数据库服务器的监听地址信息,也就是要告诉TNS数据库可通过这个地址和CLIENT进行通讯;

CONNECT_DATA 定义了CLIENT要连接的数据库,以及数据库的连接方式,(专用或共享)。

在一个多IP环境中,TNS也可以配置多个远程IP地址:

CGDB = (DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.55)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.56)(PORT = 1521)))

(CONNECT_DATA = (SERVICE_NAME = CGDB) (SERVER = DEDICATED) ) )

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

免责声明:文章转载自《oracle数据库tns配置方法详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unity应用架构设计(3)——构建View和ViewModel的生命周期最受欢迎的Linux发行版, Manjaro折腾全记录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

伪表和伪列

oracle的伪列以及伪表 oracle系统为了实现完整的关系数据库功能,系统专门提供了一组成为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象时由我们完成的,而是在我们建立时由Oracle完成的。Oracle目前有以下伪列: 一、伪列: CURRVAL AND NEXTVAL 使用序列号的保留字 LEVEL 查询数据所对应的层级 ROWI...

liquibase之快速入门

第一步:   创建一个Changelog File:  这个database  Changelog file列举了数据库中所有的改变情况,该文件是以xml为基础的,下面是一个空的xml文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <databaseChangeLog 4 xm...

利用jmeter向数据库批量导入数据

一、jmeter进行数据库压力测试步骤汇总 这里我使用的是jmeter5.0,所以驱动包版本要高些,太低执行时会报错 启动jmeter5.0 测试计划导入mysql驱动jar包 添加线程组 添加JDBC Connection Configuration【连接数据库】 添加随机变量 添加JDBC Request【进行不同数据库不同query type操作】...

Mysql基础01-语法

数据库 数据的存储:将数据放到表中,表再放到库中。 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。 表由列组成,我们也称为字段。每个字段描述了它所含有的数据的意义表由列组成,我们也称为字段。每个字段描述了它所含有的数据的意义 表中的数据是按行存储的,一行即为一条记录。 MySQL下载安装略过 MySQL设置命令 net sta...

XML导入Access/MySql数据库 XML2OleDb Fred

学校XML课程布置了一个作业“XML导入Access和MySql”,我在网上找到了孟子E章的Xml2OleDb,功能很全面,唯一的不足就是缺少了导入MySql的支持,经过我的完善,补充了该功能。 我的版本是为了交作业,所以去掉了连接字符串自输入,而是固定在web.config里啦。导入MySql的代码与2OleDb有所不同,思路是一样的,下面我贴出来2My...

python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题

爬取的数据结果是没有错的,但是在保存数据的时候出错了,出现重复数据或者数据少问题。那为什么会造成这种结果呢? 其原因是由于Spider的速率比较快,而scapy操作数据库操作比较慢,导致pipeline中的方法调用较慢,这样当一个变量正在处理的时候,一个新的变量过来,之前的变量的值就会被覆盖。 就比如pipline的速率是1TPS,而spider的速率是5...