oracle10g "数据源管理器"找不到应用程序,可能是程序没有正确安装"问题解决

   服务器上安装了Windows Server2003 R2 Standard x64 Edition SP2和Oracle 10G(64bit)后,通过数据源访问数据库时,提示"找不到应用程序,可能是程序没有正确安装"。

     初次接到这个问题,就觉得是没有安装Microsoft ODBC for oracle或者驱动dll出现问题导致的。登录到这台服务器检查,发现64位操作系统有两个数据源管理器,一个在SysWOW64,一个在system32,控制面板-管理工具中默认的是system32,这个数据源管理器中的确没有Microsoft ODBC for oracle,Microsoft ODBC for oracle在SysWOW64下的数据源管理器中有。当初怀疑是不是系统调用odbc是默认从system32,不会从SysWOW64中去调用。但是在另外一台类似服务器上可以正常访问odbc,排除了这个可能。

     剩下的可能只有操作系统或oracle数据库odbc相关组件安装错误引起的。幸好同事提供了一个跟这台服务器完全一致的虚拟化环境,可以任由我测试。先从操作系统开始,重新安装数据源,重新注册dll,但问题还是存在。网上google了一下,可能是NTFS磁盘权限的原因引起的,调整了系统访问oracle目录的权限,所有用户设置了读取和运行的权限,重启系统,问题还是存在。由此排除了操作系统数据源存在问题的可能,问题可能存在于oracle的安装上。

      自定义安装了oracle数据库oracle windows interfaces所有组件,还是不行后手工注册了相应DLL,但是还是不能访问数据源。数据源管理器中手动创建Microsoft ODBC for oracle数据源时提示该组件依赖oracle客户端7.5以上组件,安装了oracle10g客户端后,发现Microsoft ODBC for oracle、Microsoft OleDb Provider for oracle都可以使用了,但是oracle provider for OLE DB不能使用,而这个驱动正是我们使用的,检查了oracle安装后,发现客户端安装中没有带这个组件,数据库安装中有这个组件,但操作系统好像不认。从oracle官网上下载ODAC101040后,Microsoft ODBC for oracle、Microsoft OleDb Provider for oracle、oracle provider for OLE DB后,所有驱动都可以使用,问题解决。

      由此确认了这个问题:Oracle10G数据库安装程序中自带的 oracle windows interfaces组件安装到操作系统后,这个版本操作系统数据源管理器可能不认,操作系统只认oracle客户端安装程序带的 oracle windows interfaces,但客户端安装中没有提供我们需要的oracle provider for OLE DB。需要从 oracle官网上下载完整的oracle数据驱动安装程序。

你可能感兴趣的:(oracle,数据库,服务器,System,dll,oracle10g)