查看数据库性能 常用SQL

来源:互联网 发布:周思成网络课程 编辑:程序博客网 时间:2024/05/18 14:46
---内存评估


--缓冲区命中率
select (1 - (sum(decode(name, 'physical reads', value, 0)) /
       (sum(decode(name, 'db block gets', value, 0)) +
       sum(decode(name, 'consistent gets', value, 0))))) * 100 "Hit Ration"
  from v$sysstat;
--数据字典命中率
select (1 - (sum(getmisses) / sum(gets))) * 100 "Hit Ration"
  from v$rowcache;


--库缓存命中率
select sum(pins) / (sum(pins) + sum(reloads)) * 100 "Hit Ratio"
  from v$librarycache;


--内存中的排序
select a.value "Dish Sorts",
       b.value "Memor Sorts",
       round((100 * b.value) /
             decode((a.value + b.value), 0, 1, (a.value + b.value)),
             2) "Pct Memory Sorts"
  from v$sysstat a, v$sysstat b
 where a.name = 'sorts (disk)'
   and b.name = 'sorts (memory)';


--空闲的数据缓冲区比例


select decode(state,
              0,
              'FREE',
              1,
              decode(lrba_seq, 0, 'AVAILABLE', 'BEING USED'),
              3,
              'BEING USED',
              state) "Block Status",
       count(*)
  from x$bh
 group by decode(state,
                 0,
                 'FREE',
                 1,
                 decode(lrba_seq, 0, 'AVAILABLE', 'BEING USED'),
                 3,
                 'BEING USED',
                 state);
 --最浪费内存的前10个语句占全部内催读取量的比例                
 select sum(pct_bufgets)
   from (select rank() over(order by buffer_gets desc) as rank_bufgets,
                to_char(100 * ratio_to_report(buffer_gets) over(), '999.99') pct_bufgets
           from v$sqlarea)
  where rank_bufgets < 11;
--最应该优化的25个SQL
select * from (
SELECT buffer_gets,sql_text,rownum rn from v$sqlarea order by buffer_gets desc )
where rn<26;  


--固定缓存对象


select *
  from v$db_object_cache
 where sharable_mem > 100000
   and type in ('PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'FUNCTION');






--磁盘评估


---调整表和索引  表和索引不要在同一个表空间中


select i.index_name, t.table_name, t.tablespace_name
  from user_tables t, user_indexes i
 where t.table_name = i.table_name
   and t.tablespace_name = i.tablespace_name;


--表的行链接问题
select count(*) chained_rows, table_name
  from chained_rows
 group by table_name;


--关键文件路径
select file_name, tablespace_name, bytes
  from dba_data_files
union all
select file_name, tablespace_name, bytes
  from dba_temp_files
union all
select name file_name, null, null
  from v$controlfile
union all
select member file_name, to_char(a.group#) tablespace_name, b.bytes bytes
  from v$logfile a, v$log b
 where a.group# = b.group#
union all (select value file_name, null, null
             from v$parameter
            where name like 'log_archive_dest_%'
              and value is not null
           minus
           select value file_name, null, null
             from v$parameter
            where name like 'log_archive_dest_state%');


--回滚段平衡
select name,value from v$parameter where name like '%undo_%';  


select a.name,
       b.extents,
       b.rssize,
       b.xacts,
       b.waits,
       b.gets optsize,
       status
  from v$rollname a, v$rollstat b
 where a.usn = b.usn;
 --磁盘排序
 select name,value from v$sysstat where name like '%sorts%';
 
 --最浪费磁盘读操作的前10个语句占用所有语句的比例
 select sum(pct_bufgets)
   from (select rank() over(order by disk_reads desc) as rank_bufgets,
                to_char(100 * ratio_to_report(disk_reads) over() , '999.99') pct_bufgets from v$sqlarea)
  where rank_bufgets < 11;
  
  --前25个最浪费磁盘读操作的SQL
  select *
    from (select executions,
                 disk_reads,
                 substr(sql_text, 1, 4000),
                 rownum rn
            from v$sqlarea
           order by disk_reads desc)
   where rn < 26;
--字典管理表控件中的EXTENT总数不超过4096
select a.tablespace_name ,sum(a.extents)
from dba_segments a ,dba_tablespaces b
where a.tablespace_name=b.tablespace_name
and b.extent_management ='DICTIONARY'
group by a.tablespace_name
order by sum(a.extents)