oracle instant client,tnsping,tnsnames.ora和ORACLE_HOME

前段时间要远程连接oracle数据库,但是又不想在自己电脑上完整安装oracle客户端,于是到oracle官网下载了轻量级客户端instant client。这玩意没有图形界面,全靠sqlplus远程连接服务器,所以不占地方,正好满足我这种追求“简单就好”的强迫症患者需求。

但是呢,可能是服务器那边没开监听端口,我在自己的机子上尝试了各种配置,包括tnsnames.ora,sqlnet.ora等,远程连接均告失败。为了排查问题,我先ping了一下服务器的外网地址,发现没问题。网上说,光ping还是不够的,还要再tnsping一下。

tnsping,只看名字的话,似乎也是ping的一种。但是,这个工具只包含于完整的oracle客户端里,如果你安装的是instant client,就无法使用tnsping。我恰好用的就是instant client,是不是很悲剧?不过,当我到OTN Community逛了一圈之后,我发现tnsping也并非那么神秘。OTN Community上面有个帖子把tnsping讲得很透彻,我打算转述于此。原帖在https://community.oracle.com/thread/2434899?start=0&tstart=0,有兴趣的可以看下。

tnsping所能做的,就是从TNS连接字符串中读取HOST和PORT参数,打开一个套接字连接,然后向监听发送一个ping,监听则以一个pong来响应。tnsping不能让TNS连接字符串中的其他参数生效,不能确定数据库实例和数据库服务的可用性,也不能确定诸如SID, SERVICE_NAME或INSTANCE_NAME等参数是否有效。可见,tnsping从来都不是多么高端的工具,很多人用它测试TNS连接字符串,它只是被用烂了而已。

instant client没有tnsping工具?不要紧,因为你可以用telnet <host> <port>代替tnsping。 连接测试成功之后,你再断开telnet即可。

前面一直在说tnsping读取HOST和PORT参数,问题来了:这些参数在哪?要解决这个问题,就不得不提一个至关重要的配置文件:tnsnames.ora。

tnsnames.ora是一种配置文件,它定义了建立到一个数据库的连接所需的各种地址。如果你安装了完整的oracle客户端,该配置文件应该位于ORACLE_HOME\NETWORK\ADMIN目录下。其形式如下:

<addressname> =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = <hostname>)(Port = <port>))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = <sid>)
 )
)

一个完整的tnsnames.ora示例如下:

ORA11 =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = ORA11)
 )
)

当然,如果你安装的是instant client,这个文件是不存在的,不过,你完全可以自建一个tnsnames.ora放在特定目录下。tnsnames.ora在客户端和服务器端各有一份。这些内容我参考了http://orafaq.com/wiki/Tnsnames.ora,上面还有更加详细的说明。那么,tnsnames.ora到底起了什么作用?

其实,这个配置文件有点像我们电脑里面的hosts文件。这个文件实际上也是一个配置文件,作用就是把一些常用网址的域名和它的IP地址建立映射,当你在浏览器中输入一个网址域名,按下回车,系统首先自动从hosts文件中寻找该域名对应的IP地址,找到后就打开该地址对应的网页;如果没找到对应的IP地址,系统就把网址提交到DNS域名解析服务器上,由服务器解析出相应的IP地址。

