打造ubuntu下精简版的oracle客户端…

打造ubuntu下精简版的oracle客户端及pro*c编译环境

  1. oracle的pro*c简介
  2. 安装oracle客户端
  3. 安装sqlpus
  4. 安装pro*c

  ORACLE的PRO*C曾经很流行,虽然现在不被推崇,但是已经比较成熟项目依然使用,所以打造自己的pro*c编译环境还是有意义的。现在网上搜一下,可能还可以找得到windows下面的pro*c编译环境,但是linux下基本上没有,当然你愿意啃E文的话,可能还是有一些的,但是大部分都只能通过介绍oracle 9i的安装来获得我们需要的pro*c编译环境,如果只是单纯想安装pro*c,那是没有的,所以才想到写下来记录一下。

  在linux安装orace 9i是很麻烦的事情,首先,按照官方的说法,oracle是只支持red hat的,虽然服务器大部分都是,但我想作为开发人员,肯定用的发行版都是五花八门了。总体而言,在ubuntu下安装oracle9i主要存在这几点麻烦:1.需要打补丁,而且补丁也难下;2.安装时中文不支持;3.为了这个功能要装这个庞然大物;4.部分动态链接库很老的版本不好找;5.oracle9i的安装光盘实在不好拿到;6.安装时间好长。

  首先,当然是到oracle的网站下载文件了,下面是地址 http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html。我们主要要安装这几个,oracle精简客户端,sqlplus以及pro*c。所以要分别下载这几个文件instantclient-basic-linux32-11.1.0.7.zip,instantclient-sqlplus-linux32-11.1.0.7.zip,instantclient-precomp-linux32-11.1.0.7.zip。

  现在安装oracle精简客户端及sqlplus。首先创建目录并解压文件,如下:

$ cd /opt
$ sudo mkdir ora11g & cd ora11g
$ unar instantclient-basic-linux.x64-11.2.0.4.0.zip
$ unar instantclient-sqlplus-linux.x64-11.2.0.4.0.zip

$ unar instantclient-precomp-linux.x64-11.2.0.4.0.zip

$ cd  instantclient_11_2
$ sudo mkdir lib bin
把所有程序文件拷入bin,库文件拷入lib

 

cd lib

sudo ln  -s libclntsh.so.11.1 libclntsh.so

编辑一下主目录下.bash_profile设置几个环境变量

export ORACLE_HOME=/opt/ora11g/instantclient_11_2

export TNS_ADMIN=$ORACLE_HOME/network/admin

export NLS_LANG='simplified chinese_china'.UTF8

export PATH=$ORACLE_HOME/bin:$PATH



将找个要用的服务名tnsnames.ora拷到相应路径下,像我的是/opt/ora11g/instantclient_11_2/network/admin,没有目录则新建

加载一下环境变量

$. ~/.bash_profile

还要安装一下aio库还要将oracle的路径加进ld.conf

$sudo apt-get install libaio1

$sudo vi /etc/ld.so.conf.d/ora11gcliet.conf 

加上如下内容: 

/opt/ora11g/instantclient_11_2/lib

更新一下

$sudo ldconfig   -v

应该可以了

$sqlplus user@service_name/password

image

 


写个helloworld验证一下我们的pro*c能不能用了。。


#include

#include


EXEC SQL INCLUDE sqlca;

EXEC SQL INCLUDE oraca;

EXEC ORACLE OPTION(ORACA=YES);


EXEC SQL BEGIN DECLARE SECTION;

        VARCHAR v_username[20];

        VARCHAR v_password[20];

EXEC SQL END    DECLARE SECTION;


void sqlerror();


int main(){

        v_username.len = sprintf(v_username.arr,"tpibs@ywdev");

        v_password.len = sprintf(v_password.arr,"tppw123");


        EXEC SQL WHENEVER SQLERROR DO sqlerror();

        EXEC SQL CONNECT :v_username IDENTIFIED BY :v_password;


        printf("\nconn ORACLE ,user:%s\n",v_username.arr);


        EXEC SQL COMMIT WORK RELEASE;


        return 0;

}


