Ubuntu22.04安装和使用OCILIB库

一、安装oracle即时客户端

1.根据Oracle的版本对应下载

下载地址:

Instant Client for Linux x86-64 (64-bit) (oracle.com)

例如:

安装rpm包

#安装客户端

rpm -ivh *.rpm

2.配置环境变量

vim ~/.bashrc

如果是zsh,则vim ~/.zshrc

如果是/etc/profile,则vim /etc/profile

#ORACLE
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export TNS_ADMIN=/usr/include/oracle/11.2/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG='Simplified Chinese_China. AL32UTF8'

不知道在哪儿的可以用find命令找一下

find / -name client64 2>/dev/null  

3.配置tnsnames.ora文件

#创建目录
mkdir /usr/include/oracle/11.2/network/admin


#创建文件
cd /usr/include/oracle/11.2/network/admin
vim tnsnames.ora

#写入如下内容

xxxxxx =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xxxxxxx)
    )
  )

例如

ORACLE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = helowin)
    )
  )

SERVICE_NAME可以在数据库方使用lsnrctl status查看

4.尝试连接到数据库

sqlplus user/password@ConName

连不上查看1521端口是否放行

二、安装OCILIB库

1.下载安装

参考:linux下安装并调试ocilib(小白踩坑后记录) - litandy - 博客园 (cnblogs.com)

官网地址:Home | OCILIB (C and C++ Driver for Oracle) - Open source C and C++ library for accessing Oracle databases (vrogier.github.io)

下载地址:Releases · vrogier/ocilib (github.com)

下载完后,解压切换到文件夹下执行

cd /project/oci/ocilib-4.7.6/  

./configure CFLAGS="-O2 -m64 -std=gnu99" --with-oracle-lib-path=/usr/lib/oracle/11.2/client64/lib --with-oracle-headers-path=/usr/include/oracle/11.2/client64

编译成64位版本
-O2 -m64

为了防止报: "只允许在 C99 模式下使用‘for’循环初始化声明" 的错误,必须加上
-std=gnu99

后面是指定ocilib的库文件和头文件的位置

#最后执行
make && make install

#库应该是安装到/usr/local/lib

 2.环境变量

#将LD_LIBRARY_PATH更改为
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/project/oci/ocilib-4.7.6/src/.libs:/usr/local/lib

#改完后source一下,如果在.bashrc就
source ~/.bashrc

注意:LD_LIBRARY_PATH中的

/project/oci/ocilib-4.7.6/src/.libs

改为自己安装的地址

3.测试

testConn.cpp

#include "ocilib.hpp"
#include <iostream>

using namespace ocilib;
using namespace std;

int main()
{
    Environment::Initialize();
    Connection con("ORACLE","user","password");//ORACLE是在tnsnames.ora那设置的
    cout << "GetConnectionString:\t" << con.GetConnectionString() << endl;
    cout << "GetDatabase:\t" << con.GetDatabase() << endl;
    cout << "GetServer:\t"   <<con.GetServer() << endl;
    cout << "GetServerMajorVersion:\t" << con.GetServerMajorVersion() << endl;
    cout << "GetServerMinorVersion:\t" << con.GetServerMinorVersion() << endl;
    cout << "GetServerRevisionVersion:" << con.GetServerRevisionVersion() << endl;
    cout << "GetService:\t" << con.GetService() << endl;
    cout << "GetUserName:\t" <<con.GetUserName() << endl;
    cout << "IsServerAlive:\t"<< con.IsServerAlive() << endl;
    
    Environment::Cleanup();

    return 0;
}
g++ -o testConn testConn.cpp -I/project/oci/ocilib-4.7.6/include -L/project/oci/ocilib-4.7.6/src/.libs -locilib

根据自己安装的位置修改

怎么使用OCILIB的更多操作,可以查看官方文档或者问ChatGPT,很快能入手

官方文档:OCILIB (C and C++ Driver for Oracle): Introduction (vrogier.github.io)

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值