ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle性能查看

oracle性能查看

原创 Linux操作系统 作者:volcano117 时间:2011-11-29 11:34:14 0 删除 编辑

此处从http://zhaisx.iteye.com/blog/567132处获得

0、数据库参数属性

Sql代码  收藏代码
  1. col PROPERTY_NAME format a25  
  2. col PROPERTY_VALUE format a30  
  3. col DESCRIPTION format a100  
  4. select * from database_properties;  
  5.   
  6. select * from v$version;  

 

1、求当前会话的SID,SERIAL#

Sql代码  收藏代码
  1. SELECT Sid, Serial# FROM V$session  
  2. WHERE Audsid = Sys_Context('USERENV', 'SESSIONID');   


2、查询session的OS进程ID

Sql代码  收藏代码
  1. SELECT p.Spid "OS Thread", b.NAME "Name-User", s.Program, s.Sid, s.Serial#,s.Osuser, s.Machine  
  2. FROM V$process p, V$session s, V$bgprocess b  
  3. WHERE p.Addr = s.Paddr  
  4. AND p.Addr = b.Paddr And (s.sid=&1 or p.spid=&1)  
  5. UNION ALL  
  6. SELECT p.Spid "OS Thread", s.Username "Name-User", s.Program, s.Sid,s.Serial#, s.Osuser, s.Machine  
  7. FROM V$process p, V$session s  
  8. WHERE p.Addr = s.Paddr  
  9. And (s.sid=&1 or p.spid=&1)  
  10. AND s.Username IS NOT NULL;   


3、根据sid查看对应连接正在运行的sql

Sql代码  收藏代码
  1. SELECT /*+ PUSH_SUBQ */ Command_Type, Sql_Text, Sharable_Mem, Persistent_Mem, Runtime_Mem, Sorts,  
  2. Version_Count, Loaded_Versions, Open_Versions, Users_Opening, Executions,  
  3. Users_Executing, Loads, First_Load_Time, Invalidations, Parse_Calls,  
  4. Disk_Reads, Buffer_Gets, Rows_Processed, SYSDATE Start_Time,  
  5. SYSDATE Finish_Time, '>' || Address Sql_Address, 'N' Status  
  6. FROM V$sqlarea WHERE Address = (SELECT Sql_Address  
  7. FROM V$session WHERE Sid = &sid );   


4、查找object为哪些进程所用

Sql代码  收藏代码
  1. SELECT p.Spid, s.Sid, s.Serial# Serial_Num, s.Username User_Name,  
  2. a.TYPE Object_Type, s.Osuser Os_User_Name, a.Owner,  
  3. a.OBJECT Object_Name,  
  4. Decode(Sign(48 - Command), 1, To_Char(Command), 'Action Code #' || To_Char(Command)) Action,  
  5. p.Program Oracle_Process, s.Terminal Terminal, s.Program Program,  
  6. s.Status Session_Status  
  7. FROM V$session s, V$access a, V$process p  
  8. WHERE s.Paddr = p.Addr  
  9. AND s.TYPE = 'USER'  
  10. AND a.Sid = s.Sid  
  11. AND a.OBJECT = '&obj'  
  12. ORDER BY s.Username, s.Osuser   


5、查看有哪些用户连接

Sql代码  收藏代码
  1. SELECT s.Osuser Os_User_Name,Decode(Sign(48 - Command),1,To_Char(Command),  
  2. 'Action Code #' || To_Char(Command)) Action,  
  3. p.Program Oracle_Process, Status Session_Status, s.Terminal Terminal,  
  4. s.Program Program, s.Username User_Name,  
  5. s.Fixed_Table_Sequence Activity_Meter, '' Query, 0 Memory,  
  6. 0 Max_Memory, 0 Cpu_Usage, s.Sid, s.Serial# Serial_Num  
  7. FROM V$session s, V$process p  
  8. WHERE s.Paddr = p.Addr  
  9. AND s.TYPE = 'USER'  
  10. ORDER BY s.Username, s.Osuser   


