Vij*_*jay 4 python linux oracle cx-oracle database-connection
我正在尝试Oracle client 12.2 in RHEL 7 linux从Python程序中对新安装进行健全性测试,但是由于上述错误而失败,不确定我在那里缺少什么.请帮忙解决这个问题:
cx_Oracle.DatabaseError: ORA-12514: TNS:listener does not currently know of service
requested in connect descriptor
Run Code Online (Sandbox Code Playgroud)
我tnsnames.ora目录下的/home文件
Run Code Online (Sandbox Code Playgroud)FRDLD2D1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = frdld2d1.de.db.com)(Port = 1825)) ) (CONNECT_DATA = (SID = FRDLD2D1) ) )
我的python程序如下
Run Code Online (Sandbox Code Playgroud)#!/usr/bin/python import cx_Oracle #connection = cx_Oracle.connect('PNTH_LOGGINGB_OWNER/password') connection = cx_Oracle.connect('PNTH_LOGGINGB_OWNER/password@10.245.63.34:1825/orcl') cursor = connection.cursor() querystring = "select * from BDR_JOB_MASTER_LOG where ROWNUM <= 1;" cursor.execute(querystring)
frdld2d1.de.db.com - IP地址 : 10.245.63.34
感谢是否有人在这里发现故障.
tnsping 实用程序无法测试,因为它是一个instaclient版本
oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm.
但是SQLPlus,我可以毫无问题地连接数据库.
请使用此作为您的连接字符串:
connection = cx_Oracle.connect('PNTH_LOGGINGB_OWNER', 'hdgf_76trf',
cx_Oracle.makedsn('10.245.63.34',1825,'FRDLD2D1') );
Run Code Online (Sandbox Code Playgroud)
更改SERVICE_NAME = FRDLD2D1到SID = FRDLD2D1您的TNSNAMES.ORA文件可能是一个选择.
小智 5
你只需在Python中创建dsn,无需配置文件(tnsnames.ora)
dsn = cx_Oracle.makedsn(host='10.245.63.34', port=1825, sid='FRDLD2D1')
con = cx_Oracle.connect(user='PNTH_LOGGINGB_OWNER', password='password', dsn=dsn)
Run Code Online (Sandbox Code Playgroud)