首页 > 代码库 > 几个常用ORACLE运维监控的SQL语句

几个常用ORACLE运维监控的SQL语句

1.消耗CPU
SELECT a.CPU_TIME, --CPU时间 百万分之一(微秒)        
      a.OPTIMIZER_MODE,--优化方式        
      a.EXECUTIONS,--执行次数        
      a.DISK_READS,--读盘次数        
      a.SHARABLE_MEM,--占用shared pool的内存多少        
      a.BUFFER_GETS,--读取缓冲区的次数        
      a.COMMAND_TYPE,--命令类型(3:select,2:insert;6:update;7delete; 47l/sql程序单元)        
      a.SQL_TEXT,--Sql语句        
      a.SHARABLE_MEM,        
      a.PERSISTENT_MEM,        
      a.RUNTIME_MEM,        
      a.PARSE_CALLS,        
      a.DISK_READS,        
      a.DIRECT_WRITES,        
      a.CONCURRENCY_WAIT_TIME,        
      a.USER_IO_WAIT_TIME   
from V$SQLAREA a  
WHERE PARSING_SCHEMA_NAME = ‘DB_USERS‘--Schema  
order by a.CPU_TIME desc


2.最占用资源
select 
    b.username username,
    a.disk_reads reads,     
    a.executions exec,
    a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,     
    a.sql_text Statement 
from  v$sqlarea a,dba_users b 
where a.parsing_user_id=b.user_id  and a.disk_reads > 100000 
order by a.disk_reads desc; 


--用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的相关信


3.列出使用频率最高的5个查询:

select sql_text,executions 
from (
   select 
       sql_text,executions,    rank() over     (order by executions desc) exec_rank    
  from v$sql) 
  where exec_rank <=5; 
4、消耗磁盘读取最多的sql top5: 
select disk_reads,sql_text 
from (select sql_text,disk_reads,    dense_rank() over      (order by disk_reads desc) disk_reads_rank    from v$sql) 
where disk_reads_rank <=5;  
5、找出需要大量缓冲读取(逻辑读)操作的查询: 
select buffer_gets,sql_text 
from (select sql_text,buffer_gets,    dense_rank() over      (order by buffer_gets desc) buffer_gets_rank    from v$sql) 
where buffer_gets_rank<=5;