使用sysresv时遇到错误: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object f

本文记录了解决Oracle数据库中sysresv命令因找不到libclntsh.so.10.1共享对象文件而报错的过程。通过将$ORACLE_HOME/lib路径添加到/etc/ld.so.conf并执行ldconfig命令,成功解决了该问题。

在本机装了一个测试的数据库,运行sysresv命令时报错:

[oracle@ttt dbs]$ which sysresv
/opt/ora10g/product/10.2.0/db_1/bin/sysresv
[oracle@ttt dbs]$ sysresv
sysresv: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory
[oracle@ttt dbs]$

上网查了一下,找到一个,不是这个命令,但是错误一样。

http://dbua.iteye.com/blog/891010


把$ORACLE_HOME/lib加到文件/etc/ld.so.conf,重新ld,即可。


========== 下面是根据介绍,执行的步骤:

[oracle@TTT dbs]$ which sysresv
/opt/ora10g/product/10.2.0/db_1/bin/sysresv
[oracle@TTT dbs]$ sysresv
sysresv: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory
[oracle@TTT dbs]$ cd $ORACLE_HOME/lib
[oracle@TTT lib]$ ls -l libclntsh.so.10.1
-rwxr-x--- 1 oracle oinstall 20706597 Sep 13 15:08 libclntsh.so.10.1
[oracle@TTT lib]$
[oracle@TTT lib]$ ldd `which sysresv`
        libclntsh.so.10.1 => not found
        libnnz10.so => not found
        libdl.so.2 => /lib64/libdl.so.2 (0x0000003bd9a00000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003bd9600000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003bd9e00000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003be2400000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003bd9200000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003bd8200000)
[oracle@TTT lib]$ pwd
/opt/ora10g/product/10.2.0/db_1/lib
[oracle@TTT lib]$ ls -l libnnz10.
libnnz10.a   libnnz10.so
[oracle@TTT lib]$ ls -l libnnz10.so
-rw-r----- 1 oracle oinstall 3803097 Oct 20  2005 libnnz10.so
[oracle@TTT lib]$
[oracle@TTT lib]$
[oracle@TTT lib]$ cat /etc/ld.so.c
ld.so.cache   ld.so.conf    ld.so.conf.d/
[oracle@TTT lib]$ cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
[oracle@TTT lib]$
[oracle@TTT lib]$ pwd
/opt/ora10g/product/10.2.0/db_1/lib
[oracle@TTT lib]$
[oracle@TTT lib]$ su -
Password:
[root@TTT ~]# vi /etc/ld.so.conf
[root@TTT ~]# ldconfig
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmadm.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefsql.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmevq.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libordim10.soO is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmastk.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmasf.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmuc.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefvr.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmadbg.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmevq.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmuk.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmemso.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmeoci.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefw.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmuk.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefud.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmastk.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefud.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefsql.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefos.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefut.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefos.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefw.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmarl.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmalk.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmadbg.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmemso.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmadm.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmarl.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmuc.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmalk.so.0 is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmasf.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmeoci.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefut.so is empty, not checked.
ldconfig: File /opt/ora10g/product/10.2.0/db_1/lib/libnmefvr.so.0 is empty, not checked.
ldconfig: /opt/ora10g/product/10.2.0/db_1/lib/libexpat.so.0 is not a symbolic link

[root@TTT ~]#
[root@TTT ~]# exit
logout
[oracle@TTT lib]$ sysresv

IPC Resources for ORACLE_SID "TESTDB" :
Shared Memory:
ID              KEY
4784140         0x4b88b248
Semaphores:
ID              KEY
524288          0x2868b4bc
Oracle Instance alive for sid "TESTDB"
[oracle@TTT lib]$
[oracle@TTT lib]$ cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/opt/ora10g/product/10.2.0/db_1/lib
[oracle@TTT lib]$







### 解决 SQL*Plus 加载 `libclntsh.so.11.1` 共享库失败的方法 当遇到无法找到 `libclntsh.so.11.1` 的错误,通常是因为 Oracle 客户端库未正确安装或环境变量配置不正确。以下是详细的解决方案: #### 1. 验证 Oracle Instant Client 是否已安装 确保已经下载并解压了适用于操作系统的 Oracle Instant Client Basic 或 Full 版本。 ```bash ls $ORACLE_HOME/lib/ ``` 如果上述命令显示缺少必要的 `.so` 文件,则需重新安装客户端包[^2]。 #### 2. 设置 LD_LIBRARY_PATH 环境变量 为了让系统能够定位到这些动态链接库,在启动 SQL\*Plus 前设置好 `LD_LIBRARY_PATH` 变量指向包含所需 .so 文件的位置。 对于 Bash 用户可以执行如下指令临生效: ```bash export LD_LIBRARY_PATH=/path/to/instantclient:$LD_LIBRARY_PATH ``` 为了永久保存此更改,可将其添加至用户的 shell profile 文件中(如 ~/.bashrc)。之后记得运行 source 更新当前会话中的路径设置[^1]。 #### 3. 创建符号链接 (针对特定版本号的情况) 有即使设置了正确的库路径仍然报错找不到具体版本的 so 文件。这可以在 `$ORACLE_HOME/lib/` 下创建相应版本号的软连接来解决问题: ```bash ln -s libclntsh.so.x.y.z libclntsh.so.11.1 ``` 其中 x.y.z 是实际存在的最高版本号。 通过以上措施应该能有效解决因缺失共享库而导致的 SQL\*Plus 启动问题。另外建议检查操作系统是否支持所使用Oracle 库版本,并考虑升级到最新稳定版以获得更好的兼容性和安全性保障。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值