zoukankan      html  css  js  c++  java
  • fedora12下安装oracle11客户端

    How to install oracle-client(v11) in fedora12

    joeblackzqq@163.com       2011-3-21

           目标:将oracle-client(v11)安装到”/opt/oracle/”下

    1. 准备好如下三个安装包,放在某个目录下,如:/root/software/oracle

           [root@localhost oracle]# pwd

           /root/software/oracle

           [root@localhost oracle]# ls

           oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm

           oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm            //  这个是SDK开发包

           oracle-instantclient11.2-sqlplus-11.2.0.2.0.i386.rpm

           [root@localhost oracle]#

    1. 创建目标文件夹(oracle将安装在/opt/下)

    [root@localhost opt]# mkdir oracle

    [root@localhost opt]# mkdir oracle/network oracle/sdk

    [root@localhost opt]# mkdir oracle/network/admin

    1. 解压其中2个rpm包(basic, sqlplus)

    [root@localhost ~]# cd /root/software/oracle

    [root@localhost oracle]# pwd

    /root/software/oracle

     

    [root@localhost oracle]# ls

    oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm

    oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm

    oracle-instantclient11.2-sqlplus-11.2.0.2.0.i386.rpm

    [root@localhost oracle]# rpm2cpio oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm | cpio -div

    ./usr/lib/oracle/11.2/client/bin/adrci

    ./usr/lib/oracle/11.2/client/bin/genezi

    ./usr/lib/oracle/11.2/client/lib/libclntsh.so.11.1

    ./usr/lib/oracle/11.2/client/lib/libnnz11.so

    ./usr/lib/oracle/11.2/client/lib/libocci.so.11.1

    ./usr/lib/oracle/11.2/client/lib/libociei.so

    ./usr/lib/oracle/11.2/client/lib/libocijdbc11.so

    ./usr/lib/oracle/11.2/client/lib/ojdbc5.jar

    ./usr/lib/oracle/11.2/client/lib/ojdbc6.jar

    ./usr/lib/oracle/11.2/client/lib/xstreams.jar

    336597 块

    [root@localhost oracle]# rpm2cpio oracle-instantclient11.2-sqlplus-11.2.0.2.0.i386.rpm | cpio -div

    ./usr/bin/sqlplus

    ./usr/lib/oracle/11.2/client/bin/sqlplus

    ./usr/lib/oracle/11.2/client/lib/glogin.sql

    ./usr/lib/oracle/11.2/client/lib/libsqlplus.so

    ./usr/lib/oracle/11.2/client/lib/libsqlplusic.so

    5321 块

    [root@localhost oracle]# ls

    oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm

    oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm

    oracle-instantclient11.2-sqlplus-11.2.0.2.0.i386.rpm

    usr

    1. 将解压出来的usr目录下的bin和lib移动到/opt/oracle/下,再删除usr目录:

    [root@localhost oracle]# mv usr/lib/oracle/11.2/client/bin /opt/oracle/

    [root@localhost oracle]# mv usr/lib/oracle/11.2/client/lib /opt/oracle/

    [root@localhost oracle]# rm -rf usr

    1. 解压剩下的rpm包(devel)

    [root@localhost oracle]# rpm2cpio oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm | cpio -div

    ./usr/include/oracle/11.2/client/ldap.h

    ./usr/include/oracle/11.2/client/nzerror.h

    ./usr/include/oracle/11.2/client/nzt.h

    ./usr/include/oracle/11.2/client/occi.h

    ./usr/include/oracle/11.2/client/occiAQ.h

    ./usr/include/oracle/11.2/client/occiCommon.h

    ./usr/include/oracle/11.2/client/occiControl.h

    ./usr/include/oracle/11.2/client/occiData.h

    ./usr/include/oracle/11.2/client/occiObjects.h

    ./usr/include/oracle/11.2/client/oci.h

    ./usr/include/oracle/11.2/client/oci1.h

    ./usr/include/oracle/11.2/client/oci8dp.h

    ./usr/include/oracle/11.2/client/ociap.h

    ./usr/include/oracle/11.2/client/ociapr.h

    ./usr/include/oracle/11.2/client/ocidef.h

    ./usr/include/oracle/11.2/client/ocidem.h

    ./usr/include/oracle/11.2/client/ocidfn.h

    ./usr/include/oracle/11.2/client/ociextp.h

    ./usr/include/oracle/11.2/client/ocikpr.h

    ./usr/include/oracle/11.2/client/ocixmldb.h

    ./usr/include/oracle/11.2/client/ocixstream.h

    ./usr/include/oracle/11.2/client/odci.h

    ./usr/include/oracle/11.2/client/oratypes.h

    ./usr/include/oracle/11.2/client/ori.h

    ./usr/include/oracle/11.2/client/orid.h

    ./usr/include/oracle/11.2/client/orl.h

    ./usr/include/oracle/11.2/client/oro.h

    ./usr/include/oracle/11.2/client/ort.h

    ./usr/include/oracle/11.2/client/xa.h

    ./usr/lib/oracle/11.2/client/lib/libclntsh.so

    ./usr/lib/oracle/11.2/client/lib/libocci.so

    ./usr/lib/oracle/11.2/client/lib/ottclasses.zip

    ./usr/share/oracle/11.2/client/cdemo81.c

    ./usr/share/oracle/11.2/client/demo.mk

    ./usr/share/oracle/11.2/client/occidemo.sql

    ./usr/share/oracle/11.2/client/occidemod.sql

    ./usr/share/oracle/11.2/client/occidml.cpp

    ./usr/share/oracle/11.2/client/occiobj.cpp

    ./usr/share/oracle/11.2/client/occiobj.typ

    ./usr/share/oracle/11.2/client/ott

    3833 块

    [root@localhost oracle]#

    1. 将上面解压后的usr目录下所有文件移动到/opt/oracel/sdk下,删除无用的目录usr

    [root@localhost oracle]# mv usr/* /opt/oracle/sdk/

    [root@localhost oracle]# rm -rf usr

    1. 至此,oracle11的客户端安装完成,接下来进行配置

    7.1   添加环境变量,在文件/etc/profile末尾添加如下两行:

    export ORACLE_HOME=/opt/oracle

    export LD_LIBRARY_PATH=/opt/oracle/lib

         7.2 启用刚才的设置

    [root@localhost oracle]# source /etc/profile

    通过echo $ORACLE_HOME可以查看刚才添加的环境变量是否已启用,如:

    [root@localhost oracle]# echo $ORACLE_HOME

    /opt/oracle

    可见,已经启用成功!

    1. 配置监听器和网络

    因为本地没有安装oracle数据库,所以需要从安装oracle数据库的目录弄三个文件过来,分别是:listener.ora  sqlnet.ora  tnsnames.ora ,放到/opt/oracle/network/admin下

    1. 修改文件tnsnames.ora如下:

    # tnsnames.ora Network Configuration File: D:\DB\Oracle10g\network\admin\tnsnames.ora

    # Generated by Oracle configuration tools.

    ORCL =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = Loveme)(PORT = 1521))

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = orcl)

        )

      )

    EXTPROC_CONNECTION_DATA =

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

        )

        (CONNECT_DATA =

          (SID = PLSExtProc)

          (PRESENTATION = RO)

        )

      )

    yuan =

      (DESCRIPTION =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.103)(PORT = 1521))

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = orcl)

        )

    )

    10.  修改listener.ora:

    # listener.ora Network Configuration File: D:\DB\Oracle10g\network\admin\listener.ora

    # Generated by Oracle configuration tools.

    SID_LIST_LISTENER =

      (SID_LIST =

        (SID_DESC =

          (SID_NAME = PLSExtProc)

          (ORACLE_HOME = /opt/oracle)

                  // 对应$ORACLE_HOME

          (PROGRAM = extproc)

        )

      )

    LISTENER =

      (DESCRIPTION_LIST =

        (DESCRIPTION =

          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.103)(PORT = 1521))

        )

      )

    11.   所有配置完成,接着测试是否可连接上远程的oracle数据库

    [root@localhost bin]# cd ~

    [root@localhost ~]# cd /opt/oracle/bin

    [root@localhost bin]# ls

    adrci  genezi  sqlplus

    [root@localhost bin]# sqlplus

    bash: sqlplus: command not found    // 这表示找不到sqlplus命令,还需要配置

    事实上,ORACLE_HOME等都已经配置好了,但为什么还不行呢?记得windows系统下的环境变量path吗,只有这些目录下的可执行文件是可以直接在cmd窗口下运行的。所以我们先来看下当前系统下path变量的值吧:

    [root@localhost bin]# echo $PATH

    /usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

    可见,“/opt/oracle/bin”并不在$PATH下,所以sqlplus命令无法直接运行。因此,只要将“/opt/oracle/bin”加进$PATH下就可以了(未尝试)。但是,我采用了如下的办法来解决:

    #ln -s /opt/oracle/bin/sqlplus /usr/bin             // 建立sqlplus文件的软连接到/usr/bin下

    这样,sqlplus命令就可以直接在终端执行了。

    但是仔细一运行,发现还是有错误:

    ./sqlplus: error while loading shared libraries: libnnz11.so: cannot enable executable stack as shared object requires: Permission denied

    网上搜索了下,找到如下的答案(来源:http://seven.blog.51cto.com/120537/60173

    [oracle@linux5 bin]$ sqlplus /nolog
    sqlplus: error while loading shared libraries: /u01/oracle/lib/libnnz11.so: cannot restore segment prot after reloc: Permission denied


    Linux下执行程序时发生错误: cannot restore segment prot after reloc: Permission denied

    原来这是SELinux搞的鬼,解决办法有两个
    1. 使用chcon 命令
    示例: chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
    2. 禁止掉SELinux
    更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled

    于是,修改文件/etc/sysconfig/selinux,将SELINUX改为disabled.

    再次运行sqlplus,发现结果还是一样,还是一样的错误。这时,我看到SELinux仍然在运行着,想想可能还是它的错,既然不知道怎么关闭,就重启吧。重启后,果真可以成功登录远程oracle数据库了:

    [root@localhost ~]# sqlplus scott/scott@yuan

    SQL*Plus: Release 11.2.0.2.0 Production on Sun Mar 20 23:02:44 2011

    Copyright (c) 1982, 2010, Oracle.  All rights reserved.

    Connected to:

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning, OLAP and Data Mining options

    SQL> select sysdate from dual;

     

    SYSDATE

    ---------

    20-MAR-11

    SQL>

    哈哈,把SELinux关闭后,发现我的网络再也不会经常掉线了,而且QQ也可以成功登录了!原来这一切都是SELinux搞的鬼。难怪我虚拟机下的QQ就可以一直正常登录,也不掉线,因为那里的SELinux默认是没有启动的。


  • 相关阅读:
    vue a标签下载图片文档显示下载失败
    20200331
    拿奖不排队——项目系统设计与数据库设计
    重修信息管理系统——需求说明书
    拿奖不排队--项目需求分析
    《重修信息系统》项目需求分析模型
    2020软件工程作业--团队02
    拿奖不排队 ——团队展示
    PHP POST请求同时获取结果和header信息
    Peer reports incompatible or unsupported protocol version.
  • 原文地址:https://www.cnblogs.com/joeblackzqq/p/1989819.html
Copyright © 2011-2022 走看看