Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法解决cx_Oracle.DatabaseError:ORA-12514:TNS:listener当前不知道连接描述符中请求的服务_Oracle_Ubuntu_Cx Oracle - Fatal编程技术网

无法解决cx_Oracle.DatabaseError:ORA-12514:TNS:listener当前不知道连接描述符中请求的服务

无法解决cx_Oracle.DatabaseError:ORA-12514:TNS:listener当前不知道连接描述符中请求的服务,oracle,ubuntu,cx-oracle,Oracle,Ubuntu,Cx Oracle,我正在尝试访问另一台计算机上的oracle数据库。我正在使用: Ubuntu服务器18.04 oracle客户端12.2 python 3.6和cx_oracle 6.4.1 我经常会遇到这样的错误: 错误 特斯奈姆斯·奥拉 其他信息 $ORACLE\u HOME作为/usr/lib/ORACLE/12.1/client64/lib/ 文件tnsnames.ora位于/usr/lib/oracle/12.1/client64/network/admin 我读过很多帖子,但运气不好。从我读

我正在尝试访问另一台计算机上的oracle数据库。我正在使用:

  • Ubuntu服务器18.04
  • oracle客户端12.2
  • python 3.6和cx_oracle 6.4.1
我经常会遇到这样的错误:

错误 特斯奈姆斯·奥拉 其他信息
  • $ORACLE\u HOME
    作为
    /usr/lib/ORACLE/12.1/client64/lib/
  • 文件
    tnsnames.ora
    位于
    /usr/lib/oracle/12.1/client64/network/admin
我读过很多帖子,但运气不好。从我读过的所有帖子中,我认为这些都是更有用的,尽管它们不起作用

我相信可能是某个地方的某个人物


我没有安装sqlplus或tnslistener。(可能是原因吗?)

1) 安装SQL*Plus并使用它连接到数据库。您应该能够使用连接字符串“jalabe”进行连接/jalabepass@host/服务名称,其中“主机”是找到数据库的主机,“服务名称”是要连接到的数据库的服务名称。同样的连接字符串也应该在cx_Oracle中工作。您不需要使用makedsn()或tnsnames.ora(当然,它们也应该工作!)

2) 使用即时客户端时,不要设置环境变量ORACLE_HOME

3) 在数据库计算机上,您应该能够运行命令“lsnrctlstatus”,该命令将显示侦听器的状态以及它知道的服务。如果您的服务不在列表中,这就是问题的根源

4) 如果停止并重新启动侦听器,数据库将在侦听器中注册自身之前可能需要一段时间。您可以通过在数据库中以SYSDBA的身份发出命令“altersystemregister”(或停止/启动数据库),强制更快地执行此操作


希望这能帮到你

为什么不设置环境变量ORACLE_HOME?我正试着解开它,看看它是否起作用。我应该声明TNS_ADMIN变量吗?ORACLE_HOME不用于即时客户端,可能会导致问题。如果需要,可以设置TNS_ADMIN,如果在默认位置找不到配置文件,则必须设置TNS_ADMIN。
File "basic_test.py", line 5, in <module>
    con =  cx_Oracle.connect('jalabe','jalabepass', cx_Oracle.makedsn('ipserver','port',None,'prod'))
cx_Oracle.DatabaseError: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
import cx_Oracle
# first attempt
# con =  cx_Oracle.connect('jalabe/jalabepass@ipaddress/prod')

# second attempt 
con =  cx_Oracle.connect('jalabe','jalabepass', cx_Oracle.makedsn('ipaddress','port',None,'prod'))
print(con.version)
con.close()
DATABASE.WORLD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ipaddress)(PORT = port))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = prod)
    )
  )