前段时间要远程连接oracle数据库,可是又不想在自己电脑上完整安装oracleclient,于是到oracle官网下载了轻量级clientinstant client。

这玩意没有图形界面,全靠sqlplus远程连接server,所以不占地方,正好满足我这样的追求“简单就好”的强迫症患者需求。

可是呢,可能是server那边没开监听port,我在自己的机子上尝试了各种配置,包含tnsnames.ora,sqlnet.ora等,远程连接均告失败。为了排查问题。我先ping了一下server的外网地址,发现没问题。网上说,光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是一种配置文件,它定义了建立到一个数据库的连接所需的各种地址。

假设你安装了完整的oracleclient,该配置文件应该位于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在客户端和server端各有一份。这些内容我參考了http://orafaq.com/wiki/Tnsnames.ora,上面还有更加具体的说明。那么,tnsnames.ora究竟起了什么作用?

事实上。这个配置文件有点像我们电脑里面的hosts文件。

这个文件实际上也是一个配置文件,作用就是把一些经常使用网址的域名和它的IP地址建立映射,当你在浏览器中输入一个网址域名,按下回车,系统首先自己主动从hosts文件里寻找该域名相应的IP地址,找到后就打开该地址相应的网页;假设没找到相应的IP地址,系统就把网址提交到DNS域名解析server上,由server解析出相应的IP地址。

hosts文件将便于记忆的网址解析为IP地址,tnsnames.ora则把便于记忆的TNS别名解析为连接字符串。连接字符串的格式通常为“(DISCRIPTION=(ADDRESS=<address details>)(CONNECT_DATA=<database
details>)”。

对照上面给出的tnsnames.ora演示样例。能够看出实际上tnsnames.ora正是包括了这个所谓的连接字符串。所以,当你使用sqlplus远程登录数据库时,你能够有两种方式。

一种方式是把连接字符串全然写出来,例如以下所看到的:

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

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

sqlplus scott/tiger@ORA11

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

刚才说过,假设你安装的是instant client,它不带tnsping工具。没关系,你仅仅要明确tnsping是干什么的即可。

其实,它仅仅做三件事:1.假设你指定了TNS别名,它将别名解析为连接字符串(假设你登录时直接使用了完整的连接字符串,则跳过此步骤);2.依据连接字符串的HOST參数,測试你要连接的监听器的IP地址。3.依据连接字符串的PORT參数,測试你要连接的监听器的对应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的更多相关文章

  1. 如何安装Oracle Instant Client

    Oracle Instant Client是Oracle发布的轻量级数据库客户端,下面我们来看看官方的定义: Instant Client allows you to run your applica ...

  2. Oracle instant client在windows下的安装和使用

    安装 * 从oracle官方网站下载instant client文件,一般来说,有basic.sqlplus.odbc.jdbc,就足够用的了: instantclient-basic-win32-1 ...

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

    一.下载 下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 这是Ora ...

  4. Oracle Instant Client的安装和使用

    转自:https://www.cnblogs.com/chinalantian/archive/2011/09/09/2172145.html 根据自己需求到Oracle网站(http://www.o ...

  5. Oracle Instant Client 安装配置

    一.下载 下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 这是Ora ...

  6. Oracle instant client及pl sql developer的使用

    Oracle instant client的使用   最近重装了操作系统,使用的是Windows7 x64的版本,不准备安装Oracle,于是从官网上看到了Instant Client.   兴冲冲下 ...

  7. win7 PLSQL Developer 10/11/12 连接 Oracle 10/11/12 x64位数据库配置详解(与32位一样,只要注意对应Oracle Instant Client版本) tns 错误和 nls错误

    环境win7 x64 PLSQL Developer 10 与 11 Oracle Instant Client 10 与 12 参考http://blog.csdn.net/chen_zw/arti ...

  8. oracle 网络访问配置tnsnames.ora文件的路径

    转自:https://blog.csdn.net/jaray/article/details/22379811 oracle 网络访问配置tnsnames.ora文件的路径 oracle 9i  是: ...

  9. ORACLE Instant Client 配置

    http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html 在官网下载对应的 ...

随机推荐

  1. fiddler在ios10.3系统抓包https失败原因解决

    一直是按照以往的设置抓包,设置代理ip,通过Safari下载安装证书,抓包https怎么显示证书无效呢?难道证书被apple设为黑名单了?google后发现,IOS10.3以后,安装了证书不是默认启用 ...

  2. xss payload

    xss payload可以使用富客户端文本书写,大多数用javascript,少部分用actionscript等等. 1.盗取cookie,发起cookie劫持 使用xss漏洞插入cookie.js ...

  3. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错

    一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...

  4. 【笔记】关于require.js 的用法

    最近忙于学校的一个新网站建设,对于以前的前端程序编写方式的不正规特意上网学习了require.js 的用法,使此次的工程更加有条理同时符合当前前端的开发模式——前端模块化. 网上有不少很好的学习文章这 ...

  5. Servlet3.0使用@WebServlet注解配置问题记录

    文档说@WebServlet的配置属性都是可选的,不是必需的. 经实践,将一个Servlet配置成load-on-startup的Servlet时,若只添加loadOnStartup属性,该Servl ...

  6. ESLint:can not ESLint annotation...

    刚开始用webstorm开发VUE,提示这个东西: 安装一个npm库就可以了 命令行执行:npm install eslint -g

  7. [Algorithm] Fibonacci problem by using Dynamic programming

    vThere are three ways to solve Fibonacci problem Recursion Memoize Bottom-up 'First Recursion approa ...

  8. Animation学习笔记

    关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式: 1. Tween Animation:通过对场景里的对象不断做图像变换(平移.缩放. ...

  9. LoadRunner录制:检查点

    LoadRunner怎么request是否执行成功呢?它通过判断服务器返回的HTTP状态码,如果是200 OK,那么VuGen就认为脚本运行通过. 但是很多时候事务执行失败并不一定返回错误的状态码,比 ...

  10. 使用Loadrunner进行文件的上传和下载

    最近使用loadrunner中需要录制文件的上传和下载,上传功能模块利用录制可以直接实现,下载无法实现,在网上找到了一段代码,自己动手试验了下,发现没有用 辛苦找到的,还是记录下吧 (1)LoadRu ...