我正试图使用Python cx_Oracle包和Oracle instantclient_19_8连接到Oracle数据库。我一直收到这个错误-OORA-29024:证书验证失败。
- 我下载并安装了Oracle InstantClient_19_8
- 在[…]instantclient_19_8/network/admin目录中,我复制了从DBA那里收到的cwallet.so和ewallet.p12文件
- 我在network/admin目录中创建了一个sqlnet.ora文件:
WALLET_LOCATION=(来源=(方法=文件((方法_数据=(目录=/instantclient_19_8/network/admin()(SQLNET。WALLET_OVERRIDE=真
- 我在网络/管理目录中创建了一个tnsnames.ora文件(尽管这可能没有必要(:
ora_conn=(描述=(地址列表=(地址=(协议=TCPS((主机={主机}((端口=1525())(连接数据=(服务名称={SVC_NAME()(
- 在Pycharm中,我设置了TNS_ADMIN环境变量,并将其指向[…]/instantclient_19_8/network/ADMIN
我的Python连接信息是:
dsn=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCPS)(HOST={HOST_ADDRESS})(PORT={PORT_NBR})))(CONNECT_DATA=(SERVICE_NAME={SVC_NAME})))
cx_Oracle.init_oracle_client(lib_dir='[...]/instantclient_19_8')
ora_conn = cx_Oracle.connect(user=usr
, password=pw
, dsn=dsn
, encoding="UTF-8")
cursor = ora_conn.cursor()
我看过几篇关于使用orapki的博客文章,但不清楚如何将orapki与即时客户端一起使用。如果DBA创建了钱包,他们是唯一可以向钱包添加证书文件的人吗?或者,如果我让orapki工作,我能做到吗?
任何建议/指导都很棒!
谢谢!
设置DIRECTORY = /instantclient_19_8/network/admin
看起来可疑。根文件系统中真的有instantclient_19_8
目录吗?我希望看到类似/Users/you/instantclient_19_8/network/admin
的东西。
但是,由于您将文件移动到了默认位置,因此甚至不需要编辑sqlnet.ora。默认的DIRECTORY路径(从?
开始(会自动工作。当文件位于此默认位置时,也不需要设置TNS_ADMIN。
使用cx_Oracle这样的C语言代码,就不需要.p12文件。您只需要.so文件、sqlnet.ora和tnsnames.ora.
cx_Oracle文档"连接到Oracle云自动数据库"显示了两种选择:当钱包文件位于默认位置时,以及当没有时。
您可能还想看看博客文章"如何连接到Oracle自主云数据库"。