Oracle XE TNS 侦听器无法启动

chi*_*oro 5 oracle oracle-11g-r2 oracle-xe

我刚安装了 Oracle XE 11.2.0.2.0,发现 TNS Listener 服务无法启动。起初我尝试手动启动Windows服务。失败后,这是事件日志中的条目:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
 <System>
  <Provider Name="Application Error" /> 
  <EventID Qualifiers="0">1000</EventID> 
  <Level>2</Level> 
  <Task>100</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2012-12-18T07:11:23.000000000Z" /> 
  <EventRecordID>6195</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>[removed]</Computer> 
  <Security /> 
 </System>
 <EventData>
  <Data>tnslsnr.exe</Data> 
  <Data>11.2.0.2</Data> 
  <Data>4e2e9556</Data> 
  <Data>orahasgen11.dll</Data> 
  <Data>11.2.0.1</Data> 
  <Data>4ce506a3</Data> 
  <Data>c0000005</Data> 
  <Data>0002fbdd</Data> 
  <Data>1084</Data> 
  <Data>01cddceee2b90e19</Data> 
  <Data>C:\oraclexe\app\oracle\product\11.2.0\server\BIN\tnslsnr.exe</Data> 
  <Data>C:\oraclexe\app\oracle\product\11.2.0\server\BIN\orahasgen11.dll</Data> 
  <Data>20df4569-48e2-11e2-87b0-1c6f650a0fc2</Data> 
 </EventData>
</Event>
Run Code Online (Sandbox Code Playgroud)

在第二个去,我试图STATUSSTARTLSNRCTL.EXE

LSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   32-bit Windows Error: 61: Unknown error
Run Code Online (Sandbox Code Playgroud)

...和START

LSNRCTL> START
Starting tnslsnr: please wait...

TNS-12537: TNS:connection closed
 TNS-12560: TNS:protocol adapter error
  TNS-00507: Connection closed
   32-bit Windows Error: 109: Unknown error
Run Code Online (Sandbox Code Playgroud)

谷歌发现了一些论坛条目,人们有类似的错误,但他们要么有一个不同于 109 的内部错误,要么根本没有得到任何合理的答案......

有任何想法吗?我知道在我的计算机上安装 Oracle XE 之前,已经有一个 oracle 11.2.0 客户端(图像的一部分)。

ORACLE_HOME 和 TNS_ADMIN 指向该客户端。那会有什么影响吗?我希望这两个 Oracle 实例足够智能,每个实例都可以独立运行!

更新:确实!我更改了 ORACLE_HOME,现在监听器运行。但是每次我需要启动侦听器或从我的客户端安装运行 SQLPlus 时,我都无法去编辑 ORACLE_HOME。我真的很想知道什么架构会安装带有自己的侦听器的产品,但是如果没有将全局环境变量设置到某个目录,侦听器就无法运行,特别是因为我们知道一个系统上可以安装 1 个以上的 oracle。 ..

dur*_*tte 2

检查此注册表项以确保为该服务配置 ORACLE_HOME:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_XE\ORACLE_HOME
Run Code Online (Sandbox Code Playgroud)

如果不存在,请检查此处:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_XE\ORACLE_HOME
Run Code Online (Sandbox Code Playgroud)

还要确保另一个键没有指向您的旧客户端注册表键:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_XE\ORACLE_HOME_KEY
or
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_XE\ORACLE_HOME_KEY
Run Code Online (Sandbox Code Playgroud)