`

oracle session

阅读更多

1.如何查看session级的等待事件?
当我们对数据库的性能进行调整时,一个最重要的参考指标就是系统等待事件。v$system_event,v$session_event,v$session_wait这三个视图里记录的就是系统级和session级的等待事件,通过查询这些视图你可以发现数据库的一些操作到底在等待什么?是磁盘I/O,缓冲区忙,还是插锁等等。
通过如下sql你可以查询你的每个应用程序到底在等待什么,从而针对这些信息对数据库的性能进行调整。

Sql代码 复制代码
  1. Select s.username,s.program,s.status,se.event,se.total_waits,se.total_timeouts,se.time_waited,se.average_wait   
  2. from v$session s, v$session_event se   
  3. Where s.sid=se.sid  And se.event not like 'SQl*Net%'  And s.status ='ACTIVE'  And s.username is not null  
Select s.username,s.program,s.status,se.event,se.total_waits,se.total_timeouts,se.time_waited,se.average_wait
from v$session s, v$session_event se
Where s.sid=se.sid  And se.event not like 'SQl*Net%'  And s.status ='ACTIVE'  And s.username is not null



2.oracle中查询被锁的表并释放session

Sql代码 复制代码
  1. SELECT A.OWNER,A.OBJECT_NAME,B.XIDUSN,B.XIDSLOT,B.XIDSQN,B.SESSION_ID,B.ORACLE_USERNAME, B.OS_USER_NAME,B.PROCESS, B.LOCKED_MODE, C.MACHINE,C.STATUS,C.SERVER,C.SID,C.SERIAL#,C.PROGRAM   
  2. FROM ALL_OBJECTS A,V$LOCKED_OBJECT B,SYS.GV_$SESSION C   
  3. WHERE ( A.OBJECT_ID = B.OBJECT_ID ) AND (B.PROCESS = C.PROCESS ) ORDER BY 1,2  
SELECT A.OWNER,A.OBJECT_NAME,B.XIDUSN,B.XIDSLOT,B.XIDSQN,B.SESSION_ID,B.ORACLE_USERNAME, B.OS_USER_NAME,B.PROCESS, B.LOCKED_MODE, C.MACHINE,C.STATUS,C.SERVER,C.SID,C.SERIAL#,C.PROGRAM
FROM ALL_OBJECTS A,V$LOCKED_OBJECT B,SYS.GV_$SESSION C
WHERE ( A.OBJECT_ID = B.OBJECT_ID ) AND (B.PROCESS = C.PROCESS ) ORDER BY 1,2


释放session Sql:

Sql代码 复制代码
  1. alter system kill session 'sid, serial#'  
  2. alter system kill session '379, 21132'  
  3. alter system kill session '374, 6938'  
alter system kill session 'sid, serial#'
alter system kill session '379, 21132'
alter system kill session '374, 6938'



3.查看占用系统io较大的session

Sql代码 复制代码
  1. SELECT se.sid,se.serial#,pr.SPID,se.username,se.status,se.terminal,se.program,se.MODULE,se.sql_address,st.event,st.p1text,si.physical_reads,si.block_changes   
  2. FROM v$session se, v$session_wait st,v$sess_io si,v$process pr   
  3. WHERE st.sid=se.sid  AND st.sid=si.sid AND se.PADDR=pr.ADDR AND se.sid>6 AND st.wait_time=0 AND st.event NOT LIKE '%SQL%' ORDER BY physical_reads DESC  
SELECT se.sid,se.serial#,pr.SPID,se.username,se.status,se.terminal,se.program,se.MODULE,se.sql_address,st.event,st.p1text,si.physical_reads,si.block_changes
FROM v$session se, v$session_wait st,v$sess_io si,v$process pr
WHERE st.sid=se.sid  AND st.sid=si.sid AND se.PADDR=pr.ADDR AND se.sid>6 AND st.wait_time=0 AND st.event NOT LIKE '%SQL%' ORDER BY physical_reads DESC



4.找出耗cpu较多的session

Sql代码 复制代码
  1. select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value   
  2.     from v$session a,v$process b,v$sesstat c   
  3.     where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc  
select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value
    from v$session a,v$process b,v$sesstat c
    where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc



5.查询session被锁的sql可以用一下语句

Sql代码 复制代码
  1. select sys.v_$session.osuser,sys.v_$session.machine,v$lock.sid,   
  2.   sys.v_$session.serial#,   
  3.   decode(v$lock.type,   
  4.   'MR''Media Recovery',   
  5.   'RT','Redo Thread',   
  6.   'UN','User Name',   
  7.   'TX''Transaction',   
  8.   'TM''DML',   
  9.   'UL''PL/SQL User Lock',   
  10.   'DX''Distributed Xaction',   
  11.   'CF''Control File',   
  12.   'IS''Instance State',   
  13.   'FS''File Set',   
  14.   'IR''Instance Recovery',   
  15.   'ST''Disk Space Transaction',   
  16.   'TS''Temp Segment',   
  17.   'IV''Library Cache Invalida-tion',   
  18.   'LS''Log Start or Switch',   
  19.   'RW''Row Wait',   
  20.   'SQ''Sequence Number',   
  21.   'TE''Extend Table',   
  22.   'TT''Temp Table',   
  23.   'Unknown') LockType,   
  24.   rtrim(object_type) || ' ' || rtrim(owner) || '.' || object_name object_name,   
  25.   decode(lmode, 0, 'None',   
  26.   1, 'Null',   
  27.   2, 'Row-S',   
  28.   3, 'Row-X',   
  29.   4, 'Share',   
  30.   5, 'S/Row-X',   
  31.   6, 'Exclusive''Unknown') LockMode,   
  32.   decode(request, 0, 'None',   
  33.   1, 'Null',   
  34.   2, 'Row-S',   
  35.   3, 'Row-X',   
  36.   4, 'Share',   
  37.   5, 'S/Row-X',   
  38.   6, 'Exclusive''Unknown') RequestMode,   
  39.   ctime, block b   
  40.   from v$lock, all_objects, sys.v_$session   
  41.   where v$Lock.sid > 6   
  42.   and sys.v_$session.sid = v$lock.sid   
  43.   and v$lock.id1 = all_objects.object_id;  
分享到:
评论

相关推荐

    oracle Session与lock 解除

    ### Oracle Session与Lock解除 在Oracle数据库环境中,锁机制是一种重要的资源管理手段,它能够确保数据的一致性和并发性处理。锁(Lock)是数据库管理系统为了控制多个用户对同一数据资源的同时访问而采取的一种...

    oracle查看session状态

    自己整理的关于oracle session的状态查看,对新手有一定的帮助,希望您喜欢。

    Oracle Session Monitor v1.0

    Oracle Session Monitor v1.0 是一个专为Oracle数据库设计的进程管理工具,它允许管理员设置特定的时间条件,以便自动监控并处理数据库中的会话。在Oracle数据库系统中,"会话"指的是用户与数据库之间的连接,它包含...

    oracle session 连接关系图

    非常好的oracle session 连接关系图

    oracle中session和processes的设置

    ### Oracle中Session与Processes参数的设置详解 #### 一、引言 在Oracle数据库管理过程中,合理设置系统参数对于确保数据库稳定运行至关重要。其中,“session”与“processes”两个参数直接影响到数据库能够同时...

    oraclev$sessionv$session_wait用途详解

    在Oracle数据库管理与优化的过程中,`v$session`与`v$session_wait`视图扮演着至关重要的角色,它们提供了关于当前活动会话及其等待事件的详细信息,这对于诊断性能问题、理解数据库行为以及进行有效的资源管理至关...

    有效关闭Oracle死锁进程,和释放状态为killed的session

    在Oracle数据库管理中,处理死锁进程和释放状态为killed的session是一项关键技能,尤其对于维护数据库性能和稳定性至关重要。以下将详细阐述如何通过一系列步骤有效地关闭Oracle死锁进程,以及如何释放状态为killed...

    如何快速的杀掉Oracle的Session

    在Oracle数据库管理中,有时需要快速地结束特定的Session,以应对各种情况,例如系统性能下降、长时间运行的事务或应用程序错误。本文将探讨如何高效地“杀掉”Oracle的Session,以及这种方法背后的原因和注意事项。...

    清除Oracle中长时间持锁的session

    ### 清除Oracle中长时间持锁的Session #### 背景介绍 在Oracle数据库管理过程中,有时会遇到一些长时间占用资源的进程,这些进程可能会导致数据库性能下降甚至某些操作无法执行。通常情况下,如果一个session的状态...

    对于oracle对session进行跟踪的分析

    在Oracle数据库管理中,对session进行跟踪是一项关键的性能监控和问题排查技术。session跟踪允许DBA(数据库管理员)深入洞察数据库中各个会话的行为,包括SQL语句的执行情况,资源消耗,以及可能存在的性能瓶颈。...

    Oracle Session Handler for PHP-开源

    Oracle Session Handler for PHP 是一个专为PHP设计的开源项目,其主要目的是为了提供一种与Oracle数据库交互的会话管理机制。这个处理程序利用了PHP的OCI8扩展,它是一个用于连接Oracle数据库的官方接口,使得PHP...

    Oracle经典故障解析 连接数&会话数

    4. Oracle数据库进程数与会话数之间的关系:在Oracle 11g R2版本中,会话数和进程数有一个大致的数学关系:session=(1.5*processes+22)。这个公式可以用于估算在不调整会话数的情况下,进程数需要调整为多少。通常,...

    快速杀死oracle的session

    ### 快速杀死Oracle的Session方法详解 在Oracle数据库管理中,有时会遇到需要迅速终止某个或某些Session的情况。这通常发生在系统响应缓慢、需要紧急关闭特定进程时,或者是在执行`shutdown immediate`命令但发现...

    oracle中已killed session的处理

    ### Oracle中已Killed Session的处理 #### 一、背景介绍 在Oracle数据库管理中,有时会遇到一些异常情况,比如某个Session长时间未响应或占用大量资源,这时可能需要管理员手动干预,通过`ALTER SYSTEM KILL ...

    delphioracle_oracle_delphi_连接ORACLE_

    OracleSession := TOracleSession.Create(nil); OracleSession.Connection := OracleConnection; OracleQuery := TOracleQuery.Create(nil); OracleQuery.Session := OracleSession; OracleQuery.SQL.Text := ...

    oracle kill session

    ### Oracle Kill Session:详解与实践 在Oracle数据库管理与维护过程中,“Oracle Kill Session”是一项非常重要的操作技巧。本文将从理论到实践多个层面深入探讨如何有效地执行“Oracle Kill Session”,帮助...

    oracleConnect.zip_OracleConnect_delphi oracle_odac_odac delphi_

    OracleSession1.Params.Values['User_Name'] := 'your_username'; OracleSession1.Params.Values['Password'] := 'your_password'; OracleSession1.Params.Values['Server'] := 'your_server'; OracleSession1....

    修改oracle process session 初始化参数

    ### 修改Oracle Process Session 初始化参数 在Oracle数据库管理中,对`process`与`session`的管理和优化至关重要。本文将从查询、设定以及二者之间的关系等方面详细介绍如何修改Oracle的`process`与`session`初始...

    重启oracle服务,删除session

    ### 重启Oracle服务与删除Session的操作指南 #### 一、背景介绍 在Oracle数据库管理过程中,有时需要重启Oracle服务或清除所有的会话(session),以解决某些特定问题或进行必要的维护工作。本文将详细介绍如何通过...

    Oracle 数据库解锁session方式

    Oracle 数据库解锁session方式

Global site tag (gtag.js) - Google Analytics