zoukankan      html  css  js  c++  java
  • oracle 库文件解决的方法 bad ELF interpreter: No such file or directory

       今天是2014-05-27,今天遇到一个lib问题。再次记录一下。这是一个案例。更是一种解决该问题的方法过程。

    当我们在使用sqlplus 登陆unix数据库的时候,有可能出现相似:xxxxxx bad ELF interpreter: No such file or directory的问题。该问题的解决办法也是lib的问题。正常情况例如以下:

    [root@dg1 ~]# su - oracle
    [oracle@dg1 ~]$ ldd `which sqlplus`
            linux-vdso.so.1 =>  (0x00007fff2e5ff000)
            libsqlplus.so => /u01/app/oracle/product/11.2.0/dbhome_1/lib/libsqlplus.so (0x00007fba1fef6000)
            libclntsh.so.11.1 => /u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1 (0x00007fba1d48b000)
            libnnz11.so => /u01/app/oracle/product/11.2.0/dbhome_1/lib/libnnz11.so (0x00007fba1d0be000)
            libdl.so.2 => /lib64/libdl.so.2 (0x0000003c93800000)
            libm.so.6 => /lib64/libm.so.6 (0x0000003c94400000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c94000000)
            libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003ca3000000)
            libc.so.6 => /lib64/libc.so.6 (0x0000003c93c00000)
            libaio.so.1 => /lib64/libaio.so.1 (0x00007fba1cea4000)
            /lib64/ld-linux-x86-64.so.2 (0x0000003c93400000)
    [oracle@dg1 ~]$ 

    但有时候可能会缺失相应的lib文件。

    那么对于该问题的解决思路是:

    1、查看程序缺少的lib文件是那些

    2、推断相应的lib文件时缺少还是环境变量问题。

    3、假设是lib文件缺少那么须要安装相应的软件包或是复制相应的lib文件。假设是环境变量问题,那就须要更具不同系统设置不同的环境变量了。

    另外对于oracle我们安装的32位的是lib32。是64位的那么是lib文件夹。

    例如以下是我今天遇到的一个启动RealSync的样例,其它程序相似:

    启动Realsync提演示样例如以下错误:

    dsg@dg2 scripts]$ ./start
    ./start: /dsg/bin/archivelog: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
    ./start: /dsg/bin/archivelog: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
    [dsg@dg2 scripts]$ ./stop
    INFO: Stop realsync normally...
    INFO: Stopping Vagentd ...
    INFO: Stopping Loader -s for fullsync loader ...
    INFO: Stopping Loader -r for realsync loader ...
    [dsg@dg2 scripts]$ 
    [dsg@dg2 scripts]$ exit

    那么对于ld-linux.so.2是相应的glibc.i686这个包。

    因此进行安装:例如以下:

    [root@dg2 ~]# cd /media/OL6.4 x86_64 Disc 1 20130225/Packages/
    [root@dg2 Packages]# yum install glibc.i686
    Loaded plugins: refresh-packagekit, security
    oel6                                                                                            | 3.7 kB     00:00 ... 
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package glibc.i686 0:2.12-1.107.el6 will be installed
    --> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.12-1.107.el6.i686
    --> Processing Dependency: libfreebl3.so for package: glibc-2.12-1.107.el6.i686
    --> Running transaction check
    ---> Package nss-softokn-freebl.i686 0:3.12.9-11.el6 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =======================================================================================================================
     Package                             Arch                  Version                         Repository             Size
    =======================================================================================================================
    Installing:
     glibc                               i686                  2.12-1.107.el6                  oel6                  4.3 M
    Installing for dependencies:
     nss-softokn-freebl                  i686                  3.12.9-11.el6                   oel6                  116 k
    
    Transaction Summary
    =======================================================================================================================
    Install       2 Package(s)
    
    Total download size: 4.4 M
    Installed size: 13 M
    Is this ok [y/N]: y
    Downloading Packages:
    -----------------------------------------------------------------------------------------------------------------------
    Total                                                                                   60 MB/s | 4.4 MB     00:00     
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Warning: RPMDB altered outside of yum.
      Installing : nss-softokn-freebl-3.12.9-11.el6.i686                                                               1/2 
      Installing : glibc-2.12-1.107.el6.i686                                                                                                              2/2 
      Verifying  : glibc-2.12-1.107.el6.i686                                                                                                              1/2 
      Verifying  : nss-softokn-freebl-3.12.9-11.el6.i686                                                                                                  2/2 
    
    Installed:
      glibc.i686 0:2.12-1.107.el6                                                                                                                             
    
    Dependency Installed:
      nss-softokn-freebl.i686 0:3.12.9-11.el6                                                                                                                 
    
    Complete!
    [root@dg2 Packages]# su - dsg
    [dsg@dg2 bin]$ cd ../ ;cd scripts/;./start
    dsg       4416  4391  0 11:48 pts/0    00:00:00 /dsg/bin/archivelog /dsg/log/log.vagentd /dsg/log/archivelog/log.vagentd_archlog 43200 5G
    dsg       4426  4391  0 11:48 pts/0    00:00:00 /dsg/bin/archivelog /dsg/log/log.r0 /dsg/log/archivelog/log.r0_archlog 43200 5G
    [dsg@dg2 scripts]$ 

    这是没有错误提示。查看日志例如以下:

    [dsg@dg2 log]$ tail -f log.vagentd 
    /dsg/bin/vagentd: error while loading shared libraries: libclntsh.so.11.1: wrong ELF class: ELFCLASS64
    tail: log.vagentd: file truncated

    查看该程序的使用lib信息:

    [dsg@dg2 scripts]$ cd ../bin
    [dsg@dg2 bin]$ ldd vagentd
            linux-gate.so.1 =>  (0xf77a6000)
            libclntsh.so.11.1 => not found
            libnnz.so => not found
            libpthread.so.0 => /lib/libpthread.so.0 (0xf7773000)
            libcrypt.so.1 => /lib/libcrypt.so.1 (0xf7743000)
            libdl.so.2 => /lib/libdl.so.2 (0xf773d000)
            libm.so.6 => /lib/libm.so.6 (0xf7713000)
            librt.so.1 => /lib/librt.so.1 (0xf770a000)
            libc.so.6 => /lib/libc.so.6 (0x48cb8000)
            /lib/ld-linux.so.2 (0x48c96000)
            libfreebl3.so => /lib/libfreebl3.so (0xf76bb000)
    [dsg@dg2 bin]$ 

    能够知道眼下有两个问题。一个是libnnz.so没有,还有一个是libclntsh.so.11.1没有。

    须要做的是安装相应的软件包或是直接复制相应的lib文件到相应文件夹。
    如今须要做的事是改动环境变量

    [dsg@dg2 ~]$ more .bash_profile 
    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH
    ####ORACLE#######3333
    export TMP=/tmp
    export TMPDIR=/tmp
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_SID=dg2
    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
    stty erase ^H
    [dsg@dg2 ~]$ vi .bash_profile
    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH
    ####ORACLE#######3333
    export TMP=/tmp
    export TMPDIR=/tmp
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_SID=dg2
    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
    stty erase ^H
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib32:/u01/app/oracle/product/11.2.0/dbhome_1/lib32

    再次查看该所需程序lib文件信息:

    [dsg@dg2 bin]$ ldd vagentd
            linux-gate.so.1 =>  (0xf77ef000)
            libclntsh.so.11.1 => /u01/app/oracle/product/11.2.0/dbhome_1/lib32/libclntsh.so.11.1 (0xf5af0000)
            libnnz.so => /u01/app/oracle/product/11.2.0/dbhome_1/lib32/libnnz.so (0xf58a3000)
            libpthread.so.0 => /lib/libpthread.so.0 (0xf5871000)
            libcrypt.so.1 => /lib/libcrypt.so.1 (0xf5840000)
            libdl.so.2 => /lib/libdl.so.2 (0xf583b000)
            libm.so.6 => /lib/libm.so.6 (0xf5811000)
            librt.so.1 => /lib/librt.so.1 (0xf5808000)
            libc.so.6 => /lib/libc.so.6 (0x48cb8000)
            libnnz11.so => /u01/app/oracle/product/11.2.0/dbhome_1/lib32/libnnz11.so (0xf55ba000)
            libnsl.so.1 => /lib/libnsl.so.1 (0xf559f000)
            /lib/ld-linux.so.2 (0x48c96000)
            libaio.so.1 => not found
            libfreebl3.so => /lib/libfreebl3.so (0xf5550000)
    [dsg@dg2 bin]$
    那么须要安装libaio.so.1相应的软件包:
    [root@dg2 Packages]# yum install libaio-
    libaio-0.3.107-10.el6.i686.rpm          libaio-0.3.107-10.el6.x86_64.rpm        libaio-devel-0.3.107-10.el6.i686.rpm    libaio-devel-0.3.107-10.el6.x86_64.rpm
    [root@dg2 Packages]# yum install libaio-0.3.107-10.el6.i686.rpm 
    Loaded plugins: refresh-packagekit, security
    Setting up Install Process
    Examining libaio-0.3.107-10.el6.i686.rpm: libaio-0.3.107-10.el6.i686
    Marking libaio-0.3.107-10.el6.i686.rpm to be installed
    Resolving Dependencies
    --> Running transaction check
    ---> Package libaio.i686 0:0.3.107-10.el6 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =======================================================================================================================================================================
     Package                          Arch                           Version                                   Repository                                             Size
    =======================================================================================================================================================================
    Installing:
     libaio                           i686                           0.3.107-10.el6                            /libaio-0.3.107-10.el6.i686                            31 k
    
    Transaction Summary
    =======================================================================================================================================================================
    Install       1 Package(s)
    
    Total size: 31 k
    Installed size: 31 k
    Is this ok [y/N]: Y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing : libaio-0.3.107-10.el6.i686                                                                                                                          1/1 
      Verifying  : libaio-0.3.107-10.el6.i686                                                                                                                          1/1 
    
    Installed:
      libaio.i686 0:0.3.107-10.el6                                                                                                                                         
    
    Complete!
    [root@dg2 Packages]# 

    再次查看:

    [dsg@dg2 bin]$ ldd vagentd
            linux-gate.so.1 =>  (0xf772c000)
            libclntsh.so.11.1 => /u01/app/oracle/product/11.2.0/dbhome_1/lib32/libclntsh.so.11.1 (0xf5a2d000)
            libnnz.so => /u01/app/oracle/product/11.2.0/dbhome_1/lib32/libnnz.so (0xf57e0000)
            libpthread.so.0 => /lib/libpthread.so.0 (0xf57ae000)
            libcrypt.so.1 => /lib/libcrypt.so.1 (0xf577d000)
            libdl.so.2 => /lib/libdl.so.2 (0xf5778000)
            libm.so.6 => /lib/libm.so.6 (0xf574e000)
            librt.so.1 => /lib/librt.so.1 (0xf5745000)
            libc.so.6 => /lib/libc.so.6 (0x48cb8000)
            libnnz11.so => /u01/app/oracle/product/11.2.0/dbhome_1/lib32/libnnz11.so (0xf54f7000)
            libnsl.so.1 => /lib/libnsl.so.1 (0xf54dc000)
            libaio.so.1 => /lib/libaio.so.1 (0xf54da000)
            /lib/ld-linux.so.2 (0x48c96000)
            libfreebl3.so => /lib/libfreebl3.so (0xf548b000)
    [dsg@dg2 bin]$ 

    启动RealSync:

    [dsg@dg2 scripts]$ ./start
    dsg       5203     1  0 12:04 pts/1    00:00:00 /dsg/bin/vagentd 50001
    dsg       5204  5203  0 12:04 pts/1    00:00:00 /dsg/bin/vagentd 50001
    dsg       5214     1  0 12:04 pts/1    00:00:00 /dsg/bin/loader -r -qno 0 1
    dsg       5216  5214  0 12:04 pts/1    00:00:00 /dsg/bin/loader -r -qno 0 1
    dsg       5213     1  0 12:04 pts/1    00:00:00 /dsg/bin/loader -s -qno 0 1
    dsg       5215  5213  0 12:04 pts/1    00:00:00 /dsg/bin/loader -s -qno 0 1
    dsg       5199  5174  0 12:04 pts/1    00:00:00 /dsg/bin/archivelog /dsg/log/log.vagentd /dsg/log/archivelog/log.vagentd_archlog 43200 5G
    dsg       5208  5174  0 12:04 pts/1    00:00:00 /dsg/bin/archivelog /dsg/log/log.r0 /dsg/log/archivelog/log.r0_archlog 43200 5G
    [dsg@dg2 scripts]$ 

    至此问题得到解决:

     

  • 相关阅读:
    ==和equals的区别
    Java标准库定义的常用异常
    java.lang.ArithmeticException: / by zero
    类的设计
    预处理&枚举&其他
    内存管理
    指针和字符串
    指针
    数组
    流程控制语句
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10048814.html
Copyright © 2011-2022 走看看