错误复现
进入docker的oracle容器
docker exec -it oracle11g bash
启动sqlplus
sqlplus /nolog
此时报错
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
解决
在oracle容器中,重新登陆oracle用户。
su - oracle
重新启动sqlplus,成功~
[oracle@6b0b62f5771d ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 7 14:41:24 2022
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL>
思考
我们进入oracle容器时,发现默认是以oracle用户登陆的,但是查看发现,其不存在.bash_profile文件。
[oracle@6b0b62f5771d /]$ cat .bash_profile
cat: .bash_profile: No such file or directory
使用oracle用户重新登陆,即su - oracle,再次查看,发现已经存在了.bash_profile文件。
[oracle@6b0b62f5771d /]$ cat .bash_profile
cat: .bash_profile: No such file or directory
[oracle@6b0b62f5771d /]$ su - oracle
Password:
[oracle@6b0b62f5771d ~]$ cat .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_BASE=/home/oracle/app/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_2;export ORACLE_HOME
ORACLE_SID=helowin;export ORACLE_SID
ORACLE_TERM=xterm;export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export CLASSPATH
正是因为文件不存在,oracle找不到环境变量,也就无法启动sqlplus。

本文介绍了在Docker环境下遇到Oracle SQL*Plus初始化错误6的问题,通过重新登录Oracle用户并启动sqlplus成功解决问题。问题根源是由于初次登录Oracle容器时,oracle用户的.bash_profile文件缺失,导致环境变量未设置。重新登录后,该文件自动生成,从而能正常启动sqlplus。

被折叠的 条评论
为什么被折叠?



