连不上到连的上的的指导精神是python->oracle客户端->oracle服务器都保持一致的32位或64位
1.事件回顾:
2020-04-24 连不下
本机上装有2个版本的oracle客户端
E:\app\june\product\11.2.0\client_1 是x86的
E:\app\june\product\11.2.0\client_2 是64的
oracle服务器是64位的,果断选取64位的 ORACLE_HOM TNS_ADMIN pah(变更环境变量)
然后,python取个64位的(下面有说明各个版本怎么判断)
又试:
出现了ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID问题
打开工具(window10下在查找里敲前几个字母就出来了)
重新配置sid
这个工具也可重新配置监听程序
配置完成,用 navicate Preminum测试一下连接,成功连上了,就说明没有问题
最后测试python 程序,成功连接上。
以下是几个历史时期重复连上不的过程,或有启发。
2019-07-15
orcle连不上,
C:\Python27\Lib\site-packages下放入对应版本的cx_Oracle.pyd
2018-11-09
xx实施,连不上数据库。
python32位,lib/PlatLib/Windows/x86中有cx_Orcale
连接报错,需要32位的cx_orcale,
ImportError: DLL load failed: %1 不是有效的 Win32 应用程序</span>
检查python与cx_Oracle的版本。要保持一致,32位或都是64位。
2.如何查看版本
在cmd环境,直接打python,控制台
Unable to acquire Oracle environment handle python
查看数据库的版本:
select * from v$version (显示iot是32位)
查看客户端64还是32位
%ORACLE_HOME%\inventory\ContentsXML下的comps.xml
3.正确设置环境变量
ORACLE_HOM
E:\app\june\product\11.2.0\client_2\ #client安装地址
TNS_ADMIN
E:\app\june\product\11.2.0\client_2\network\admin #安装地址下的admin
pah里加入client安装地址的bin
E:\app\june\product\11.2.0\client_2\BIN