您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用SID代替连接字符串上的服务名称时,cx_Oracle无法连接

使用SID代替连接字符串上的服务名称时,cx_Oracle无法连接

在类似的情况下,我能够通过使用cx_Oracle.makedsn()给定的(而不是服务名)创建 字符串来连接到数据库SID

dsnStr = cx_Oracle.makedsn("oracle.sub.example.com", "1521", "ora1")
@H_419_7@

这返回类似

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.sub.example.com)(PORT=1521)))(CONNECT_DATA=(SID=ora1)))
@H_419_7@

然后可以用来cx_Oracle.connect()连接数据库

con = cx_Oracle.connect(user="myuser", password="mypass", dsn=dsnStr)
print con.version
con.close()
@H_419_7@
   

          

解决方法

我有一个看起来像这样的连接字符串

con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.sub.example.com)(PORT=1521)))(CONNECT_DATA=(SID=ora1)))
@H_419_7@

然后可以用来cx_Oracle.connect()连接数据库

con = cx_Oracle.connect(user="myuser", password="mypass", dsn=dsnStr)
print con.version
con.close()
@H_419_7@
  

          

解决方法

我有一个看起来像这样的连接字符串

con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
con = cx_Oracle.connect(user="myuser", password="mypass", dsn=dsnStr)
print con.version
con.close()
@H_419_7@
 

          

解决方法

我有一个看起来像这样的连接字符串

con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"
cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

这返回类似

然后可以用来cx_Oracle.connect()连接数据库

我有一个看起来像这样的连接字符串

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

这返回类似

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.sub.example.com)(PORT=1521)))(CONNECT_DATA=(SID=ora1)))
@H_419_7@

然后可以用来cx_Oracle.connect()连接数据库

con = cx_Oracle.connect(user="myuser", password="mypass", dsn=dsnStr)
print con.version
con.close()
@H_419_7@
  

          

解决方法

我有一个看起来像这样的连接字符串

con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
con = cx_Oracle.connect(user="myuser", password="mypass", dsn=dsnStr)
print con.version
con.close()
@H_419_7@
 

          

解决方法

我有一个看起来像这样的连接字符串

con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"
cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

然后可以用来cx_Oracle.connect()连接数据库

我有一个看起来像这样的连接字符串

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

然后可以用来cx_Oracle.connect()连接数据库

con = cx_Oracle.connect(user="myuser", password="mypass", dsn=dsnStr)
print con.version
con.close()
@H_419_7@
 

          

解决方法

我有一个看起来像这样的连接字符串

con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"
cx_Oracle.connect(con_str)

DatabaseError:  ORA-12514:  TNS:listener  does  not  currently  know  of  service  requested  in  connect  descriptor

我有一个看起来像这样的连接字符串

ora1我的数据库的SID在哪里。在SQL Developer中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。

但是,如果我尝试使用此字符串连接到Oracle,它将失败。

但是,如果连接ora1是服务名称,则此连接字符串格式有效。

我看过其他问题,似乎与我的问题相反(它可以与SID一起使用,但不能与服务名一起使用)

使用cx_OracleSID而不使用服务名称连接到Oracle的正确方法是什么?我如何做到这一点而无需调整TNSNAMES.ORA文件?我的应用程序在内部分发给许多用户,并且TNSNAMES在与Windows计算机上没有管理员特权的用户打交道时,对文件进行更改并不理想。此外,当我使用服务名称时,我完全不需要触摸此文件,而是希望它保持这种状态。

Oracle 2022/1/1 18:28:10 有432人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