分享

linux下安装Oracle instant client

 燕之坞 2014-04-03
      操作系统是Redhat Enterprise Linux 5.2,需连接数据库,oracle安装程序提供的客户端太大了,有几百M,如果只需要数据库连接功能,可以使用instant client。下载以下3个包:
instantclient-basic-linux32-10.2.0.3-20061115.zip
instantclient-sdk-linux32-10.2.0.3-20061115.zip
instantclient-sqlplus-linux32-10.2.0.3-20061115.zip
      sqlplus是用来检验是否安装成功的。依次解压,得到一个统一的文件夹,instantclient_10_2。如我前面的文章DBArtisan无法加载OCI,配置好TNS_ADMIN、LD_LIBRARY_PATH等,复制.bashrc文件部分内容如下:
export ORACLE_HOME=/usr/local/oracle
export TNS_ADMIN=$ORACLE_HOME/NETWORK/ADMIN
export LD_LIBRARY_PATH=$ORACLE_HOME
export SQLPATH=$ORACLE_HOME
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
PATH=$PATH:$ORACLE_HOME
export PATH
      找一个配置好的tnsnames.ora文件放到TNS_ADMIN变量设置的位置,也就是/usr/local/oracle/NETWORK/ADMIN目录下。接下来就可以使用sqlplus验证是否安装成功。当我使用如下命令:sqlplus username/password@<连接字符串>测试时,系统提示段错误 (segmentation fault)。有提示解决方法如下:
1. cd /usr/bin (as root)
2. mv gcc gcc.script
3. mv g++ g++.script
4. ln -s gcc32 gcc
5. ln -s g++32 g++
6. login as oracle software owner (make sure environment is correct)
7. cd $ORACLE_HOME/bin
8. relink all
      首先,这个是64位系统的解决方法,其次,我在当前linux系统中找不到relink命令。后来,传说中的高人又出现了,一顿检查以后,得出结论如下,这个linux的内核版本太高了,instant client这个版本可能还不支持,于是建议安装instant client 11。
      下载如下文件:
instantclient-basic-linux32-11.2.0.1.zip
instantclient-sdk-linux32-11.2.0.1.zip
instantclient-sqlplus-linux32-11.2.0.1.zip
      操作步骤与上面一样,其实配置已经做好了,只需将原来instant client 的文件都删除,替换成instant client 11的文件就行。再使用sqlplus测试,连接成功。

以下是讨论不设置环境变量安装Oracle instant client的内容,先记录下来,有空再尝试。

Oracle's instructions specify setting LD_LIBRARY_PATH. This makes my application dependent on random users' configuration and is very troublesome to set up.

How can I avoid having to set any environment variables?

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxx86_64soft.html

related note for OS/X: http:///questions/684352

answer:

Add the library path to /etc/ld.so.conf, then run /sbin/ldconfig. You don't need to set LD_LIBRARY_PATH for libraries installed in standard locations like /usr/lib because these locations are already configured in /etc/ld.so.conf.

-------------------------------------------------------  昏哥线  -------------------------------------------------------------------

Oracle's instantclient installation instructions specify that the user set LD_LIBRARY_PATH. This is very troublesome to manage for multiple users.

To use the instantclient without setting any environment variables:

Download the instantclient distribution from oracle.com. For doing non-java software development, you will need (assuming Oracle 10.2):

instantclient-basic-linux-x86_64-10.2.0.4.0.zip
instantclient-sdk-linux-x86_64-10.2.0.4.0.zip
instantclient-sqlplus-linux-x86_64-10.2.0.4.0.zip

Unzip the three files. This will give you a directory

instantclient_10_2/

Copy the files to /usr, which is one of the default places the dynamic loader searches.

sudo cp instantclient_10_2/sdk/include/*.h /usr/include
sudo cp instantclient_10_2/sqlplus         /usr/bin
sudo cp instantclient_10_2/*.so*           /usr/lib

If you use tnsnames.ora, copy it to /etc, which is the default global place the oracle runtime searches.

sudo cp tnsnames.ora /etc

Test with

/usr/bin/sqlplus scott/tiger@myoracle

-------------------------------------------------------  昏哥线  -------------------------------------------------------------------

You could of course rename sqlplus to sqlplus.real and make a wrapper script:

#!/bin/sh

if [ "$LD_LIBRARY_PATH" = "" ]
then
        LD_LIBRARY_PATH=/what/ever
else
        LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/what/ever
fi

export LD_LIBRARY_PATH

exec sqlplus.real ${1+"$@"}

-------------------------------------------------------  昏哥线  -------------------------------------------------------------------

For anyone playing with Solaris (like me!) coming from a Linux background, I found that @David Phillips solution worked well using the Solaris command crle -u -l /opt/instantclient

Thanks to post http:///systemsadmin/solaris/articles/ld-path-customisation-on-solaris/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多