【问题标题】:Any way to get context detail of different db connection获取不同数据库连接的上下文详细信息的任何方法
【发布时间】:2014-02-21 22:43:37
【问题描述】:

我们有应用程序 ID(假设为 APP_ID)来连接数据库并使用 dbms_session.set_context() 为 VPD 设置实际登录用户(例如:user1,user2)。

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

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

我知道可以创建应用程序登录或 dba 跟踪或记录信息的过程...我只是想知道,有什么开箱即用的方法吗?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    如果您让 DBA 运行它,您应该能够访问 V$SESSION view。 像这样的简单查询将为您提供所有连接的 sid 及其用户名:

    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 中所述的内容。

    【讨论】:

    • 我认为问题是要求另一个会话设置的自定义上下文值,而不仅仅是尝试查找常规会话信息。
    • @jonearles 这在 Oracle 中是否可行?
    • 我不这么认为。但很难说这样的事情是否不可能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2015-08-28
    • 2014-09-03
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    相关资源
    最近更新 更多