使用会话ID查找将应用程序连接到oracle数据库

时间:2019-06-04 16:00:40

标签: oracle11g

我试图确定在Oracle 11g数据库中使用特定会话ID的应用程序。我可以使用此查询找到会话ID的服务名称

select SID, SERVICE_NAME
from v$session
where SID = <sessionID here>;

不幸的是,一些应用程序使用此服务名称来连接数据库。是否可以使用另一个表/查询来确定哪个应用程序正在使用此会话ID?

1 个答案:

答案 0 :(得分:1)

V$SESSION中还有其他列可能对有用有用,例如:

select username, osuser, logon_time, status, program, module, client_identifier, client_info
from gv$session
where sid = <sessionID here>;

但是,由您的应用程序来设置或覆盖最后四个值。

例如,从SQL * Plus开始的会话将程序显示为sqlplus@client_host (TNS V1-V3)之类,并将模块显示为SQL*Plus。 SQL Developer将两个值都显示为该名称。 JDBC连接默认都具有类似于“ JDBC瘦客户端”的名称,但是应用程序可以选择覆盖它们和/或设置client_identifierclient_info。 Pro * C应用程序也一样,默认情况下,程序和模块的外观都类似于exe_name@client_host (TNS V1-V3)

当SQL Developer使用JDBC时,它用自己的值覆盖程序和模块。 SQL * Plus将覆盖默认模块值。

因此,如果使用您感兴趣的会话ID的应用程序配置了这些值中的任何一个,您应该对它的含义有个很好的了解。如果还没有,那么您仍然可以了解有关应用程序类型的线索(例如JDBC)。 osuser也可能有用。

有关应用程序如何设置这些值的更多信息,请参见SYS_CONTEXTDBMS_APPLICATION_INFODBMS_SESSION软件包。