运维联盟俱乐部

 找回密码
 立即注册
查看: 1982|回复: 0

[日常管理] q_sessions

[复制链接]
  • TA的每日心情
    开心
    2023-8-9 11:05
  • 发表于 2020-9-11 15:16:10 | 显示全部楼层 |阅读模式

    1. --查询当前会话设置最大参数和当前连接数,使用率
    2. SET TERMOUT     OFF
    3. SET ECHO        OFF
    4. SET FEEDBACK    ON
    5. SET HEADING     ON
    6. SET LINESIZE    180
    7. SET PAGESIZE    2000
    8. SET TIMING      OFF
    9. SET TRIMSPOOL   ON
    10. SET VERIFY      OFF

    11. CLEAR COLUMNS BREAKS COMPUTES

    12. COLUMN max_sess_allowed             FORMAT 9,999,999        HEADING 'Max sessions allowed'
    13. COLUMN num_sessions                 FORMAT 9,999,999,999    HEADING 'Number of sessions'
    14. COLUMN pct_utl                      FORMAT a19              HEADING 'Percent Utilization'
    15. COLUMN username                     FORMAT a15              HEADING 'Oracle User'
    16. COLUMN num_user_sess                FORMAT 9,999,999        HEADING 'Number of Logins'
    17. COLUMN count_a                      FORMAT 9,999,999        HEADING 'Active Logins'
    18. COLUMN count_i                      FORMAT 9,999,999        HEADING 'Inactive Logins'
    19.                                    
    20. SELECT
    21.     TO_NUMBER(a.value)         max_sess_allowed
    22.   , TO_NUMBER(count(*))        num_sessions
    23.   , LPAD(ROUND((count(*)/a.value)*100,0) || '%', 19)  pct_utl
    24. FROM
    25.     v$session    b
    26.   , v$parameter  a
    27. WHERE
    28.     a.name = 'sessions'
    29. GROUP BY
    30.     a.value;

    31. <font color="Red">--查询当前会话详细信息,以type分类汇总</font>
    32. BREAK on report
    33. COMPUTE sum OF num_user_sess count_a count_i ON report

    34. SELECT
    35.     lpad(nvl(sess.username, '[B.G. Process]'), 15) username
    36.   , count(*) num_user_sess
    37.   , nvl(act.count, 0)   count_a
    38.   , nvl(inact.count, 0) count_i
    39. FROM
    40.     v$session sess
    41.   , (SELECT    count(*) count, nvl(username, '[B.G. Process]') username
    42.      FROM      v$session
    43.      WHERE     status = 'ACTIVE'
    44.      GROUP BY  username)   act
    45.   , (SELECT    count(*) count, nvl(username, '[B.G. Process]') username
    46.      FROM      v$session
    47.      WHERE     status = 'INACTIVE'
    48.      GROUP BY  username) inact
    49. WHERE
    50.          nvl(sess.username, '[B.G. Process]') = act.username (+)
    51.      and nvl(sess.username, '[B.G. Process]') = inact.username (+)
    52. GROUP BY
    53.     sess.username
    54.   , act.count
    55.   , inact.count
    56. /


    57. --查询当前会话详细信息,以用户分类的汇总
    58. SET ECHO        OFF
    59. SET FEEDBACK    6
    60. SET HEADING     ON
    61. SET LINESIZE    180
    62. SET PAGESIZE    50000
    63. SET TERMOUT     ON
    64. SET TIMING      OFF
    65. SET TRIMOUT     ON
    66. SET TRIMSPOOL   ON
    67. SET VERIFY      OFF

    68. CLEAR COLUMNS
    69. CLEAR BREAKS
    70. CLEAR COMPUTES

    71. COLUMN instance_name     FORMAT a8         HEADING 'Instance'
    72. COLUMN sid               FORMAT 999999     HEADING 'SID'
    73. COLUMN serial_id         FORMAT 99999999   HEADING 'Serial ID'
    74. COLUMN session_status    FORMAT a9         HEADING 'Status'
    75. COLUMN oracle_username   FORMAT a18        HEADING 'Oracle User'
    76. COLUMN os_username       FORMAT a18        HEADING 'O/S User'
    77. COLUMN os_pid            FORMAT a8         HEADING 'O/S PID'
    78. COLUMN session_terminal  FORMAT a10        HEADING 'Terminal'         TRUNC
    79. COLUMN session_machine   FORMAT a30        HEADING 'Machine'          TRUNC
    80. COLUMN session_program   FORMAT a40        HEADING 'Session Program'  TRUNC

    81. BREAK ON instance_name SKIP PAGE

    82. SELECT
    83.     i.instance_name     instance_name
    84.   , s.sid               sid
    85.   , s.serial#           serial_id
    86.   , s.status            session_status
    87.   , s.username          oracle_username
    88.   , s.osuser            os_username
    89.   , p.spid              os_pid
    90.   , s.terminal          session_terminal
    91.   , s.machine           session_machine
    92.   , s.program           session_program
    93. FROM
    94.              gv$session  s
    95.   INNER JOIN gv$process  p ON (s.paddr = p.addr AND s.inst_id = p.inst_id)
    96.   INNER JOIN gv$instance i ON (p.inst_id = i.inst_id)
    97. WHERE
    98.       s.status = 'ACTIVE'
    99.   AND s.username IS NOT null
    100. ORDER BY
    101.     i.instance_name
    102.   , s.sid;

    103. --按功能排序
    104. select inst_id,count(*) from gv$session where type='USER'  group by inst_id;
    105. select machine,count(*) from gv$session where type='USER'  group by machine;
    106. select program,count(*) from gv$session where type='USER'  group by program;
    107. select username,count(*) from gv$session where type='USER'  group by username;
    108.         


    109. --僵尸进程
    110. select p.spid from v$process p where not exists(select spid from v$session where paddr=p.addr);

    111. --杀掉符合定义的会话
    112. select 'alter system kill session ''' || sid || ',' || serial# || ''';'
    113.   from v$session
    114. where sid in
    115.        (select sid from v$session where sql_id='3d8tczpt1v7vj' or sql_id='ajvc4f9ccyzbx')
    116. /

    117. select 'alter system kill session ''' || sid || ',' || serial# || ''';'
    118.   from v$session
    119. where sid in
    120.        (select sid from v$session where  event='direct path read' and username='SCYW')
    121. /

    122. select spid from v$process
    123. where addr in
    124.        (select paddr from v$session where username='ODS_DD_PDWYXJC')
    125. /


    126. --根据pid找出该pid的session信息和sql信息
    127. select se.username, se.machine, sq.cpu_time, sq.sql_text
    128.   from v$process p, v$session se, v$sqlarea sq
    129. where p.addr = se.PADDR
    130.    and se.sql_hash_value = sq.hash_value
    131.    and p.addr = '&pid'
    132. /
    133. SELECT
    134.     s.sid           sid
    135.   , s.serial#       serial_id
    136.   , s.status        session_status
    137.   , s.username      oracle_username
    138.   , s.osuser        os_username
    139.   , p.spid          os_pid
    140.   , s.program       session_program
    141. FROM
    142.     v$process p
    143.   , v$session s
    144. WHERE
    145.     p.addr (+) = s.paddr
    146.     and s.username='&uname'   
    147. ORDER BY
    148.     sid
    149. /
    150. <font color="Red">--当前用户的会话信息</font>
    151. set serveroutput on
    152. set linesize 200 pagesize 1400
    153. declare
    154.   l_audsid number;
    155.   l_sid    number;
    156.   l_serial number;
    157.   l_module varchar2(128);
    158.   l_pid    number;
    159.   l_spid   number;
    160.   l_trace  varchar2(2000);
    161.   l_user   varchar2(128);
    162.   l_machine varchar2(128);
    163. begin
    164.   DBMS_APPLICATION_INFO.SET_MODULE(module_name => 'Teapot_Trace_Purpose',
    165.                                    action_name => 'ACTIVE');
    166.   select audsid, sid, SERIAL#, module,username,machine
    167.     into l_audsid, l_sid, l_serial, l_module,l_user,l_machine
    168.     from v$session
    169.    where sid = (select distinct sid from v$mystat);
    170.   select pid, spid
    171.     into l_pid, l_spid
    172.     from v$process
    173.    where addr = (select paddr
    174.                    from v$session
    175.                   where sid = l_sid
    176.                     and serial# = l_serial);
    177.   SELECT d.VALUE || '/' || LOWER(RTRIM(i.INSTANCE, CHR(0))) || '_ora_' ||
    178.          p.spid || '.trc'
    179.     into l_trace
    180.     FROM (SELECT p.spid
    181.             FROM v$mystat m, v$session s, v$process p
    182.            WHERE m.statistic# = 1
    183.              AND s.SID = m.SID
    184.              AND p.addr = s.paddr) p,
    185.          (SELECT t.INSTANCE
    186.             FROM v$thread t, v$parameter v
    187.            WHERE v.NAME = 'thread'
    188.              AND (v.VALUE = 0 OR t.thread# = TO_NUMBER(v.VALUE))) i,
    189.          (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') d;

    190.   dbms_output.enable(9999999);
    191.   dbms_output.put_line('===================USER ENV=======================');
    192.   dbms_output.put_line(' USERNAME=' || l_user);
    193.   dbms_output.put_line(' SID=' || l_sid || '  SERIAL#=' || l_serial);
    194.   dbms_output.put_line(' AUDSID=' || l_audsid || '   MODULE#=' || l_module);
    195.   dbms_output.put_line(' PID=' || l_pid || '          SPID#=' || l_spid);
    196.   dbms_output.put_line(' USER_MACHINE=' || l_machine);
    197.   dbms_output.put_line(' TRACE_FILE_LOCATION=' || l_trace);
    198.   dbms_output.put_line('==================================================');
    199.   commit;
    200. end;
    201. /

    202. --杀会话

    203. select 'alter system kill session ''' || sid || ',' || serial# || ''';'
    204.   from v$session
    205. where username='MCTP';

    206. set pagesize 2000
    207. SELECT '! kill -9 '||p.spid FROM v$session  s INNER JOIN v$process  p ON (s.paddr = p.addr) WHERE s.username ='MCTP' and s.status='INACTIVE';


    208. --当前连接信息

    209. SET ECHO        OFF
    210. SET FEEDBACK    6
    211. SET HEADING     ON
    212. SET LINESIZE    180
    213. SET PAGESIZE    50000
    214. SET TERMOUT     ON
    215. SET TIMING      OFF
    216. SET TRIMOUT     ON
    217. SET TRIMSPOOL   ON
    218. SET VERIFY      OFF

    219. CLEAR COLUMNS
    220. CLEAR BREAKS
    221. CLEAR COMPUTES

    222. COLUMN instance_name     FORMAT a8         HEADING 'Instance'
    223. COLUMN thread#           FORMAT 999999     HEADING 'Thread#'
    224. COLUMN cur_processes     FORMAT 999999     HEADING 'Cur_Processes'
    225. COLUMN cfg_value         FORMAT a15        HEADING 'Cfg_Value'
    226. COLUMN pct_usage         FORMAT a18        HEADING 'Pct_Usage'

    227. SELECT
    228.     a.instance_name  
    229.   , a.thread#   
    230.   , TO_CHAR(a.count) cur_processes
    231.   , b.value  cfg_value
    232.   , TO_CHAR(ROUND(100*(a.count / b.value), 2)) pct_usage
    233. FROM
    234.     (select   count(*) count, a1.inst_id, a2.instance_name, a2.thread#
    235.      from     gv$session a1
    236.             , gv$instance a2
    237.      where    a1.inst_id = a2.inst_id
    238.      group by a1.inst_id
    239.             , a2.instance_name
    240.             , a2.thread#) a
    241.   , (select value, inst_id from gv$parameter where name='processes') b
    242. WHERE
    243.     a.inst_id = b.inst_id
    244. ORDER BY
    245.     a.instance_name;
    复制代码



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    运维联盟俱乐部 ( 冀ICP备19036648号 )

    GMT+8, 2024-5-17 14:07 , Processed in 0.048630 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表