如何查找Oracle服务名称

70

我在网络上有一个Oracle数据库,可以使用主机名、端口号、用户名、密码和SID连接Oracle SQL Developer。

但我需要连接另一个应用程序(Quantum Gis),该应用程序使用服务名而非SID。

当我通过SID在SQL Developer中连接时,有没有办法确定数据库的SERVICE_NAME?

我无法访问服务器,也没有本地的tnsnames.ora或类似文件。


6
Jakobsen: 只需运行命令 Show parameter service_name - Gaurav Soni
2
据我所知,show parameter是一个SQL/Plus命令,我不确定SQL Developer是否支持SQL/Plus提示符。如果不支持,OP可以使用select * from v$parameter where name like '%service_name%'代替。 - Frank Schmitt
1
“Show parameter service_name;” 返回错误信息 “显示参数查询失败”。 - Anders Jakobsen
1
"select value from v$parameter where name like '%service_name%';" 返回 ORA-00942:表或视图不存在。 - Anders Jakobsen
@AndersJakobsen:你没有访问数据字典视图的权限,请向你的DBA请求授权或索取服务名称。可能SQL Developer也支持SQLPlus命令,就像Toad一样支持。在Toad中,F5是运行此类命令的命令。 - Gaurav Soni
要从V$PARAMETER(同义词)中进行选择,您需要对V_$PARAMETER(视图)进行授权。 - Marek-A-
8个回答

87

非常感谢,这个在Oracle SQL Developer中对我起作用了。 - Larry Smith
4
GLOBAL_NAME 可以获取全局数据库名称,该名称与服务名称不同(尽管在某些情况下它们可能具有相同的值)。 - sql_knievel

51

使用SID作为"system"连接到服务器。执行此查询:

select value from v$parameter where name like '%service_name%';

这对我很有效。


2
对于需要帮助的任何人,请注意URL需要SID而不是服务名称。完整的服务名称对我无效:jdbc:oracle:thin:@localhost:1521:orcl.athens.intrasoft-intl.private,而这个有效:jdbc:oracle:thin:@localhost:1521:orcl - George Pligoropoulos
5
请注意区别:jdbc:oracle:thin:@HOST:PORT:SIDjdbc:oracle:thin:@HOST:PORT/SERVICE。请用正确的值替换大写单词。请注意这两个字符串之间的区别:在sid字符串中,sid名称与前面的字符串由冒号分隔,在服务字符串中,名称与前面的字符串由斜杠分隔。 - miracle173

28

所有会话使用的服务概述在列SERVICE_NAME中提供了字典视图v$session(对于RAC数据库,使用gv$session)。

要将信息限制为连接的会话,请使用视图V$MYSTAT中的SID:

select SERVICE_NAME from gv$session where sid in (
select sid from V$MYSTAT)

如果名称为SYS$USERS,则会话连接到一个默认服务,即在连接字符串中未指定明确的服务名称。

要查看数据库中可用的服务,请使用以下查询:

select name from V$SERVICES;
select name from V$ACTIVE_SERVICES;

2
当我直接使用SQL*Plus在机器上时,这只是对我说SYS$USERS - jpmc26
@jpmc26 SYS$USERS 是未关联服务的用户会话的默认服务。 - Marmite Bomber
我明白了,但是如果在同一台机器上运行时它不起作用,那么这个答案就比其他答案要少得多。 - jpmc26
1
@jpmc26扩展了答案,感谢您的建议。区分已连接服务和可用服务很重要。 - Marmite Bomber

16

13
它只返回SYS$USERS。我最终与数据库管理员联系上了,所以这个问题已不再存在。 - Anders Jakobsen
1
这实际上为我返回了在TNSNames中定义的当前Service_name。点个赞。 - Marco

13

通过以下方式检查数据库的服务名称:

sql> show parameter service;


4
显示所有参数设置。 - akki

4

使用“system”用户连接到数据库,并执行以下命令:

show parameter service_name 

-1

要查找ORACLE_SID,请使用$. oraenv


-5

使用SQL Developer,您无需编写任何查询即可找到它。 右键单击您的连接/属性。

您应该在左侧看到名称,类似于“连接详细信息”下的“Connectionname@servicename”,或者在连接详细信息下的右侧。


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