cx_oracle设置问题汇总

来源:互联网 发布:java并发编程的例子 编辑:程序博客网 时间:2024/05/29 18:08
cxoracle版本与oracle instantclient版本 必须严格匹配(花了很多时间)

http://cx-oracle.sourceforge.net/     

oracle 10g
cx_Oracle-5.1-10g.win32-py2.6.msi
instantclient-basic-win32-10.2.0.4.zip
解压instantclient-basic-win32-10.2.0.4.zip ,并将此目录设置为ORACLE_HOME
将instantclient-basic-win32-10.2.0.4目录内的dll拷贝到c:\python26\lib\site_packages
运行oracle_test.py测试是否能连接到远程oracle服务 

import cx_Oracle
dsn_tns = cx_Oracle.makedsn('192.168.14.203', 1521,'ORCL')   -- ORCL为远端oracle配置的listener的名称
print cx_Oracle.connect('tax','tax',dsn_tns)


在命令行方式下运行SQL *Plus即可解锁并修改密码:运行-->cmd-->sqlplus /nologconn sys as sysdba输入密码alter user scott identified by tiger(或预设密码) account unlock;conn scott/tiger(或预设密码)


Windows xp 
python 2.7 
oracle 客户端9.0 
服务器客户端11g 

安装cx_Oracle过程中出现的问题 

cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle 

下载\instantclient_10_2 
然后把里面的动态链接库都复制到C:\Python27\Lib\site-packages下 

cx_Oracle.DatabaseError: ORA-12705: Cannot access NLS data files or invalid 

environment specified 
把注册表里\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 本级和下级目录下的NLS_lang 的 

NA值修改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK; 

python2.7(win7 64bit)
oracle:10.2.0.4.0

下载cx_Oracle:http://download.csdn.net/detail/sunna_jie/7586683
instantclient_10_2:http://download.csdn.net/detail/sunna_jie/7586667
并配置环境变量:
PATH=D:\oracle\instantclient_10_2(instantclient_10_2的路径,可以根据自己的配置)
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(这个具体没有验证是否必须,整了大半天有点累了,不想验证)
TNS_ADMIN=D:\oracle\instantclient_10_2(tnsnames.ora的路径)

在连接数据库,测试语句:
import cx_Oracle
db=cx_Oracle.connect('username','password','ip地址:1521/service name')
print db.version

执行时,报错:cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle

把instantclient_10_2中的*.dll文件复制到:D:\python27\Lib\site-packages文件下

可连接成功

cmd
emctl start dbconsole
无法启动 错误代码为2  (安装oracle10g为联网的,后来更换网络环境 )

1、如果报没有ORACLE_SID 则配置环境变量   同时也可在cmd命令行 set ORACLE_SID=orcl
在【我的电脑】 【属性】 【高级】 【系统变量】 新建ORACLE_SID 值为orcl

2、也可以考虑在C:\WINDOWS\system32\drivers\etc目录下hosts文件 加入主机和对应更换后的ip (如果经常换ip,就显得麻烦)
例:
127.0.0.1       localhost
#192.168.1.23       MICROSOF-8E99BB

3、如果是报 OC4J Configuration issue.C:\oracle\product\10.2.0\db_1\oc4j\
j2ee\OC4J_DBConsole_MICROSOF-8E99BB_orcl not found.
在对应目录下拷贝目录OC4J_DBConsole_localhost_orcl 并且重命名为OC4J_DBConsole_MICROSOF-8E99BB_orcl

4、又是报 EM Configuration issue.C:\oracle\product\10.2.0\db_1\MICROSOF-8E99BB_orcl not found.
同样在对应目录下拷贝目录localhost_orcl,并且更名为MICROSOF-8E99BB_orcl

5、一般可以成功启动了  
如果还是不能  如变成错误代码为3的话(这次没有遇到过)

A、重新进入cmd命令行,创建新配置,输入emca -repos recreate,
   根据提示分别输入如下信息:
 数据库 SID: orcl
 监听程序端口号: 1521
 SYS 用户的口令:
 SYSMAN 用户的口令:
 是否继续? [yes(Y)/no(N)]: y
 2011-09-09 14:53:50 oracle.sysman.emcp.EMConfig perform
 信息: 正在将此操作记录到 E:oracleproduct10.2.0db_1cfgtoollogsemca uosiem
 ca_2011-09-09 _02-53-35-下午.log。
 2011-09-09 14:53:50 oracle.sysman.emcp.EMReposConfig createRepository
 信息: 正在创建 EM 资料档案库 (此操作可能需要一段时间)...
 2011-09-09 14:57:40 oracle.sysman.emcp.EMReposConfig invoke
 信息: 已成功创建资料档案库
 已成功完成 Enterprise Manager 的配置

B、在命令行输入emca -config dbcontrol db
 输入以下信息:
 SID:orcl
 Listener port number: 1521
 Sys 口令:******
 ……

6、应该没问题了 可以成功启动了.


0 0