Oracle EasyConnect连接字符串使用SID?

7
我正在尝试通过代码(Ruby/DBI,但这不重要)使用EasyConnect连接字符串连接到Oracle数据库。所有的Oracle文档都说要将连接字符串指定为//hostname:port/service_name。我没有需要连接的数据库的service_name,而是有一个SID。是否有一种方法可以使用SID而不是服务名称创建EasyConnect连接字符串?
我的连接代码如下:
DBI.connect("DBI:OCI8://localhost:9000/the_sid", "这里是用户名", "这里是密码")
我不停地尝试不同的方法,根据我尝试的内容,我会得到两个错误消息中的一个。
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor (DBI::DatabaseError)
ORA-12154: TNS:could not resolve the connect identifier specified (DBI::DatabaseError)

你确定你需要主机名和端口号吗?错误信息似乎表明您正在运行TNS监听器。如果TNS名称已正确配置,则您的连接字符串可能是“DBI:OCI8:the_sid”。 - Codo
我没有配置TNS名称。 - Jon Kruger
1个回答

3

您尝试过将SID作为SERVICE名称吗?通常可以在请求服务时指定一个SID。SERVICE_NAMES通常默认为SID。在SQL命令提示符下输入:

SQL> show parameter service

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      sid

SQL> 

VALUE列中的值是数据库注册的服务名称。


当我在Oracle SQL Developer中运行该命令时,我没有得到任何输出(也许我没有权限运行该命令?) - Jon Kruger
1
如果我不知道如何编写连接字符串来连接数据库,我该如何运行SQL*Plus? :) 另外,这不是我拥有的数据库,因此如果需要特权访问权限,我将没有这些权限。 - Jon Kruger
你是否已经登录到数据库服务器?如果是的话,你可以通过设置ORACLE_SID=your_sid并运行sqlplus user/pw来完全绕过SQL*Net。 - DCookie
当我尝试连接长连接字符串时,只会得到sqlplus使用文本(没有错误消息,也没有用户名提示)。 - Jon Kruger
你在哪个操作系统上运行这些命令?你的 Oracle 版本是多少?你是在服务器上运行这些命令吗? - DCookie
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接