当前位置:  数据库>oracle

Linux下OCI基础:配置Instant Client连Oracle数据库

    来源: 互联网  发布时间:2017-03-21

    本文导语: Linux下OCI连Oracle的基础----配置Instant Client连接oracle数据库 前段时间有位兄弟在我博客上找到一篇我以前写的用OCI链接oracle数据库配置方法的帖子,因为只是随手记录,那篇文章里面很多东西都没交代清楚,我看得懂人家看起来就...

Linux下OCI连Oracle的基础----配置Instant Client连接oracle数据库

前段时间有位兄弟在我博客上找到一篇我以前写的用OCI链接oracle数据库配置方法的帖子,因为只是随手记录,那篇文章里面很多东西都没交代清楚,我看得懂人家看起来就云里雾里。oracle声名在外又不是盖的,而那位老兄被上面逼得很急,加我qq问了我三四天总算才基本搞定OCI链接oralce数据库。

也不能怪那个老兄,不像用C连mysql很简单,官方文档汉化很全很详细,市面上销售的mysql书籍很多都有关于C连mysql数据库的例子和相关介绍。想想当初我弄C通过OCI接口连oracle数据库去新华书店/当当网把oracle有关的书籍找了个遍,全部都是介绍java,php,多奶等语言连oracle的例子介绍,仅仅只有一本《Oracle Spatial与OCI高级编程》有一些OCI的介绍,唯一的这本书对怎么配置OCI连接环境也只字不提。

oracle官方文档全英文还藏着捏着生怕别人看到,相对mysql的C详细汉化文档完全让人吐血;网上搜索也基本只能搜索到windows下的配置方法,linux下基本没有,我当时就是根据windows下配置方法和一些英文文档一步一步弄出来的。为了不让后来人重蹈那位老兄的覆辙,通过这篇文章,我从零开始一步一步详细地教大家在linux下用C语言通过OCI连接oracle数据库。

要说明一下,oracle有对应的client客户端安装包,但那个标准client包不但巨肥有400多M,把七七八八的东西全加进去了,而且在linux下限制很多发版安装不了(我记得Fedora就不行)。

首先,去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     这个则是包含的头文件

*Instant Client Package - SQL*Plus   sqlplus这个东西最好还是下一个装上,试验客户端是否配置好,查看sql语句执行结果都需要他。

下载文件路径设置:

/home/oracle/lib 存放Basic和sqlplus的各种库文件,因此在/etc/ld.so.conf文件中添加路径/home/oracle/lib ,还有就是在当前文件下为libclntsh.so.11.1库文件建个软连接 ln -s libclntsh.so.11.1 libclntsh.so 让代码连接动态库的时候能找到库文件。

/home/oracle/include 存放SDK的头文件。

配置好以后发现在终端运行sqlplus链接oracle数据库错误:ERROR:ORA-12541: TNS:no listener  网络上一搜索都说是没有配置好oracle数据库的监听器或者是监听器没有启动,而那太oracle10g数据库的监听器明明启动了,而且网内另外一台windows机器安装了oracle client客户端用sqlplus能链接并操作数据库。

连sqlplus都报一样的错误那就不是sqlplus或者是oci的问题了,是instant的环境配置问题鸟。在百度/狗狗上搜索一通,发现配置oracle的instant,要配置一个环境变量参数:ORACLE_HOME 。用export命令只对当前运行的系统有效,重启系统后就没了,因此要做到一次配置永久生效就要编辑 ~/.bashrc 文件,在文件末尾加上一句:

export ORACLE_HOME=/home/oracle/lib

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

最后在 $ORACLE_HOME/network/admin 目录(没有就新建)下新建一个oracle配置文件tnsnames.ora文件 ,我的tnsnames.ora是从其他机器上直接拷过来的,内容如下:

# tnsnames.ora Network Configuration File: /home/oracle/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

TEST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = test)

)

)

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

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

[mgqw@localhost ~]$ echo $ORACLE_HOME

/home/oracle

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

检查完成以后运行sqlplus登录数据库成功!例子如下,运行C程序链接数据库也成功!总算把环境配好了。

[mgqw@localhost ~]$ sqlplus uname/pswd@dbname

SQL*Plus: Release 11.1.0.7.0 - Production on Sun May 31 14:22:00 2009

Copyright (c) 1982, 2008, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

SQL> select * from t1;

A        B

---------- ----------

0        3

2        3

20        3

21        3

8        1

9        1

30       32

-1        2

1        4

3        6

5        8

A        B

---------- ----------

7       10

22        2

26        2

14 rows selected.

下面补偿一点配置文件说明:

tnsnames.ora文件放在客户端机器上,并且在默认状态下存储在ORACLE_HOME/network/admin目录中。 sqlnet.ora文件控制着客户端Oracle Net Services的行为,例如跟踪级别和会话特性。我们已经知道了listener.ora和init.ora文件的用途和位置。

从根本上讲,当客户发出请求时,通过使用tnsnames.ora文件首先解析Oracle Net Services的名称。tnsnames.ora文件中的参数将该请求指引到适当的数据库节点。监听器进程监听客户请求,并且将其与一个服务器进程相连接。该请求将被处理,其结果被返回到客户端机器。


    
 
 

您可能感兴趣的文章:

  • Linux内核中影响tcp三次握手的一些协议配置
  • LINUX如何配置网卡,配置TELNET,急!在线等待!
  • Linux下NFS服务配置详解
  • 求xmanager3.0 配置root用户,连接redhat linux 6.0 配置文档
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 高分求救!!!怎样在linux下配置tomcat文件?同时配置sqlServer数据库?
  • 何处有 Linux 内核编译配置详细的中文介绍? 我在重新配置编译时老是出错:-(
  • 安装linux的最低配置:硬盘,内存,以及cpu的最低配置?多谢赐教!
  • 请问:我在win2000下装了一个vMware4.5,又装了一个linux9.0,可是不会配置网络,我的虚拟机已经配置好了桥连接,可是在linux下我不知道
  • LINUX的一段DHCP配置怎样在WINDOWS 2003上配置相同的功能
  • linux路由器配置,内核配置中怎么找不到optimize as router not host选项!
  • to: wjmmml(笑着悲伤),有没有linux下的配置java、tomcat等等其他的配置文档啊,请帮忙
  • 大家好!我已经装好了红旗Linux桌面3.2正式版产品。现在我想配置通过局域网上网??请问我本机如何配置????
  • 请推荐一个配置要求低linux安装,我打算装上用来学习在linux上面做开发
  • linux下网络配置
  • 使用secureFX连接到linux上需要在linux上配置什么
  • LINUX(RH)下配置文件集
  • 求xmanager3.0 配置root用户,连接redhat linux 6.0 配置文档 iis7站长之家
  • 求教:Linux下网络配置的问题
  • 我机器配置不高,装了VMware,想装个redhat linux学linux
  • tomcat&Apache linux下配置
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • 请问在红旗Linux多功能服务器版上(不是数据库服务器版)能否正常安装使用Oracle?红旗Linux数据库服务器版要比红旗Linux多功能服务器版贵
  • 请问Linux数据库编程是否也可以支持通用的SQL语言进行数据库编写.
  • Linux下Oracle数据库,dbstart持续不动,数据库无法启动解决
  • 请教在linux系统开发环境下,有没有db和dbf数据库引擎,如何使用这个数据库?
  • linux小白提问linux备份oracle数据库的问题
  • 装linux enterprise3 ,没有选择数据库,自行安装了mysql-max-5.0.22-linux-i686,请问
  • Linux不是免费的嘛,怎么在红旗的网站只有桌面版下载?没有server版下载?哪有红旗Linux数据库服务器3.0版下载?
  • 【急……】求助linux数据库相关问题
  • linux下不知有什么小型的数据库?要求速度比较快,开销最小。并且支持单文件数据库及多表的
  • linux上安装oracle 数据库后,是否能写shell程序实现数据库的自动启动。
  • 千分求Linux 下数据库编程的问题!急!
  • 刚接触linux,公司要一个web服务器和一个数据库服务器,请问现在用linux哪个版本好,给点建议吧
  • 关于Linux与Windows之间数据库互相访问的问题。
  • linux下用什么办法连接oracle数据库并且读取数据呢?(用c++代码实现时)
  • 求教,LINUX里用C语言读取微型数据库文件方法
  • linux开机自启动程序可以访问数据库吗?
  • linux下能调用*.sql备份的数据库数据么?
  • 嵌入式linux下数据库使用
  • Linux 下的C语言实现数据库连接池操作。
  • linux数据库,高手指点
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3