在oracle主机执行sqlplus报错:
Error 6 initializing SQL*Plus
Message file sp1.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
原因分析:
1. 看报错,大部分人肯定以为是ORACLE_HOME的环境变量没有设置,不过一般情况是不会出这种低级的错误的。
2. 还有一个重要的原因:在系统执行sqlplus命令的时候,会访问一些文件。 具体访问哪些文件,可找个正常的oracle主机测一下: 下面是我从hpux11.31+oracle10204上做的测试,在sqlplus的时候,会访问如下文件:
--- 一旦用户不能访问下面的文件的时候,就有上文的报错了。
--- 这样我们可以得出:如果对下面的文件没有读权限或者是没有找到下面的文件都报上述错误
--- 一般情况非oracle用户,非DBA组的用户,访问sqlplus经常会有权限不足的问题
/oracle
/oracle/product/10g/bin/sqlplus
/oracle/product/10g/oracore/zoneinfo/timezlrg.dat
/usr/lib/hpux64/libxti.so.1
/usr/lib/hpux64/libc.so.1
/usr/lib/hpux64/libnsl.so.1
/usr/lib/hpux64/libpthread.so.1
/oracle/product/10g/lib/libnnz10.so
/usr/lib/hpux64/libuca.so.1
/oracle/product/10g/lib/libclntsh.so.10.1
/usr/lib/hpux64/libunwind.so.1
/usr/lib/hpux64/libm.so.1
/usr/lib/hpux64/libdl.so.1
/oracle/product/10g/lib/libsqlplus.so
/usr/lib/hpux64/libnss_dns.so.1
/usr/lib/hpux64/librt.so.1
/usr/lib/hpux64/dld.so
/usr/lib/hpux64/uld.so
/dev/pts/0->ldterm->ptem->pts
/dev/pts/0->ldterm->ptem->pts
/dev/pts/0->ldterm->ptem->pts
/oracle/product/10g/sqlplus/mesg/sp1zhs.msb
/oracle/product/10g/sqlplus/mesg/sp1us.msb
/oracle/product/10g/sqlplus/mesg/sp2zhs.msb
/oracle/product/10g/sqlplus/mesg/sp2us.msb
/oracle/product/10g/sqlplus/mesg/cpyzhs.msb
/oracle/product/10g/sqlplus/mesg/cpyus.msb
/oracle/product/10g/rdbms/mesg/ocizhs.msb
/oracle/product/10g/rdbms/mesg/ocius.msb