您的位置:首页 > 数据库 > Oracle

37.读书笔记收获不止Oracle之常用诊断命令汇总

2017-11-06 18:18 393 查看
37.读书笔记收获不止Oracle之常用诊断命令汇总

 

1.  Oracle获取基线

Baseline ,叫做基线,用于比较的基本线。因为Baseline中包含指定时间点时的性能数据,因此就可以用来与其它时间点时的状态数据做对比,以分析性能问题。

  创建Baseline时,Snapshots是做为其中的一个组成部分存在,因此一般来说当AWR自动维护快照时,如果定义过baseline,与baseline相关的快照不会被删除,即使是过期的快照,这样就相当于手动保留了一份统计数据的历史信息,DBA可以在适当的时间将其与现有的快照进行对比,以生成相关的统计报表。

  用户可以通过DBMS_WORKLOAD_REPOSITORY包中的相关过程,手动的创建或删除Baseline。

查看快照:

SQL> select snap_id from dba_hist_snapshot;

创建快照:

SQL> exec dbms_workload_repository.create_snapshot();

创建BASELINE

exec dbms_workload_repository.create_baseline (31,32,'testbase_1')

查看BASELINE

SQL> select dbid,baseline_name,start_snap_id,end_snap_id from dba_hist_baseline;

删除BASELINE

ExecDBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'testbase_1',                                        cascade       => false);

删除时指定了cascade参数值为true,对应的snap也被级联删除了。

DBA也可以直接查询动态性能视图(或相关数据字典)的方式来获取自己想要的那部分性能数据。ORACLE将这部分性能统计数据保存在DBA_HIST开头的数据字典中,要查询当前实例所有能够访问的DBA_HIST字典,可以通过下列语句:

Col table_name format a30

Col comments format a30

SQL>select * from dict where table_name like 'DBA_HIST%'; 

 

 

2.  数据监控

2.1       查看表锁

select * from sys.v_$sqlareawhere disk_reads>100

  /

2.2      监控实例的等待

select event,sum(decode(wait_Time,0,0,1))"Prev",

sum(decode(wait_Time,0,1,0))"Curr",count(*) "Tot"

from v$session_Wait

group by eventorder by 4

 /

2.3      回滚段的争用情况

 select name, waits, gets,waits/gets "Ratio"

from v$rollstat a, v$rollname b

where a.usn = b.usn

  /

2.4      数据表占用空间大小情况

 select segment_name,tablespace_name,bytes,blocks

from user_segments

where segment_type='TABLE'

ORDER BY bytes DESC ,blocksDESC

  /

2.5      查看表空间碎片大小

     select tablespace_name,round(sqrt(max(blocks)/sum(blocks))*

            (100/sqrt(sqrt(count(blocks)))),2)FSFI

     from dba_free_space

     group by tablespace_nameorder by 1

      /

2.6      查看表空间占用磁盘情况

      select

             b.file_id                                ,

              b.tablespace_name                       ,

              b.bytes                                ,

              (b.bytes-sum(nvl(a.bytes,0)))                ,

              sum(nvl(a.bytes,0))                        ,

              sum(nvl(a.bytes,0))/(b.bytes)*100        

             from dba_free_spacea,dba_data_files b

             where a.file_id=b.file_id

             group by b.tablespace_name,b.file_id,b.bytes

             order by b.file_id

  /

2.7      查看session使用回滚段

 SELECT  r.name ,

         s.sid,

         s.serial#,

         s.username,

         t.status,

         t.cr_get,

         t.phy_io,

         t.used_ublk,

         t.noundo,

         substr(s.program,1, 78)

 FROM   sys.v_$sessions,sys.v_$transaction t,sys.v_$rollname r

 WHERE  t.addr = s.taddrand t.xidusn = r.usn

 ORDER  BY t.cr_get,t.phy_io

  /

2.8      监控表空间I/O比例

 select df.tablespace_namename,df.file_name "file",f.phyrds pyr,

       f.phyblkrdpbr,f.phywrts pyw, f.phyblkwrt pbw

from v$filestat f, dba_data_files df

where f.file# = df.file_id

order by df.tablespace_name

  /

2.9      监控SGA命中率

 select a.value + b.value"logical_reads",

       c.value"phys_reads",

       round(100* ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO"

from v$sysstat a, v$sysstat b,v$sysstat c

where a.statistic# = 38 and

      b.statistic#= 39 and

      c.statistic#= 40

 /

2.10  监控 SGA 中字典缓冲区的命中率

 select parameter, gets,Getmisses, getmisses/(gets+getmisses)*100 "miss ratio",

(1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100"Hit ratio"

from v$rowcache

where gets+getmisses <>0

group by parameter, gets,getmisses

 /

2.11  监控 SGA 中共享缓存区的命中率,应该小于1%

 select sum(pins) "TotalPins", sum(reloads) "Total Reloads",

sum(reloads)/sum(pins) *100 libcache

from v$librarycache

  /

2.12  监控 SGA 中重做日志缓存区的命中率,应该小于1%

 SELECT name, gets, misses,immediate_gets, immediate_misses,

Decode(gets,0,0,misses/gets*100) ratio1,

Decode(immediate_gets+immediate_misses,0,0,

immediate_misses/(immediate_gets+immediate_misses)*100)ratio2

FROM v$latchWHERE name IN ('redo allocation', 'redo copy')

  /

2.13  监控内存和硬盘的排序比率,最好使它小于 .10

 SELECT name, value

FROM v$sysstat

WHERE name IN ('sorts(memory)', 'sorts (disk)')

 /

2.14  监控字典缓冲区

 SELECT SUM(GETS)"DICTIONARY GETS",SUM(GETMISSES) "DICTIONARY CACHE GETMISSES"

FROM V$ROWCACHE

 /

2.15  非系统用户建在SYSTEM表空间中的表

 SELECT owner,table_name

FROM DBA_TABLES

 WHERE tablespace_namein('SYSTEM','USER_DATA') AND

      ownerNOT IN('SYSTEM','SYS','OUTLN', 'ORDSYS','MDSYS','SCOTT', 'HOSTEAC')

  /

2.16  性能最差的SQL

 SELECT * FROM (SELECT PARSING_USER_ID EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_text

                FROM v$sqlarea

                ORDER BY disk_readsDESC)

WHERE ROWNUM<100

    /                           

2.17  读磁盘数超100次的sql

 select *from sys.v_$sqlarea where disk_reads>100

  /

2.18  最频繁执行的sql

 select *from sys.v_$sqlarea where executions>100

  /

2.19  查询使用CPU多的用户session

 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$sesstatc

where c.statistic#=12 and

      c.sid=a.sidand

      a.paddr=b.addr

order by value desc

  /

2.20  当前每个会话使用的对象数

 SELECT a.sid,s.terminal,s.program,count(a.sid)

FROM V$ACCESS a,V$SESSION s

 WHERE a.owner <>'SYS'AND s.sid = a.sid

GROUP BY a.sid,s.terminal,s.program

 ORDER BY count(a.sid)

/

 

3.  命名规范

命名规范如下图1

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: