2014-02-21 71 views
3

我们有应用程序ID(假设为APP_ID)连接到数据库并使用dbms_session.set_context()为VPD设置实际登录用户(例如:user1,user2)。任何获取不同数据库连接的上下文详细信息的方法

对于查询中的性能问题,我们要确定运行它的用户(user1,user2)。有没有办法通过提供sid来获取连接的dbms_session.get_context()?

  1. 假设DBA可以运行它。
  2. 我要转储从上下文的实际用户名和其连接ID(SID)
  3. Oracle数据库

我知道可以创建应用程序登录或DBA跟踪或登录信息的过程..我只想知道,有没有什么可以用的方法?

回答

0

如果你有一个DBA运行它,你应该可以访问V$SESSIONview。 像这样的简单查询会给你所有的小岛屿发展中国家相连的&用户名:

select 
     substr(sid,1,5) sid, 
     substr(serial#,1,5) ser_num, 
     substr(machine,1,6) box, 
     substr(username,1,10) username, 
     substr(osuser,1,8) os_user, 
     substr(program,1,30) program 
from v$session 
where 
and type='USER' 
order by username; 

如果你只是寻找的实际运行查询和用户/ SID,你可以运行像在这个answer描述。

+0

我认为问题是要求由另一个会话设置的自定义上下文值,而不只是试图找到常规会话信息。 –

+0

@jonearles即使在Oracle中也可行吗? – Durandal

+0

我不这么认为。但很难说这样的事情是不可能的。 –

相关问题