R连接oracle报错:state IM004, code 0, message ...SQLAllocHandle on SQL_HANDLE_ENV 失败
win732位下使用R连接oracle,在数据源管理中添加了oracle数据源“dsnORCL”,测试是成功的;R中已加载了RODBC包,用odbcConnect("ds...
win7 32位下使用R连接oracle,在数据源管理中添加了oracle数据源“dsnORCL”,测试是成功的;R中已加载了RODBC包,用odbcConnect("dsnORCL",uid="***",pwd="***")后报错:ERROR: state IM004, code 0, message [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLAllocHandle on SQL_HANDLE_ENV 失败
展开
1个回答
展开全部
这种问题一般不是R里面的问题,很可能是ODBC在环境变量里指定的Oracle_Home的路径问题,你可以从控制面板-系统-高级系统设置-系统属性-高级-环境变量(右下角)里,查看系统变量里的path。看你的ODBC里有两个oracle连接,不知是你装过两次还是用两个用户名设置过两次。检查时首先要留意你测试通过的是否是另一个连接,其次在环境变量里指定的Oracle_Home的路径,是否是dsnORCL2所在的路径,别把两个混了。
实在搞不清楚,可以把两个ODBC都删了,重新建立ODBC,最好就一个,再试一下。
实在搞不清楚,可以把两个ODBC都删了,重新建立ODBC,最好就一个,再试一下。
更多追问追答
追问
我是同时装了oracle的服务器端和客户端,环境变量path里“D:\envirenment\oracle\product\10.2.0\client_1\bin;D:\envirenment\oracle\product\10.2.0\db_1\bin”都有。
开始我只建了一个dsnoracle,能测试通过,但library(RODBC)的时候就报错,才又建了一个试试,发现还是不行。
追答
原来你同时装了服务器端和客户端,设置的两个ODBC连接不是两个不同的Oracle用户,而是客户端和服务器端,其中dsnORCL是客户端用的,你从ODBC环境连dsnORCL当然连不通。另外,环境变量里客户端的path在服务器端path的前面。我没装过这样的环境,不知道你在ODBC里测试通过的是不是dsnORCL而不是服务器端的dsnORCL2,按理在ODBC里测试客户端也应该报同样的错误。
折腾这么长时间还没搞定,建议你干脆卸了客户端,再删除了客户端ODBC,再检查环境变量没有客户端Path后,重启完再试一试。
没有Oracle客户端无所谓,你用pl/sql一样管理Oracle啊。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询