龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle数据库维护常用的SQL代码示例(1)(2)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
10、求process/session的状态 SELECTp.Pid,p.Spid,s.Program,s.Sid,s.Serial# FROMV$processp,V$sessions WHERE s.Paddr = p .Addr; 11、求谁阻塞了某个session(10g) SELECTSid,Username,Event,Blockin

10、求process/session的状态

  1. SELECT p.Pid, p.Spid, s.Program, s.Sid, s.Serial#  
  2. FROM V$process p, V$session s  
  3. WHERE s.Paddr = p.Addr; 

11、求谁阻塞了某个session(10g)

  1. SELECT Sid, Username, Event, Blocking_Session, Seconds_In_Wait, Wait_Time  
  2. FROM V$session  
  3. WHERE State IN ('WAITING')  
  4. AND Wait_Class != 'Idle'; 

12、查会话的阻塞

  1. col user_name format a32  
  2. SELECT /*+ rule */  
  3. Lpad(' ', Decode(l.Xidusn, 0, 3, 0)) || l.Oracle_Username User_Name,  
  4. o.Owner, o.Object_Name, s.Sid, s.Serial#  
  5. FROM V$locked_Object l, Dba_Objects o, V$session s  
  6. WHERE l.Object_Id = o.Object_Id  
  7. AND l.Session_Id = s.Sid  
  8. ORDER BY o.Object_Id, Xidusn DESC;  
  9. col username format a15  
  10. col lock_level format a8  
  11. col owner format a18  
  12. col object_name format a32  
  13. SELECT /*+ rule */  
  14. s.Username,  
  15. Decode(l.TYPE, 'tm', 'table lock', 'tx', 'row lock', NULL) Lock_Level,  
  16. o.Owner, o.Object_Name, s.Sid, s.Serial#  
  17. FROM V$session s, V$lock l, Dba_Objects o  
  18. WHERE l.Sid = s.Sid  
  19. AND l.Id1 = o.Object_Id(+)  
  20. AND s.Username IS NOT NULL; 

13、求等待的事件及会话信息/求会话的等待及会话信息

  1. SELECT Se.Sid, s.Username, Se.Event, Se.Total_Waits, Se.Time_Waited,  
  2. Se.Average_Wait  
  3. FROM V$session s, V$session_Event Se  
  4. WHERE s.Username IS NOT NULL  
  5. AND Se.Sid = s.Sid  
  6. AND s.Status = 'ACTIVE' 
  7. AND Se.Event NOT LIKE '%SQL*Net%'  
  8. ORDER BY s.Username;  
  9. SELECT s.Sid, s.Username, Sw.Event, Sw.Wait_Time, Sw.State,  
  10. Sw.Seconds_In_Wait  
  11. FROM V$session s, V$session_Wait Sw  
  12. WHERE s.Username IS NOT NULL  
  13. AND Sw.Sid = s.Sid  
  14. AND Sw.Event NOT LIKE '%SQL*Net%'  
  15. ORDER BY s.Username; 

14、求会话等待的file_id/block_id

  1. col event format a24  
  2. col p1text format a12  
  3. col p2text format a12  
  4. col p3text format a12  
  5. SELECT Sid, Event, P1text, P1, P2text, P2, P3text, P3  
  6. FROM V$session_Wait  
  7. WHERE Event NOT LIKE '%SQL%'  
  8. AND Event NOT LIKE '%rdbms%'  
  9. AND Event NOT LIKE '%mon%'  
  10. ORDER BY Event;  
  11. SELECT NAME, Wait_Time  
  12. FROM V$latch l  
  13. WHERE EXISTS (SELECT 1  
  14. FROM (SELECT Sid, Event, P1text, P1, P2text, P2, P3text, P3  
  15. FROM V$session_Wait  
  16. WHERE Event NOT LIKE '%SQL%'  
  17. AND Event NOT LIKE '%rdbms%'  
  18. AND Event NOT LIKE '%mon%') x  
  19. WHERE x.P1 = l.Latch#); 

15、求会话等待的对象

  1. col owner format a18  
  2. col segment_name format a32  
  3. col segment_type format a32  
  4. SELECT Owner, Segment_Name, Segment_Type  
  5. FROM Dba_Extents  
  6. WHERE File_Id = &File_Id  
  7. AND &Block_Id BETWEEN Block_Id AND Block_Id + Blocks - 1; 

16、求出某个进程,并对它进行跟踪

  1. SELECT s.Sid, s.Serial#  
  2. FROM V$session s, V$process p  
  3. WHERE s.Paddr = p.Addr  
  4. AND p.Spid = &1;  
  5. Exec Dbms_System.Set_Sql_Trace_In_Session(&1, &2, TRUE);  
  6. Exec Dbms_System.Set_Sql_Trace_In_Session(&1, &2, FALSE); 

17、求当前session的跟踪文件

  1. SELECT P1.VALUE || '/' || P2.VALUE || '_ora_' || p.Spid || '.ora' Filename  
  2. FROM V$process p, V$session s, V$parameter P1, V$parameter P2  
  3. WHERE P1.NAME = 'user_dump_dest' 
  4. AND P2.NAME = 'instance_name' 
  5. AND p.Addr = s.Paddr  
  6. AND s.Audsid = Userenv('SESSIONID')  
  7. AND p.Background IS NULL  
  8. AND Instr(p.Program, 'CJQ') = 0; 

18、求出锁定的对象

  1. SELECT Do.Object_Name, Session_Id, Process, Locked_Mode  
  2. FROM V$locked_Object Lo, Dba_Objects Do  
  3. WHERE Lo.Object_Id = Do.Object_Id; 

关于Oracle数据库维护常用的SQL代码示例就介绍到这里了,希望本次的介绍能够对您有所收获!

精彩图集

赞助商链接