【问题标题】:How to list active / open connections in Oracle?如何在 Oracle 中列出活动/打开的连接?
【发布时间】:2010-11-05 19:09:57
【问题描述】:

是否有任何隐藏的表、系统变量或其他东西可以显示给定时刻的活动连接?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    使用V$SESSION 视图。

    V$SESSION 显示每个当前会话的会话信息。

    【讨论】:

    • 命令中从第 1 行开始出错:select * from FROM v$session 命令行错误:1 列:14 错误报告:SQL 错误:ORA-00903:无效表名 00903.00000 -"无效的表名” *原因:*操作:
    • 要么您没有权限,要么您没有正确安装 DBA 视图。
    • 您需要 select_catalog_role 角色。
    • 你也可以加入 v$sqltext 来获取 session 的当前 SQL。
    • pistacchio,SQL 中有 2 个“from FROM”:“select * from FROM v$session”
    【解决方案2】:

    如需更完整的答案,请参阅: http://dbaforums.org/oracle/index.php?showtopic=16834

    select
           substr(a.spid,1,9) pid,
           substr(b.sid,1,5) sid,
           substr(b.serial#,1,5) ser#,
           substr(b.machine,1,6) box,
           substr(b.username,1,10) username,
    --       b.server,
           substr(b.osuser,1,8) os_user,
           substr(b.program,1,30) program
    from v$session b, v$process a
    where
    b.paddr = a.addr
    and type='USER'
    order by spid; 
    

    【讨论】:

      【解决方案3】:

      当我想查看从我们的应用服务器到数据库的传入连接时,我使用以下命令:

      SELECT username FROM v$session 
      WHERE username IS NOT NULL 
      ORDER BY username ASC;
      

      简单但有效。

      【讨论】:

        【解决方案4】:
        select s.sid as "Sid", s.serial# as "Serial#", nvl(s.username, ' ') as "Username", s.machine as "Machine", s.schemaname as "Schema name", s.logon_time as "Login time", s.program as "Program", s.osuser as "Os user", s.status as "Status", nvl(s.process, ' ') as "OS Process id"
        from v$session s
        where nvl(s.username, 'a') not like 'a' and status like 'ACTIVE'
        order by 1,2
        

        此查询尝试过滤掉所有后台进程。

        【讨论】:

          【解决方案5】:
          Select count(1) From V$session
          where status='ACTIVE'
          /
          

          【讨论】:

            【解决方案6】:
            select
              username,
              osuser,
              terminal,
              utl_inaddr.get_host_address(terminal) IP_ADDRESS
            from
              v$session
            where
              username is not null
            order by
              username,
              osuser;
            

            【讨论】:

            • 欢迎来到 SO!请为您的答案提供一些直觉。
            【解决方案7】:
            select status, count(1) as connectionCount from V$SESSION group by status;
            

            【讨论】:

              【解决方案8】:

              以下为您提供按连接数排序的操作系统用户列表,这在查找资源使用过多时很有用。

              select osuser, count(*) as active_conn_count 
              from v$session 
              group by osuser 
              order by active_conn_count desc
              

              【讨论】:

                【解决方案9】:
                select 
                    count(1) "NO. Of DB Users", 
                    to_char(sysdate,'DD-MON-YYYY:HH24:MI:SS') sys_time
                from 
                    v$session 
                where 
                    username is NOT  NULL;
                

                【讨论】:

                • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
                猜你喜欢
                • 2015-08-04
                • 1970-01-01
                • 2022-10-02
                • 2019-09-11
                • 2015-02-10
                • 2014-07-09
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多