Python 3.6 / Oracle 18c / Oracle Client 12问题(OCI-22303)

时间:2018-11-01 08:44:03

标签: python oracle cx-oracle

我想在这里公开一个问题,我必须知道其他人是否有相同的问题(并解决了这个问题:))

我有一个使用cx_oracle 6.0.3的Python脚本(3.6.1 64位)。连接到Oracle 18c DB。 连接运行良好。 我的问题是当我尝试使用gettype从数据库类型定义创建Python变量时。

这是我的例子:

db = cx_Oracle.connect("scott/tigger@oracle_18c")
res = db.gettype("type_employee").newobject()

根据配置,我有以下问题:

2018-10-31 15:28:15,019 - ERROR - OCI-22303: type ""."type_employee" not found

在Oracle 11g中,脚本运行良好。 使用依赖于我使用的Oracle客户端的Oracle 18c(我想这就是我进行调查的地方)。当我使用Oracle 11.1.0.x客户端时,它运行良好。客户端为Oracle 12时会发生此问题。

我还要进行其他测试/更改:

  • 升级cx_oracle以使用版本7.0.0
  • 使用Oracle 11g DB测试客户端Oracle 12

我会做的,并将结果尽快发布在这里。

有人遇到过同样的问题并且可以分享经验/解决方案吗?

谢谢。

编辑1

我对Oracler 18c DB上的配置进行了以下附加测试:

  • Python 3.6.1 64位,CX-ORACLE 6.0.3,Oracle客户端11 64位=>确定
  • Python 3.6.1 64位,CX-ORACLE 7.0.0,Oracle客户端11 64位=>确定
  • Python 3.6.1 64位,CX-ORACLE 7.0.0,Oracle客户端12 64位=> NOK
  • Python 3.6.1 64位,CX-ORACLE 6.0.3,Oracle客户端12 64位=> NOK

使用Oracle客户端12 32位没有意义,因为它与我的配置不兼容。

编辑2

我对Oracler 11g DB上的配置进行了以下附加测试:

  • Python 3.6.1 64位,CX-ORACLE 6.0.3,Oracle客户端11 64位=>确定
  • Python 3.6.1 64位,CX-ORACLE 7.0.0,Oracle客户端11 64位=>确定
  • Python 3.6.1 64位,CX-ORACLE 7.0.0,Oracle客户端12 64位=>确定
  • Python 3.6.1 64位,CX-ORACLE 6.0.3,Oracle客户端12 64位=>确定

1 个答案:

答案 0 :(得分:0)

问题是该命令在Oracle Client 12和Oracle 18c DB中变得区分大小写(Oracle 11g没问题)。 如果我使用

更改代码
res = db.gettype("TYPE_EMPLOYEE").newobject()

一切正常