6、根据v.sid查看对应连接的资源占用等情况

Sql代码  收藏代码
  1. SELECT n.NAME, v.VALUE, n.CLASS, n.Statistic# FROM V$statname n, V$sesstat v  
  2. WHERE v.Sid = &sid  
  3. AND v.Statistic# = n.Statistic#  
  4. ORDER BY n.CLASS, n.Statistic#   


7、查询耗资源的进程(top session)

Sql代码  收藏代码
  1. SELECT s.Schemaname Schema_Name,Decode(Sign(48 - Command),  
  2. 1, To_Char(Command), 'Action Code #' || To_Char(Command)) Action,Status Session_Status, s.Osuser Os_User_Name, s.Sid, p.Spid,s.Serial# Serial_Num, Nvl(s.Username, '[Oracle process]') User_Name,  
  3. s.Terminal Terminal, s.Program Program, St.VALUE Criteria_Value  
  4. FROM V$sesstat St, V$session s, V$process p  
  5. WHERE St.Sid = s.Sid  
  6. AND St.Statistic# = To_Number('38')  
  7. AND ('ALL' = 'ALL' OR s.Status = 'ALL')  
  8. AND p.Addr = s.Paddr  
  9. ORDER BY St.VALUE DESC, p.Spid ASC, s.Username ASC, s.Osuser ASC   


8、查看锁(lock)情况

Sql代码  收藏代码
  1. SELECT /*+ RULE */ Ls.Osuser Os_User_Name, Ls.Username User_Name,Decode(Ls.TYPE,  
  2. 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock','TX', 'Transaction enqueue lock', 'UL', 'User supplied lock') Lock_Type,o.Object_Name OBJECT,Decode(Ls.Lmode,1, NULL, 2, 'Row Share', 3, 'Row Exclusive',  
  3. 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive',NULL) Lock_Mode,o.Owner, Ls.Sid, Ls.Serial# Serial_Num, Ls.Id1, Ls.Id2 FROM Sys.Dba_Objects o,  
  4. (SELECT s.Osuser, s.Username, l.TYPE, l.Lmode, s.Sid, s.Serial#, l.Id1,l.Id2 FROM V$session s, V$lock l  
  5. WHERE s.Sid = l.Sid) Ls  
  6. WHERE o.Object_Id = Ls.Id1  
  7. AND o.Owner <> 'SYS'  
  8. ORDER BY o.Owner, o.Object_Name;  


9、查看等待(wait)情况

Sql代码  收藏代码
  1. SELECT Ws.CLASS, Ws.COUNT COUNT, SUM(Ss.VALUE) Sum_Value  
  2. FROM V$waitstat Ws, V$sysstat Ss  
  3. WHERE Ss.NAME IN ('db block gets', 'consistent gets')  
  4. GROUP BY Ws.CLASS, Ws.COUNT;    


10、求process/session的状态

Sql代码  收藏代码
  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)

Sql代码  收藏代码
  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、查会话的阻塞

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


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

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


14、求会话等待的file_id/block_id

Sql代码  收藏代码
  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、求会话等待的对象

Sql代码  收藏代码
  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、求出某个进程,并对它进行跟踪

Sql代码  收藏代码
  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的跟踪文件

Sql代码  收藏代码
  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、求出锁定的对象

Sql代码  收藏代码
  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;   


19、DB_Cache建议

Sql代码  收藏代码
  1. SELECT size_for_estimate, buffers_for_estimate, estd_physical_read_factor, estd_physical_reads  
  2. FROM V$DB_CACHE_ADVICE  
  3. WHERE name = 'DEFAULT'  
  4. AND block_size = (SELECT value FROM V$PARAMETER WHERE name = 'db_block_size')  
  5. AND advice_status = 'ON';  

 

