nodejs下的oracle驱动安装(linux版)

luoyjx · 2014-07-31 08:31 · 6974次阅读

1.oracle的 instantclient 的安装

        

首先,你需要到官网中下载这几个文件

a.       oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm

b.       oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm

c.       instantclient-sdk-linux-x86-64-11.2.0.2.0.zip

版本可以自行选择,但是两个 rpm 包的版本必须一致,三个都一致更好

 

安装步骤:

Rpm 包安装时,使用命令, rpm –ivh 包名称,即可看到安装进度,完成后, basic 包和 devel 分别被安装到了 /usr/lib/ 下的 oracle 目录和 /usr/include 下的 oracle 目录。

 

       sdk的zip包,是用命令 unzip 包名称 解压后 cd 命令进入instantclient目录,使用命令cp –r sdk /usr/lib/oracle/11.1/client64/sdk ,将sdk复制到/usr/lib/oracle/11.1/client64/目录下并命名为sdk。

2. linux用户、组、权限的一些 ( 一点题外话 )

        

Linux 中,用户和组的概念,是和权限密切相关的,大致分为三类:读权限 ® 、写权限 (w) 、执行权限 (x) ,而在 linux 中,这三种权限分别带有他的值, r=4,w=2,x=1

         举例子:

         最左边一列就表示了对应这个目标的属性,可以分为 4 段

         d   rwx   r-x   r-x

         第一段 d 表示,他是一个目录( Directory ),如果是 - 的话表示是一个文件 ( 常见的两种 )

         d   rwx   r-x   r-x

         第二段,表示所属用户对于该目标拥有的权限,这里是 读、写、执行都有,从数值上来讲权限是 7 ,后面会说到数值的作用

         d   rwx   r-x   r-x

         大同小异,第三段也是权限,只是它代表的是某个用户组对于这个目标的权限,在这个组内的用户对它的权限都一样

         d   rwx   r-x   r-x

         第四段表示的是其他用户的权限,即除了所属用户和组用户的其他用户

 

         关于权限代表的值, 7 是怎么来的,前面说到每种权限代表的值,那么就是这么来的, 7 = 4 + 2 + 1 ,有什么用, 在改变某个文件权限的时候

         你可以使用 chmod 755 aaa.txt 这种方式方便简单,即为 aaa.txt 设置了 rwxr-xr-x 权限,当然,你也可以使用其他方式

         $ chmod u+x file                 给 file 的属主增加执行权限

  $ chmod 751 file                 给 file 的属主分配读、写、执行 (7) 的权限,给 file 的所在组分配读、执行 (5) 的权限,给其他用户分配执行 (1) 的权限

  $ chmod u=rwx,g=rx,o=x file      上例的另一种形式

  $ chmod =r file                 为所有用户分配读权限

  $ chmod a-wx,a+r   file      同上例

  $ chmod -R u+r directory          递归地给 directory 目录下所有文件和子目录的属主分配读的权限

  $ chmod 4755                            设置用 ID ,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。

 

 

       安装过程基本完成了,接下来开始配置。

**3.**配置node-oracle

        首先,安装 node-oracle 需要用到前面安装的 oracle instantclient ,在这之前有几个前提:

a.       安装 python 2.7( 测试过 2.6 可用 )

b.       C++ 编译所需要的( gcc ) 使用命令 yum install gcc  即可

c.       设置环境变量

以下环境变量需要设置到配置文件中,文件位置在 /root/.bash_profile

使用 vim /root/.bash_profile 来编辑此文件,刚进入时是只读状态,按以下 i 键,可以看到做下角变成了 INSERT 或者 插入,此时是输入模式,将以下输入到文件中后(注意:OCI_HOME是根据你自己的实际路径来的,版本等不一定完全和这里一样),此时还是输入模式,按一下 Esc 键退出输入模式到只读模式,再按 Shift+; (分号键)左下角变成一个冒号,这时接收指令,输入 wq 按下回车即保存并退出 vim 编辑器。

还有一个 重要 的步骤 ,执行命令source /root/.bash_profile****使刚才的环境变量生效

 

export OCI_HOME=/usr/lib/oracle/11.1/client64

export OCI_LIB_DIR=$OCI_HOME/lib

export OCI_INCLUDE_DIR=$OCI_HOME/sdk/include

export OCI_VERSION=11 #Integer. Optional, defaults to ‘11’

d.       创建软连接(符号连接,其实就和 windows 中的快捷方式差不多)

首先在 /usr/lib/oracle/11.1/client64/lib/ 创建动态链接库的软连接

cd /usr/lib/oracle/11.1/client64/lib/

ln –s libclntsh.so.11.1 libclntsh.so ( 可以注意到这里的 11.1 是前面安装 rpm 包的版本 )

ln –s libocci.so.11.1 libocci.so

 

在 /usr/lib 目录下创建软连接

cd /usr/lib

ln –s /usr/lib/oracle/11.1/client64/lib/libclntsh.so.11.1 libclntsh.so.11.1

ln –s /usr/lib/oracle/11.1/client64/lib/libocci.so.11.1 libocci.so.11.1

 

e.       Linux 中需要安装 libaio 包

yum install libaio

f.        配置动态连接库的环境变量到 oci 库的 lib 下

vim /root/.bash_profile

按 i 切换输入模式,在最后一行输入

LD_LIBRARY_PATH=/usr/lib/oracle/11.1/client64

         按 Esc , shift+; 输入 wq 保存退出,记得生效命令source /root/.bash_profile

 

        配置完这些环境之后就可以使用 npm install node-oracle 下载编译 node oracle 的驱动包了。这个过程一般出现的问题有几个:

a.       gcc 未安装

b.       环境变量配置不正确找不到 occi.h 和 oro.h 头文件(如果配置了还找不到,可以尝试把 /usr/lib/oracle/11.1/client64/sdk/include/ 中的这两个文件复制到 /usr/include 中)

c.       动态链接库文件找不到

d.        NLS_LANG的问题,这里我也遇到过,但是不太清楚原因,因为发现root用户的NLS_LANG和oracle用户的NLS_LANG可能不同,后来我直接没设置,而且用的叫node-oracle这个包,似乎是国人小伙伴写的吧

可以参考 https://github.com/joeferner/node-oracleoracle 包(模块未采用,因为出错的时候没有返回oracle的错误代码,难以调试,不知道是否和oracle客户端的用户权限有关,有待测试,配置可参考)

                   https://github.com/zhs077/node-oracle node-oracle包(采用)

收藏

暂无评论

登录后可以进行评论。没有账号?马上注册