Linux中基于OCCI操作远程Oracle数据库

21 篇文章 0 订阅
13 篇文章 0 订阅

操作环境

操作系统内核:CentOS Linux release 7.6.1810(可通过命令cat /etc/redhat-release查看)
操作系统位数64位(可通过命令uname -p查看)
数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production(可通过SQL语句select * from v$version;查看)

操作过程

1.下载软件包

在Oracle下载如下四个文件,这里的rpm包的版本应当与Oracle数据库的版本相对应(比如我这里都是11.2),rpm包的位数应当与操作系统的位数相对应(比如我这里都是x86-64)。

64位Linux对应下载链接

在这里插入图片描述

2.安装软件包

下载后在rpm文件所在路径下执行命令rpm -ivh *.rpm进行安装,如果是Ubuntu等Debian系的Linux则需要借助alien将rpm文件转换为deb文件后通过dpkg安装。

如果安装成功,下面三个目录及文件应当会被导入(不同版本会略有不同),如果文件发生大量缺失可能是安装失败,建议通过命令rpm -e [软件包名称(不带rpm后缀)]卸载后重新安装而不是强制安装。

[root@localhost ~]# ls /usr/lib/oracle/11.2/client64/bin/
adrci  genezi  sqlplus
[root@localhost ~]# ls /usr/lib/oracle/11.2/client64/lib/
glogin.sql    libclntsh.so.11.1  libocci.so       libociei.so      libsqlplusic.so  libsqora.so.11.1  ojdbc6.jar      xstreams.jar
libclntsh.so  libnnz11.so        libocci.so.11.1  libocijdbc11.so  libsqlplus.so    ojdbc5.jar        ottclasses.zip
[root@localhost ~]# ls /usr/include/oracle/11.2/client64/
ldap.h         occiAQ.h       occiData.h     oci1.h         ociapr.h       ocidfn.h       ocikpr.h       odci.h         ori.h          ort.h          
nzerror.h      occiCommon.h   occi.h         oci8dp.h       ocidef.h       ociextp.h      ocixmldb.h     oratypes.h     orl.h          xa.h           
nzt.h          occiControl.h  occiObjects.h  ociap.h        ocidem.h       oci.h          ocixstream.h   orid.h         oro.h          
[root@localhost ~]# 

3.修改环境变量

~/.bash_profile中添加以下内容后执行命令source ~/.bash_profile使配置生效,添加后可通过export命令查看是否修改成功。

# --- OCCI begin ---

# 添加头文件搜索路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/oracle/11.2/client64/

# 添加静态链接库搜索路径
export LIBRARY_PATH=$LIBRARY_PATH:/usr/lib/oracle/11.2/client64/lib/

# 添加动态链接库搜索路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/11.2/client64/lib/

# 添加字符编码以避免中文乱码
export NLS_LANG=AMERICAN_AMERICA.UTF8

# --- OCCI end ---

4.执行测试程序

编译并执行以下代码,如果执行成功则表示数据库连接成功,其中数据库名称可通过SQL语句select instance_name from V$instance;获取。

#include <iostream>
#include <stdio.h>

#include <occi.h>

using namespace std;
using namespace oracle::occi;

int main() {
    Environment *env = Environment::createEnvironment();
    string name = "用户名";
    string pass = "密码";
    string srvName = "服务器IP地址:Oracle端口/数据库名称";

    try {
        Connection *conn = env->createConnection(name, pass, srvName);
        cout << "connect success" << endl;
        env->terminateConnection(conn);
    } catch (SQLException e) {
        cout << e.what() << endl;
    }

    Environment::terminateEnvironment(env);

    cout << "quit" << endl;

    return 0;
}
[root@localhost ~]# g++ main.cpp -o main -I/usr/include/oracle/11.2/client64/ -L/usr/lib/oracle/11.2/client64/lib/ -locci -lnnz11 -lclntsh
[root@localhost ~]# ./main 
connect success
quit
[root@localhost ~]# 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值