20、查看各项SGA相关参数:SGA,SGASTAT

Sql代码  收藏代码
  1. select substr(name,1,10) name,substr(value,1,10) value  
  2. from v$parameter where name = 'log_buffer';  
  3.   
  4. select * from v$sgastat ;  
  5.   
  6. select * from v$sga;  
  7.   
  8. show parameters area_size   #查看 各项区域内存参数, 其中sort_area为排序参数用;  
  9.    
  10. 各项视图建议参数值:V$DB_CACHE_ADVICE、 V$SHARED_POOL_ADVICE),关于PGA  
  11. 也有相关视图V$PGA_TARGET_ADVICE 等。   


21、内存使用锁定在物理内存:

Sql代码  收藏代码
  1. AIX 5L(AIX 4.3.3 以上)  
  2. logon aix as root  
  3. cd /usr/samples/kernel  
  4. ./vmtune (信息如下) v_pingshm已经是1  
  5. ./vmtune -S 1  
  6. 然后oracle用户修改initSID.ora 中 lock_sga = true  
  7. 重新启动数据库  
  8.   
  9. HP UNIX  
  10. Root身份登陆  
  11. Create the file "/etc/privgroup": vi /etc/privgroup  
  12. Add line "dba MLOCK" to file  
  13. As root, run the command "/etc/setprivgrp -f /etc/privgroup":  
  14. $/etc/setprivgrp -f /etc/privgroup  
  15. oracle用户修改initSID.ora中lock_sga=true  
  16. 重新启动数据库  
  17.   
  18. SOLARIS (solaris2.6以上)  
  19. 8i版本以上数据库默认使用隐藏参数 use_ism = true ,自动锁定SGA于内存中,不用设置  
  20. lock_sga, 如果设置 lock_sga =true 使用非 root 用户启动数据库将返回错误。  
  21.   
  22. WINDOWS (作用不大)  
  23. 不能设置lock_sga=true,可以通过设置pre_page_sga=true,使得数据库启动的时候就把所有内  
  24. 存页装载,这样可能起到一定的作用。   


22、内存参数调整

Sql代码  收藏代码
  1. 数据缓冲区命中率  
  2. select value from v$sysstat where name ='physical reads';  
  3.   
  4. select value from v$sysstat where name ='physical reads direct';  
  5.   
  6. select value from v$sysstat where name ='physical reads direct (lob)';  
  7.   
  8. select value from v$sysstat where name ='consistent gets';  
  9.   
  10. select value from v$sysstat where name = 'db block gets';  
  11.   
  12. 这里命中率的计算应该是  
  13. 令 x = physical reads direct + physical reads direct (lob)  
  14. 命中率 =100 - ( physical reads - x) / (consistent gets + db block gets - x)*100  
  15. 通常如果发现命中率低于90%,则应该调整应用可可以考虑是否增大数据缓冲区;  
  16.   
  17. 共享池的命中率  
  18. select sum(pinhits)/sum(pins)*100 "hit radio" from v$librarycache;  
  19.   
  20. 假如共享池的命中率低于95%,就要考虑调整应用(通常是没使用bind var )或者增加内存;  
  21.   
  22. 关于排序部分  
  23. select name,value from v$sysstat where name like '%sort%';  
  24.   
  25. 假如我们发现sorts (disk)/ (sorts (memory)+ sorts (disk))的比例过高,则通常意味着  
  26. sort_area_size 部分内存较小,可考虑调整相应的参数。  
  27.   
  28. 关于log_buffer  
  29. select name,value from v$sysstat  
  30. where name in('redo entries','redo buffer allocation retries');  
  31.   
  32. 假如 redo buffer allocation retries/ redo entries 的比例超过1%我们就可以考虑增大log_buffer 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21907916/viewspace-712337/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle手工建库
请登录后发表评论 登录
全部评论

注册时间:2011-11-15

  • 博文量
    22
  • 访问量
    35548