一次Windows 注册表中注册表项目丢失导致的Oracle 数据库启动问题。
一次Windows 注册表中注册表项目丢失导致的Oracle 数据库启动问题。
环境说明:
1.windows 2008操作系统 x64bit
2.Oracle database 11.2.0.1 32bit
3.sqlplus / as sysdba进不去,报错:
c:\user\administrator>sqlplus / as sysdba
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
插曲:
也许有人会问:sqlplus 进不去,你怎么断定这个oracle database 是32bit的,我是用的如下的方法来断定的:
进入到bdump下,随便打开一个trc,在该trc文件的前面几行就可以看到了。
经过检查发现:如下的注册表项目丢失
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE
于是:
我就在我的win 7 64bit环境中,安装了一次Oracle database 11.2.0.1的32bit server software,然后将win 7中的HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE导出来,在 Windows 2008 x64bit环境中导入进去,之后sqlplus / as sysdba能顺利进入。
也许有人问:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE --->是这个?
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE ---->为啥不是这个?
因为这是32bit的Oracle database server software 安装在x64bit的windows上。
额外说明:
1. Oracle Database server software的bit数 必须与os 的bit数匹配,即:要么都是32bit,要么都是x64bit, 否则,Oracle support 是不予支持的。(oracle 不予支持跟能不能安装,以及装了能不能用,是两个概念)
2. Oracle Database Client software的bit数 可以不与os 的bit数相匹配。