Linux中OCI开发库的配置

Oracle调用接口(Oracle Call Interface,简称OCI)提供了一组可对Oracle数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取Oracle数据库的目的。

注:安装Oracle客户端实际上就是为了提供一些so文件,部署到生产环境时,实际上只需要将开发环境下安装客户端得到的so文件连同编译好的ocilib文件一同复制过去就可以了。但是实际在应用的时候必然需要使用sqlplus等工具,因此实际上在生产环境上还是非常有必要安装客户端的。

1、Oracle客户端

因为需要使用ocilib来操作部署在其他电脑上的数据库,需要安装Oracle客户端;注意,无需下载完整的Oracle客户端,下载安装oracle-instantclient(即时客户端)即可,官网下载地址是:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 。有很多类型的包可供下载,每种包又分为.zip和.rpm两种格式,zip包相当于解压后免安装版,rpm包需要安装。下载的版本要对应你所连接的数据库的具体版本及位数,如我要连接的数据库的版本信息是:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 -64bit Production

所以我选择64位的11.2.0.4.0版本来下载。下面以rpm格式包安装配置来详细展开。

1)要远程连接Oracle数据库,且要使用ocilib来操作数据库,则至少需要下载以下三个包:

oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm 
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

其中

  basic是基础包,使用其的目的是运行OCI、OCCI、JDBC-OCI这几个应用程序;

  sqlplus是补充包/文件,目的是运行sql*plus的即时客户端;

  devel等同于oracle-sdk,包含头文件和示例文件,目的是开发Oracle应用程序;

以上三个千万不要少。

其余的可选的还有:

oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm  --补充包/文件,为运行ODBC环境附加库;
oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm  --补充JDBC下的XA、国际标准、行集操作;

2)使用rpm -ivh [包名]进行安装,

如:

rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

[

注:Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb。

sudo apt-get install alien #alien默认没有安装,所以首先要安装它

sudo alien xxxx.rpm #将rpm转换位deb,完成后会生成一个同名的xxxx.deb

sudo dpkg -i xxxx.deb #安装

]

安装的文件默认放在两个位置:

头文件:/usr/include/oracle/11.2/client64/下,如果在使用时报错找不到头文件,记得看路径是否是这个。

包文件:/usr/lib/oracle/11.2/client64/下,包含{bin、lib}两个文件夹。

3)创建文件夹:#mkdir -p /usr/lib/oracle/11.2/client64/network/admin/

4)创建监听文件,并添加内容:#vi /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.101)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = DTGK)
    )
  )

注:这个文件只是用于提供连接字符串的,所以无需重启oracle客户端,只要保存即生效。

5)配置环境变量

export  ORACLE_HOME=/usr/lib/oracle/11.2/client64
export  TNS_ADMIN=$ORACLE_HOME/network/admin
export  NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export  PATH=$ORACLE_HOME/bin:$PATH

以上内容放到/etc/profile中,或者,在/etc/profile.d/中增加一个sh文件,将内容放在其中。

注: . /etc/profile可以立即生效,注意.后面有个空格

6)连接数据库测试:

方法1:#sqlplus hb/hb@ORCL

这种方式就是走的tnsnames.ora

方法2:#sqlplus hb/hb@192.168.0.101:1521/dtgk

这种方式无需配置tnsnames.ora

 

2、安装配置OCI

1)下载地址:http://vrogier.github.io/ocilib/

2)解压ocilib

tar -xzvf ocilib-4.6.2-gnu.tar.gz

3)进入该目录:cd ocilib-4.6.2;然后./configure进行配置

./configure --with-oracle-lib-path=/usr/lib/oracle/11.2/client64/lib --with-oracle-headers-path=/usr/include/oracle/11.2/client64

4)make

5)make install

默认安装在/usr/local/lib下。

2)配置环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

以上内容放到/etc/profile中,或者,在/etc/profile.d/中增加一个sh文件,将内容放在其中。

注: . /etc/profile可以立即生效,注意.后面有个空格

3、成功后示例

#include "ocilib.h"
#include <stdio.h>

int main()
{
    OCI_Connection * cn = NULL;

    if ( !OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT) )
    {
        return -1;
    }

    cn = OCI_ConnectionCreate("192.168.0.101:1521/dtgk","hb", "hb", OCI_SESSION_DEFAULT);
    if ( cn != NULL )
    {
        printf("%s\n", OCI_GetVersionServer(cn));

        OCI_ConnectionFree(cn);
    }
    
    OCI_Cleanup();

    return 0;
}

注:在ocilib源码包的doc目录下有SDK文档说明

参考:https://www.cnblogs.com/codingmengmeng/p/7450503.html

           https://blog.csdn.net/rznice/article/details/93034619

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值