oracle 庫檔案解決的方法 bad ELF interpreter: No such file or directory
阿新 • • 發佈:2018-12-01
今天是2014-05-27,今天遇到一個lib問題。再次記錄一下。這是一個案例。更是一種解決該問題的方法過程。
當我們在使用sqlplus 登陸unix資料庫的時候,有可能出現相似:xxxxxx bad ELF interpreter: No such file or directory的問題。該問題的解決辦法也是lib的問題。正常情況例如以下:
[[email protected] ~]# su - oracle
[[email protected] ~]$ 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)
[ [email protected] ~]$
但有時候可能會缺失相應的lib檔案。
那麼對於該問題的解決思路是:
1、檢視程式缺少的lib檔案是那些
2、推斷相應的lib檔案時缺少還是環境變數問題。
3、假設是lib檔案缺少那麼須要安裝相應的軟體包或是複製相應的lib檔案。假設是環境變數問題,那就須要更具不同系統設定不同的環境變量了。
另外對於oracle我們安裝的32位的是lib32。是64位的那麼是lib資料夾。
例如以下是我今天遇到的一個啟動RealSync的樣例,其它程式相似:
啟動Realsync提演示樣例如以下錯誤:
[email protected] 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
[[email protected] scripts]$ ./stop
INFO: Stop realsync normally...
INFO: Stopping Vagentd ...
INFO: Stopping Loader -s for fullsync loader ...
INFO: Stopping Loader -r for realsync loader ...
[ [email protected] scripts]$
[[email protected] scripts]$ exit
那麼對於ld-linux.so.2是相應的glibc.i686這個包。
因此進行安裝:例如以下:
[[email protected] ~]# cd /media/OL6.4\ x86_64\ Disc\ 1\ 20130225/Packages/
[[email protected] 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!
[[email protected] Packages]# su - dsg
[[email protected] 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
[[email protected] scripts]$
這是沒有錯誤提示。檢視日誌例如以下:
[[email protected] 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資訊:
[[email protected] scripts]$ cd ../bin
[[email protected] 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)
[[email protected] bin]$
能夠知道眼下有兩個問題。一個是libnnz.so沒有,還有一個是libclntsh.so.11.1沒有。
須要做的是安裝相應的軟體包或是直接複製相應的lib檔案到相應資料夾。
如今須要做的事是改動環境變數
[[email protected] ~]$ 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
[[email protected] ~]$ 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檔案資訊:
[[email protected] 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)
[[email protected] bin]$
那麼須要安裝libaio.so.1相應的軟體包:
[[email protected] 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
[[email protected] 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!
[[email protected] Packages]#
再次檢視:
[[email protected] 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)
[[email protected] bin]$
啟動RealSync:
[[email protected] 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
[[email protected] scripts]$
至此問題得到解決: