Red Hat Enterprise Linux AS4, C++ OCCI connect Oracle 9i

前提是已经安装好Oracle 9i。

1. 下载对应的ORACLE client安装。

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

因为没有9i的client提供下载了,我选择最接近的版本下载:

Version 10.1.0.5
Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
Download instantclient-basic-linux32-10.1.0.5-20060511.zip (31,413,713 bytes) (cksum - 384697539)

下载之后解压。

2. 先把示例代码给出来:

//oci.cpp#include <iostream>
#include <string>
#include <occi.h>
using namespace std;
using namespace oracle::occi;

int main()
{
    Connection *conn;
    Environment *env;
    Statement *stmt;

    //build a connection
    string struser("scott");
    string strpwd("tiger");
    string strconn_string("");
    cout << "1" << endl;

    env = Environment::createEnvironment(Environment::OBJECT);
    cout << "2" << endl;

    conn = env->createConnection(struser, strpwd, strconn_string);
    cout << "3" << endl;

    if( NULL != conn)
        cout << "conn success" << endl;
    else
        cout << "conn failed" << endl;

    //execute sql statement
    string strsql("select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) from dual");
    stmt = conn->createStatement(strsql);
    ResultSet *rset = stmt->executeQuery();

    while(rset->next())
    {
        string time = rset->getString(1);
        cout << "now time:" << time << endl;
    }

    //close resourses
    stmt->closeResultSet(rset);
    conn->terminateStatement(stmt);
    env->terminateConnection(conn);
    Environment::terminateEnvironment(env);

    return 0;
}

3. 编译

这里对g++的版本有要求,如果是g++ 3.x.x的,可能会爆出如下错误:

undefined reference to `oracle::occi::Environment::createEnvironment(orac le::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))‘

网上很多讨论这个错误的,解决办法是安装低版本的g++。



资料(可以不看):解决方案的出处:http://www.dbforums.com/showthread.php?1619980-Makefile-problem-for-OCCI-on-Oracle-9i

If you‘re getting the following error messages:

undefined reference to `oracle:occi::Environment::createEnvironment(oracle:occi::Environment::Mode, void*, void* (*)(void*, unsigned), void* (*)(void*, void*, unsigned), void (*)(void*, void*))‘

and

