Sometimes when SQL*Plus is run, you see the error:
Message file sp1<Lang>.msb not found
Error 6 initializing SQL*Plus
This occurs when SQL*Plus was unable to find a message file during program initialization. The most common cause is that ORACLE_HOME has not been set. This prevents the message files being found and SQL*Plus would be unable to display error messages or text required for normal operation. Other causes are when the message file is corrupt or cannot be read.
Make sure that all the environment variables or registry entries needed to run SQL*Plus are set. The variables are platform specific but may include ORACLE_HOME, ORACLE_SID, NLS_LANG, ORA_NLS33, and LD_LIBRARY_PATH.
Also check that the file sp1XX.msb is present in the $ORACLE_HOME/sqlplus/mesg or %ORACLE_HOME%sqlplusmesg directory. The "XX" stands for the country prefix associated with your NLS_LANG environment variable. SQL*Plus reads only one of the sp1XX.msb files. For example sp1ja.msb is read if NLS_LANG is JAPANESE_JAPAN.JA16EUC. If NLS_LANG is not set, then the default (English language) sp1us.msb is used. Check that the appropriate file is of non-zero size and that the file permissions allow you to read it. Note the ".msb" files are binary. The contents may be meaningless when viewed or printed. If you are unsure which language file is being used, try unsetting NLS_LANG and run SQL*Plus to verify it can read the sp1us.msb file.
The error message has changed in SQL*Plus Release 9.0.1 to be more informative:
Error 6 initializing SQL*Plus
Message file sp1<Lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
Message file sp1<Lang>.msb not found
Error 6 initializing SQL*Plus
This occurs when SQL*Plus was unable to find a message file during program initialization. The most common cause is that ORACLE_HOME has not been set. This prevents the message files being found and SQL*Plus would be unable to display error messages or text required for normal operation. Other causes are when the message file is corrupt or cannot be read.
Make sure that all the environment variables or registry entries needed to run SQL*Plus are set. The variables are platform specific but may include ORACLE_HOME, ORACLE_SID, NLS_LANG, ORA_NLS33, and LD_LIBRARY_PATH.
Also check that the file sp1XX.msb is present in the $ORACLE_HOME/sqlplus/mesg or %ORACLE_HOME%sqlplusmesg directory. The "XX" stands for the country prefix associated with your NLS_LANG environment variable. SQL*Plus reads only one of the sp1XX.msb files. For example sp1ja.msb is read if NLS_LANG is JAPANESE_JAPAN.JA16EUC. If NLS_LANG is not set, then the default (English language) sp1us.msb is used. Check that the appropriate file is of non-zero size and that the file permissions allow you to read it. Note the ".msb" files are binary. The contents may be meaningless when viewed or printed. If you are unsure which language file is being used, try unsetting NLS_LANG and run SQL*Plus to verify it can read the sp1us.msb file.
The error message has changed in SQL*Plus Release 9.0.1 to be more informative:
Error 6 initializing SQL*Plus
Message file sp1<Lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory