Oracle数据库 TNS配置解读(tnsnames.ora & listener.ora )
脚下留心:
本文从客户端和服务器的角度阐述 连接Oracle数据库如何配置,但是我们开发者的计算机一般充当着两个角色:自己既是客户端也是服务端,就是自己连自己。生产环境中,服务器和客户端位于不同的计算机,是分开配置的。读完本文我相信你可以把你的oracle数据库放到虚拟机里面啦。。
1.为什么要配置TNS
安装Oracle数据库之后,SQLPlus能正常访问数据库,我们想通过 PLSQL Developer (64 bit)连接到Oracle数据库方便操作。就需要配置TNS。
在MySQL数据库中我们通过Navicat客户端操作MySQL数据库
在Oracle数据库中我们经常使用 PLSQL Developer (64 bit)操作数据库。
- MySQL-------------- Navicat
- Oracle --------------- PLSQL Developer (64 bit)
我们必须要明白的一点是Oracle数据库使用的是C/S架构的,说简单点就是我们需要通过客户端去访问服务器,SQLPlus是Oracle自带的客户端,使用起来不太方便。
我们需要 PLSQL Developer 这样的工具来提高我们编写代码的速度(有提示就能提高速度,降低错误率)。
2.大白话理解监听
Oracle数据库服务器分布在网络上,网络上那么多东西那么多资源,用户首先自己要知道自己想连接的 数据库服务器的 IP地址和端口 以及数据库服务器上可用的 数据库用户的用户名和密码。
数据库服务器:我是Oracle数据库服务器,我在等着别人连接我呢。
客户端:我知道我要连的数据库服务器的IP地址,端口,用户名和密码,我要连它。
服务器:那这样吧,我在xxx端口监听(listener.ora)着是否有人想要连我,如果有人向我发出请求,我会验证提供的用户名和密码是否正确。正确我就给访问我的数据。
客户端:说的好像我不知道似的,我这就写给你看(tnsnames.ora )。
- 数据库服务器:在不考虑性能的情况下,安装了Oracle数据库的电脑都可以充当数据库服务器。
3.配置须知
3.1 服务
安装了Oracle数据库之后我们可以在服务里看到两项Oracle最最最基本的服务,其中
OracleOraDb11g_home1TNSListener :用来监听客户端的请求的。数据库服务器开启了监听,客户端向网络上的数据库服务器提出请求时,数据库服务器才能作出响应。如果关了监听,那么这台数据库就算放到公网上也没人能访问到数据库中的数据。
3.2 配置文件路径
Oracle安装目录下: %ORACLE_HOME%\NETWORK\ADMIN
服务器端: listener.ora、sqlnet.ora 和 tnsnames.oracman.ora等文件;
客户端有: tnsnames.ora,sqlnet.ora等。
3.3 配置工具在哪
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle - OraDb11g_home1\配置和移植工具
4.怎么配置?
4.1 配置方法:
可以通过oracle自带的配置和移植工具:Net Manager 和Net Configuration Assistant 配置TNS;也可以手动配置。TNS的配置文件包括服务器端和客户端两部分。
首先在Oracle服务器端安装完成之后,首先应着手配置监听器,监听器是进行Oracle通讯的首要组件,紧接着在要连接Oracle数据库的计算机上安装Oracle client,配置tnsnames.ora文件。然后装 PLSQL Developer 连接Oracle数据库。
配置文件解读
listener.ora:监听器配置文件,成功启动后是驻留在服务器端的一个服务。监听器是用来侦听客户端的连接请求以及建立客户端和服务器端连接通道的一个服务程序。默认情况下Oracle在1521端口上侦听客户端连接请求。
sqlnet.ora:用来管理和约束或限制tns连接的配置,通过在该文件中设置一些参数,可以管理TNS连接。根据参数作用的不同,需要分别在服务器和客户端配置.。
tnsnames.ora:配置客户端到服务器端的连接服务,包括客户端要连接到的服务器和数据库的配置信息。
4.2 服务器配置
废话少说,先献上配置文件
# listener.ora Network Configuration File: D:\HandDevTools\OracleDB\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\HandDevTools\OracleDB\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\HandDevTools\OracleDB\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-COK2609)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = D:\HandDevTools\OracleDB
4.2.1 listener.ora的 LISTENER部分 ,配置Oracle要监听的ip地址、端口、通讯协议
参数名 | 意义 |
---|---|
PROTOCOL | 一般是TCP协议 |
HOST | 服务器的ip地址或主机名,(计算机全名 ,右键我的电脑选属性可查看) |
PORT | 端口,oracle数据库默认监听1521端口 |
脚下留心:
在一个多IP的服务器上可以配置listener同时监听多个地址,也可以配置多个监听器,分别监听不同的IP地址。
4.2.2 listener.ora的SID_LIST_LISTENER部分 配置Oracle需要监听的实例
Oracle要监听的数据库实例。非RAC环境下,LISTENER只能监听本地服务器的地址和实例;RAC环境下,监听器还可以监听远程服务器。每个数据库最少要配置一个监
听器。(注:RAC环境,指的是Oracle服务器集群配置的环境)
脚下留心:
SID_LIST_LISTENER部分,Oracle自9i版本引入了动态监听服务注册,在数据库启动时,会自动注册当前数据库实例到监听列表,所以无需配置SID_LIST_LISTENER部分啦。
4.3 客户端
一般说的TNS配置其实就是对tnsnames.ora文件的配置,tnsnames.ora有客户端的配置。在一个多IP环境中,TNS也可以配置多个远程IP地址。
下面是一个配置示例:
# tnsnames.ora Network Configuration File: D:\HandDevTools\OracleDB\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
# 本地Oracle数据库
LOCAL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-COK2609)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
4.3.1 tnsnames.ora 的ADDRESS_LIST 部分
ADDRESS_LIST 部分包含了Oracle数据库服务器的监听地址信息,也就是要告诉TNS数据库可通过这个地址和客户端进行通讯;
参数名 | 意义 |
---|---|
PROTOCOL | 一般是TCP协议 |
HOST | 服务器的ip地址/主机名 |
PORT | 端口,服务器的监听程序配置在哪个端口就填哪个端口 |
4.3.2 tnsnames.ora 的CONNECT_DATA 部分
定义了客户端要连接的数据库,以及数据库的连接方式,(专用或共享)。
关于SID 和SERVICE_NAME的区别:
我的另一篇博客 :Oracle数据库中的 数据库域名、数据库名、全局数据库名、SID、数据库实例名、服务名 解释
4.4 服务器配置区别
- 服务器端主要配置监听器 LISTENER,供客户端连接,一般仅需要配置:listener.ora
- 客户端主要配置 ADDRESS_LIST 去连接服务器,一般仅需配置:tnsnames.ora
更多推荐
所有评论(0)