void sqlerror(){

        EXEC SQL WHENEVER SQLERROR CONTINUE;

        printf("\nORACLE error detected:\n");

        printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc);

        Exec sql rollback RELEASE;

}


再写个简单的makefile

 

复制代码
TARGET   =  hello
SRCS    
=  main . c
OBJS    
=  main . o
COMMLIB 
=   - lpthread  - lclntsh

LINKER  
=  $(CC)
RM      
=   / bin / rm  - f
PROC    
=  proc

PROCFLAGS 
=  code = ANSI_C ireclen = 2048  oreclen = 2048  parse = none include =/ usr / include \
    include
=/ usr / include / linux \
    include
=/ usr / local / include \
    include
=/ usr / lib / gcc / i486 - linux - gnu / 4.3 . 3 / include

CFLAGS  
=   - I$(ORACLE_HOME) / precomp / public \
          
- L$(ORACLE_HOME) / lib

. SUFFIXES :   . . . pc

. c . o :
        $(CC) 
- $(CFLAGS) $ <</span>

.pc.c:
        
@echo "PROC ."
        
-$(PROC) iname=$*.pc $(PROCFLAGS)

$(TARGET)
: $(SRCS) $(OBJS)
        $(CC) 
-$@ $(OBJS) $(CFLAGS) $(COMMLIB)

clean 
:
        $(RM) $(TARGET) $(OBJS) $(TARGET
:%=%.c)
复制代码

 

make 
./ hello

conn ORACLE 
, user : tpibs @ywdev
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1)rpm格式包安装配置 1.1 下载以rpm后缀名的包,以11.2.0.4.0 本为例,其中基础包basic、sql*plus、devel包建议默认下载,其他包视情况而定: oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm --基础包,为了运行OCI、OCCI、JDBC-OCI 这几个应用程序; oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm --补充包/文件,是为了运行sql*plus的即时客户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、国际标准、行集操作; oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm --包含头文件和示例文件,为开发Oracle应用程序的即时客户; 1.2 使用rpm -ivh [包名] 进行安装, 如:rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 安装的文件默认放在两个位置: 头文件:/usr/include/oracle/11.2/client64/ 下,如果在使用时报错找不到头文件,记得看路径是否是这个。 包文件:/usr/lib/oracle/11.2/client64/ 下,包含{bin、lib}两个文件夹; 1.3 创建文件夹: #mkdir -p /usr/lib/oracle/11.2/client64/network/admin/ 1.4 创建监听文件,并添加内容 #vim /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = *IP*)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = *SID*) ) ) 1.5 配置环境变量 #vim ~/.bashrc --根目录下为全局使用,为限制用户权限,可只修改某一用户的环境变量 export ORACLE_HOME=/usr/lib/oracle/11.2/client64 export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG='simplified chinese_china'.ZHS16GBK export LD_LIBRARY_PATH=$ORACLE_HOME/lib export PATH=$ORACLE_HOME/bin:$PATH 1.6 使配置完的环境变量生效 #source ~/.bashrc 1.7 连接数据库测试 #sqlplus /nolog SQL>conn scott/tiger@orcl 2)zip格式包安装配置(只以basic包做为示例) 2.1 下载包:oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.zip 2.2 将包文件解压到指定目录下: #unzip oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.zip 解压后的文件存放路径可以自行设定,但是与后面环境变量设定有关,本文设定/home/orcl/ 下。 头文件目录:/home/orcl/sdk/include/ 库文件目录:/home/orcl/instantclient_11_2/ 2.3 创建 network/admin/ 目录:mkdir -p /home/orcl/instantclient_11_2/network/admin/ 2.4 创建监听文件 tnsnames.ora #vim /home/orcl/instantclient_11_2/network/admin/tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.232.131)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) 2.5 配置环境变量 #vim ~/.bashrc export ORACLE_HOME=/home/orcl/instantclient_11_2 export TNS_ADMIN=$ORACLE_HOME/network/adminexport export NLS_LANG='simplified chinese_china'.ZHS16GBKexport export LD_LIBRARY_PATH=$ORACLE_HOME export PATH=$ORACLE_HOME:$PATH 2.6 配置完成后,将环境变量生效 #source ~/.bashrc 2.7 测试连接

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值