hosts文件将便于记忆的网址解析为IP地址,tnsnames.ora则把便于记忆的TNS别名解析为连接字符串。连接字符串的格式通常为“(DISCRIPTION=(ADDRESS=<address details>)(CONNECT_DATA=<database
details>)”。对比上面给出的tnsnames.ora示例,可以看出实际上tnsnames.ora正是包含了这个所谓的连接字符串。所以,当你使用sqlplus远程登录数据库时,你可以有两种方式。一种方式是把连接字符串完全写出来,如下所示:

sqlplus scott/[email protected]"(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP)(HOST=my-dev.mydomain.com)(PORT=1521)) (CONNECT_DATA= (SID=orcldev) (SERVER=dedicated)))"

另一种是直接将TNS别名写出来,以上面给出的tnsnames.ora为例:

sqlplus scott/[email protected]

显然,第二种方式更加简单。尤其在你需要频繁登录数据库的时候,用配置文件无疑会让你的效率大大提升,这个道理就像你为了编译方便而写makefile文件是一样的。

刚才说过,如果你安装的是instant client,它不带tnsping工具,没关系,你只要明白tnsping是干什么的就行。事实上,它只做三件事:1.如果你指定了TNS别名,它将别名解析为连接字符串(如果你登录时直接使用了完整的连接字符串,则跳过此步骤);2.根据连接字符串的HOST参数,测试你要连接的监听器的IP地址;3.根据连接字符串的PORT参数,测试你要连接的监听器的相应端口。显然,除了第1件事以外,第2,3件事你都可以使用telnet
<hostname> <port>代替。

instant client还有个不太方便的地方,刚才也提到过,就是它没有自带tnsnames.ora文件。不过,刚才也说过,你可以自己建立一个tnsnames.ora文件。那么,oracle客户端怎样找到这个文件呢?这就需要你添加一个名为TNS_ADMIN的环境变量,保存tnsnames.ora地址。系统会根据这个变量给出的地址找到对应的tnsnames.ora文件。

最后简单说一下ORACLE_HOME。这个变量表示oracle的安装目录,也可以表示一个指向oracle安装目录的环境变量。在windows下,如果想要查看当前的ORACLE_HOME,使用echo命令即可。要想添加或者设置ORFACLE_HOME环境变量,使用set命令即可。当然,在注册表中也可以找到ORACLE_HOME,可能位置是HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE。更加具体的内容可以参考http://orafaq.com/wiki/ORACLE_HOME。

oracle instant client,tnsping,tnsnames.ora和ORACLE_HOME,布布扣,bubuko.com

时间: 2024-12-29 23:15:47

oracle instant client,tnsping,tnsnames.ora和ORACLE_HOME的相关文章

Oracle instant client在windows下的安装和使用【转】

[转] Oracle instant client在windows下的安装和使用 转载自 placidcreate 最终编辑 placidcreate [安装]从oracle官方网站下载instant client文件,(http://www.oracle.com/technetwork/topics/winx64soft-089540.html) 一般来说,有basic.sqlplus.odbc.jdbc,就足够用的了: instantclient-basic-win32-11.2.0.1.0

如何安装Oracle Instant Client

Oracle Instant Client是Oracle发布的轻量级数据库客户端,下面我们来看看官方的定义: Instant Client allows you to run your applications without installing the standard Oracle client or having an ORACLE_HOME. OCI, OCCI, Pro*C, ODBC, and JDBC applications work without modification,

Oracle Instant Client(即时客户端) 安装与配置

一.下载 下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 这是Oracle Instant Client的下载首页,有很多种版本可供下载. 但要注意第三方工具如:PL/SQL Developer和Toad的版本,32位的要对应32位的OracleInstant Client,不要因为系统是64位的就下载64位的,这个要注意. 二,配置 把下载的instantclie

Oracle Instant Client的安装和使用

转自:https://www.cnblogs.com/chinalantian/archive/2011/09/09/2172145.html 根据自己需求到Oracle网站(http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html)下载相应的Instant Client版本软件包,各软件包的描述如下: Instant Client Package Description Notes

PL/SQL(x64)借助Oracle Instant Client连接Oracle配置教程

PL/SQL在Windows x64位操作系统下安装配置稍显复杂,为了方便Oracle库友使用这个便利的工具,先提供PL/SQL借助Oracle Instant Client(该文件比Oracle Client文件小很多,可为用户节省安装时间)连接数据库配置教程一份,有需要的盆友请拿走. 1.  下载Oracle Instanct Client(Oracle即时客户端) 登录Oracle官方网站,下载Oralce即时客户端.你能够看到不同系统的客户端,根据自己的需要选择对应的版本,下载完毕后,解

ORACLE Instant Client 配置

http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html 在官网下载对应的 Instant Client 包,解到 C:\ . 运行以下批处理,即可. reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ORACLE_HOME /t reg_sz /d &q

Oracle instant client安装及PL/SQL Developer的配置

一.下载Oracle客户端 下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html 当前最新版本 Version 12.1.0.2.0 选择第一个Instant Client for Microsoft Windows (32-bit) 进行下载就可以了, 请不要下载64bit的,我试过,不能实现连接的. 把下载的instantclient-basic-nt-12.1.0.2.0.zip压缩包解压,放到 D:\insta

CentOs install oracle instant client

rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm rpm -ivh oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_6

oracle instant client配置(MAC OS)

~/.bash_profile export ORACLE_HOME=/opt/oracle/instantclient_11_2/ export DYLD_LIBRARY_PATH=$ORACLE_HOME export SQLPATH=$ORACLE_HOME export TNS_ADMIN=$ORACLE_HOME/network/admin export LANG=en_US.UTF8 export NLS_LANG=AMERICAN_AMERICA.UTF8 export NLS_D