Instant Client连接oracle的环境变量设置
创始人
2024-07-16 20:10:26
0

Instant Client连接oracle数据库,直接连接会出现问题,必须要设置环境变量,下面就让我们来了解一下Instant Client连接oracle的环境变量设置方法。

最近写个代码用OCI在局域网内链接oracle数据库,开始天真的以为像链mysql数据库那样简单:下载了头文件和库文件开发包后就可以直接链接数据库了,结果我发现我错了,oracle声名在外果然不是盖的。

首先,去oracle官网下载C语言的库文件和头文件网址如下,选择对应的Instant Client版本(我下载的都是zip包,没有下载rpm包,rpm包应该安装的时候就把那些东西配置好了
http://www.oracle.com/technology/software/tech/oci/instantclient/index.html
下面是linux i386版本的
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
Instant Client Package - Basic     里面包含了动态库文件 libclntsh.so.11.1(***版本可能不一样) 并将其加载到动态库搜索路径中去,这里就不说详细步骤了,有疑问百度/狗狗搜索,实在不行在下面留言。
*Instant Client Package - SDK     这个则是包含的头文件

运行程简单的C链接序报错: ORA-12541: TNS:no listener 网络上一搜索都说是没有配置好oracle数据库的监听器或者是监听器没有启动,而那太oracle10g数据库的监听器明明启动了,而且网内另外一太机器安装了oracle client客户端用sqlplus能链接并操作数据库(那个标准client快500M,太肥了,不想装),于是我也下载了sqlplus包: *Instant Client Package - SQL*Plus 配置好以后发现在终端运行sqlplus命令链接oracle数据库错误依旧:
ERROR:
ORA-12541: TNS:no listener
   
连sqlplus都报一样的错误那就不是oci的问题了,是instant的环境配置问题鸟。在百度/狗狗上搜索一通,发现配置oracle的instant,要配置两个环境变量参数:TNS_ADMIN 和 ORACLE_HOME 。用export命令只对当前运行的系统有效,重启系统后就没了,因此要做到一次配置***生效就要编辑 ~/.bashrc 文件,在文件末尾加上两句:

  1. export TNS_ADMIN=/home/oracle/network/admin  
  2. export ORACLE_HOME=/home/oracle 

注:ORACLE_HOME 环境变量的路径是解压 Instant Client Package - Basic zip包的解压路径,路径下包含了从Basic包里解压出来的so文件jar文件等。

TNS_ADMIN环境则是标识tnsnames.ora文件的路径,在 ORACLE_HOME 路径下新建立network文件夹,然后在network文件夹内新建admin文件夹在admin文件夹内有 tnsnames.ora 文件即可,至于为什么TNS_ADMIN要这么设置,oracle默认路径的层次结构就是这样,因此我也照抄,理论上说TNS_ADMIN 没必要一定要在 ORACLE_HOME 路径里面,我没试过,谁有兴趣可以去试试,我的tnsnames.ora是从其他机器上直接拷过来的,内容如下:

  1. # tnsnames.ora Network Configuration File: /home/oracle/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora  
  2. TEST =  
  3. (DESCRIPTION =  
  4.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))  
  5.     (CONNECT_DATA =  
  6.       (SERVER = DEDICATED)  
  7.       (SERVICE_NAME = test)  
  8.     )  
  9. )  
  10.  
  11. EXTPROC_CONNECTION_DATA =  
  12. (DESCRIPTION =  
  13.     (ADDRESS_LIST =  
  14.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))  
  15.     )  
  16.     (CONNECT_DATA =  
  17.       (SID = PLSExtProc)  
  18.       (PRESENTATION = RO)  
  19.     )  
  20. )  

 配置好上面这些后,注销用户重新登录,让 ORACLE_HOME 和 TNS_ADMIN 两个环境变量生效,检查方法很简单,分别在终端输入命令:

  1. [mgqw@localhost cutest]$ echo $ORACLE_HOME  
  2. /home/oracle  
  3. [mgqw@localhost cutest]$ echo $TNS_ADMIN  
  4. /home/oracle/network/admin 

如果像上面那样有路径输出则说明配置成功了,如果没有输出那重新再编辑一下 ~/.bashrc 看看哪里出了问题吧。

检查完成以后运行sqlplus登录数据库成功,运行C程序链接数据库也成功。
 

 

 

 

【编辑推荐】

ORACLE数据库设置编码

oracle日期格式化的实现

Oracle内存结构--SGA

查看oracle数据库版本的方法

带您了解ORACLE resource角色

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...