相关文章推荐
憨厚的手电筒  ·  Azure Service Bus ...·  11 月前    · 
爱逃课的葡萄酒  ·  Grails Error: No ...·  1 年前    · 
深沉的筷子  ·  Keras中model.evaluate() ...·  1 年前    · 
注册/登录

Instant Client连接oracle的环境变量设置

数据库 Oracle
在linux环境下,Instant Client连接oracle数据库需要设置环境变量,下文对该方法作了详细的说明,希望对您能有所帮助。

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 resource角色

责任编辑:段燃 互联网
点赞
收藏