undefined reference to `oracle:occi::Environment::terminateEnvironment(oracle:occi::Environment*)‘

then you‘re probably running oracle9i on redhat 8.0. to solve this, download and install the following rpm‘s from this redhat link:

* compat-gcc-7.3-2.96.118.i386.rpm
* compat-gcc-c++-7.3-2.96.118.i386.rpm
* compat-libstdc++-7.3-2.96.118.i386.rpm
* compat-libstdc++-devel-7.3-2.96.118.i386.rpm

and compile with g++296 instead of g++. sure you‘ll be stuck with g++-2.96, but at least it will compile and run.



在谷歌搜索如下4个rpm包安装:

* compat-gcc-7.3-2.96.118.i386.rpm
* compat-libstdc++-7.3-2.96.118.i386.rpm
* compat-libstdc++-devel-7.3-2.96.118.i386.rpm 
* compat-gcc-c++-7.3-2.96.118.i386.rpm

请按照安装上述顺序安装rpm包,因为最后一个依赖于第一二三个。

如果安装的时候报错说“正在安装的g++与系统上存在的g++有冲突”,在rpm后加上-aid --force参数,如下:

sudo rpm -ivh xxx.rpm -aid --force

详情可见这篇文:http://www.cnblogs.com/duanguyuan/p/4118210.html

安装好此版本的g++后,就可以用以下命令编译了:

 g++296 -o oci -I /opt/oracle/product/rdbms/public/ -I /opt/oracle/product/rdbms/demo/ -I /home/oracle/instantclient10_1/ -L /opt/oracle/product/lib/ -L /opt/oracle/product/rdbms/lib/ oci.cpp -lclntsh -locci /usr/lib/libstdc++.so.5 -Wall -O -g

注意仔细看上边所包含的编译目录,先看看自己的$ORACLE_HOME在哪里,看看上述的目录都在不在。其中instantclient10_1目录便是第一步下载的Oracle client。

4. 运行

结果如下图

其他参考:

http://blog.csdn.net/gyanp/article/details/6107044

http://oradim.blogspot.com/2009/08/getting-started-with-occi-linux-version.html

时间: 2024-08-29 11:44:13

Red Hat Enterprise Linux AS4, C++ OCCI connect Oracle 9i的相关文章

Deploy Oracle 10.2.0.5 DataGuard on Red Hat Enterprise Linux 6.4

系统:Red Hat Enterprise Linux 6.4 数据库:Oracle 10.2.0.5.0 Patch Set 4 主机:10dg1 192.168.1.91 10dg2192.168.1.92 内存:1G 虚拟机:VBox 4.2.14 一,操作系统部分(略) 可以参考我之前写的博客 http://blog.csdn.net/aaron8219/article/details/38239065 二,数据库部分 *****主库配置***** 1. 开启归档,force loggi

SQL Server on Red Hat Enterprise Linux

本文从零开始一步一步介绍如何在Red Hat Enterprise Linux上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创建RHEL系统(Create Red Hat Enterprise Linux System) 1.      前提准备 由于本文主要研究SQL Server 2017在Linux上的搭建方法,从Install SQL Server on Linux中得知当前SQL Server 2017 CTP

SQL Server on Red Hat Enterprise Linux——RHEL上的SQL Server(全截图)

本文从零开始一步一步介绍如何在Red Hat Enterprise Linux上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创建RHEL系统(Create Red Hat Enterprise Linux System) 1.      前提准备 由于本文主要研究SQL Server 2017在Linux上的搭建方法,从Install SQL Server on Linux中得知当前SQL Server 2017 CTP

Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group

下面简单介绍一下如何在Red Hat Enterprise Linux上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 之前发表过一篇类似的文章是Configure Always On Availability Group for SQL Server on Ubuntu——Ubuntu上配置SQL Server Always On Availability Group,有对Ubuntu感兴趣的请看那一篇

setting up a IPSEC/L2TP vpn on CentOS 6 or Red Hat Enterprise Linux 6 or Scientific Linux

This is a guide on setting up a IPSEC/L2TP vpn on CentOS 6 or Red Hat Enterprise Linux 6 or Scientific Linux 6 using Openswan as the IPsec server, xl2tpd as the l2tp provider and ppp for authentication. We choose the IPSEC/L2TP protocol stack because

Red Hat Enterprise Linux 5.10在vmware10下的安装

Red Hat Enterprise Linux 5.10在vmware10下的安装 1.启动"新建虚拟机"向导程序.如下图,选择"自定义",点击"下一步" 2.选择虚拟机硬件兼容性,你可以根据自己需求选择,这里选择默认,如下图.单击"下一步" 3.指定虚拟机系统的安装方式.选择"稍后安装操作系统",如果选择"安装盘镜像文件(iso)",虚拟机启动后会自动执行快速安装,不方便用户控制安装

Configure Red Hat Enterprise Linux shared disk cluster for SQL Server

下面一步一步介绍一下如何在Red Hat Enterprise Linux系统上为SQL Server配置共享磁盘集群(Shared Disk Cluster)及其相关使用(仅供测试学习之用,基础篇) 一.      创建共享磁盘和 Cluster 微软官方配置文档:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-shared-disk-cluster-red-hat-7-configure. Linux Cluster结构

Configure Red Hat Enterprise Linux shared disk cluster for SQL Server——RHEL上的“类”SQL Server Cluster功能

下面一步一步介绍一下如何在Red Hat Enterprise Linux系统上为SQL Server配置共享磁盘集群(Shared Disk Cluster)及其相关使用(仅供测试学习之用,基础篇) 一.      创建共享磁盘和 Cluster 微软官方配置文档:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-shared-disk-cluster-red-hat-7-configure. Linux Cluster结构

oracle 11gR2 client安装(Red Hat Enterprise Linux Server release 5.5 (Tikanga) 安装ORACLE客户端)

安装DBD::ORALCE模块时报错: Running Mkbootstrap for DBD::Oracle () chmod 644 Oracle.bs rm -f blib/arch/auto/DBD/Oracle/Oracle.so gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=gener