a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 123|回复: 1

[综合] Oracle辅导:监控SQL语句

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
监控当前数据库谁在运行什么SQL语句   SELECT osuser, username, sql_text from v$session a, v$sqltext b, L- F; U# R% {1 F" P* G0 O
  where a.sql_address =b.address order by address, piece;
# X6 q5 r- e, z# k) @  L  分析表
$ b9 N% F* i8 _: p  analyze table tablename compute statistics for all indexes;
6 \6 }* d- L& A: u  O+ h% T( F. H  u  analyze table tablename compute statistics for all indexed columns;
  g8 y3 F- P1 O+ S5 s* ?  analyze table tablename compute statistics for table;2 A: ^# N7 f: O- k. P7 j
  监控事例的等待
' \# d0 \( J+ B  select event,sum(decode(wait_Time,0,0,1)) "Prev",
" ^5 D- O; z% `- B" V4 B$ j) T  sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot"1 y! o0 k. s, T( s
  from v$session_Wait+ q+ a. Q+ s( |- C
  group by event order by 4;. f6 P3 w. l3 T, l( o
  查看碎片程度高的表2 T2 W1 N( t# a3 U  E
  SELECT segment_name table_name , COUNT(*) extents9 f2 p: y. z, s7 W$ ]
  FROM dba_segments WHERE owner NOT IN (SYS, SYSTEM) GROUP BY segment_name" i& ^6 E2 v) R3 n7 `  q
  HAVING COUNT(*) = (SELECT MAX( COUNT(*) FROM dba_segments GROUP BY segment_name);
9 B+ ]/ M3 \* }# o  V  表、索引的存储情况检查
0 D# ?, s4 e& G: h  ?7 X  select segment_name,sum(bytes),count(*) ext_quan from dba_extents where
* H$ h/ b# O% {5 T" g/ F* D  tablespace_name=&tablespace_name and segment_type=TABLE group by tablespace_name,segment_name;+ f9 G6 ^  }0 o% P0 ^$ v
  select segment_name,count(*) from dba_extents where segment_type=INDEX and owner=&owner
) ~- t" K: S8 j) J# P  group by segment_name;
: ]3 h% s2 t9 a1 K1 X" k  找使用CPU多的用户session
' Z$ u2 X: i  q. {! [0 ~8 ]  12是cpu used by this session' `; d/ K& P: X" n% f9 o& d
  select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value& s% b: A# L& S$ y3 b
  from v$session a,v$process b,v$sesstat c
8 b2 x* C. n( a" }* j8 x  where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc;6 ?; d; Q! c" i3 w9 [. I
  监控表空间的 I/O 比例
$ q8 S1 V: S) ?# y+ a+ m; A$ ?/ H+ Y  select df.tablespace_name name,df.file_name "file",f.phyrds pyr,
8 |3 M  d  n( C4 N  f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw5 Q! L4 J/ O, D) v* q3 ]4 Y% @
  from v$filestat f, dba_data_files df' e4 T) ]% F% ^
  where f.file# = df.file_id
5 q, n6 ]. S# n4 [4 Q  order by df.tablespace_name;% }( r1 K, X! v: w
  回滚段的争用情况8 @/ ]  H9 P' i1 M7 \1 L
  select name, waits, gets, waits/gets "Ratio"5 v3 M, I7 ?0 z# G6 q
  from v$rollstat a, v$rollname b
: [* |. b: j# B9 D" Q, R  where a.usn = b.usn;6 i. F; b' t6 z" Y
  在某个用户下找所有的索引. e0 }3 V- {! k6 @" M
  select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name; I+ K* s9 {5 n+ [, E+ q
  from user_ind_columns, user_indexes
/ b+ Z  P( P0 f9 \; y3 }  where user_ind_columns.index_name = user_indexes.index_name& I* Y. I+ Y! I- ]  a4 T" Z
  and user_ind_columns.table_name = user_indexes.table_name
5 c8 l" T2 a# J3 c3 u  order by user_indexes.table_type, user_indexes.table_name,
! A8 `5 P; u: {2 I% n5 p/ H  user_indexes.index_name, column_position;
5 k4 }' Q/ V! u6 Q* z  监控文件系统的 I/O 比例, u- T4 O' [3 \5 g- O+ q: J
  select substr(a.file#,1,2) "#", substr(a.name,1,30) "Name",8 n2 x2 b: R* V9 A, D  t3 H+ g
  a.status, a.bytes, b.phyrds, b.phywrts0 ~' V9 H7 ?! W5 W4 H
  from v$datafile a, v$filestat b
% m. k: T1 `; x' B0 S2 {
% b0 @3 s: I9 g0 [: u% l  where a.file# = b.file#;
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:50 | 显示全部楼层

Oracle辅导:监控SQL语句

</p>  监控 SGA 中字典缓冲区的命中率
8 X% k, v: R" c7 T3 i  select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio",
$ D  o& Z! ~2 y& Z  (1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio"9 p% N; I) {6 \. o6 ~! K9 h
  from v$rowcache
! e/ }! P- H  D  where gets+getmisses 0' \1 _: ~% [' ]! [: X' q
  group by parameter, gets, getmisses;! ~/ m  H+ [; w
  监控 SGA 中共享缓存区的命中率,应该小于1%6 Y, q/ o. K8 f( d, M+ f
  select sum(pins) "Total Pins", sum(reloads) "Total Reloads",3 A* v1 d5 c1 y
  sum(reloads)/sum(pins) *100 libcache" S; R! d. U1 s- L$ f, d% D; d
  from v$librarycache;
* \( J' F/ n) m7 ?" r+ q  select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent"
" r3 ?5 K5 z% l" V! W3 n) W  from v$librarycache;
* [0 u4 ?% H/ t  监控 SGA 的命中率
+ ^9 Z. V! e4 x' h" {$ _* [  select a.value + b.value "logical_reads", c.value "phys_reads",
- t( f! d* X4 }# g& }( I3 p  round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO"  i, d9 m1 p2 k- G
  from v$sysstat a, v$sysstat b, v$sysstat c9 i. B  k0 a0 f
  where a.statistic# = 38 and b.statistic# = 39+ g& A- B( \& N3 N+ \3 L
  and c.statistic# = 40;/ q- J% R5 h! P3 t: ~0 U, h
  监控 SGA 中重做日志缓存区的命中率,应该小于1%' |: G) e7 F( l9 E$ f; m1 I5 P+ {
  SELECT name, gets, misses, immediate_gets, immediate_misses,. t) l, B, W9 j# _
  Decode(gets,0,0,misses/gets*100) ratio1,6 P; X3 L+ l" n
  Decode(immediate_gets+immediate_misses,0,0,
2 s  ~6 `/ K; ]9 z- F  immediate_misses/(immediate_gets+immediate_misses)*100) ratio2
0 W8 Q4 b3 P8 H5 A5 ]) s1 c  FROM v$latch WHERE name IN (redo allocation, redo copy);7 Q& ~# Y$ B, }( o& h0 u
  显示所有数据库对象的类别和大小
2 {2 B+ G6 m# p7 P) _  select count(name) num_instances ,type ,sum(source_size) source_size ,: F8 R9 Y, S5 e3 @' z! I* R& S
  sum(parsed_size) parsed_size ,sum(code_size) code_size ,sum(error_size) error_size,$ y* k% W" e% }' [3 J
  sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required
, N. R5 v1 L" x7 m& O  from dba_object_size
- M( L) k; y7 @% F8 _8 K2 S3 L  group by type order by 2;
) y% |9 U0 p( n; [) }: X# d; a  监控内存和硬盘的排序比率,最好使它小于 .10,增加 sort_area_size4 V" j5 T9 x' M# f; q
  SELECT name, value FROM v$sysstat WHERE name IN (sorts (memory), sorts (disk));
* v$ Z5 S; _/ C/ q3 t, q  监控字典缓冲区# K+ G/ x4 ?7 h( P" M
  SELECT (SUM(PINS - RELOADS)) / SUM(PINS) "LIB CACHE" FROM V$LIBRARYCACHE;0 C/ h; q) V4 u3 ]
  SELECT (SUM(GETS - GETMISSES - USAGE - FIXED)) / SUM(GETS) "ROW CACHE" FROM V$ROWCACHE;
* M8 R% r& p: P1 A) N9 w- A1 [& B  SELECT SUM(PINS) "EXECUTIONS", SUM(RELOADS) "CACHE MISSES WHILE EXECUTING" FROM V$LIBRARYCACHE;# [! Z: {! k9 e7 `2 K/ F! B# ^
  后者除以前者,此比率小于1%,接近0%为好。; {2 [, T7 d1 X! }' w- a: R( w$ x
  SELECT SUM(GETS) "DICTIONARY GETS",SUM(GETMISSES) "DICTIONARY CACHE GET MISSES"
  [5 S% H8 p# d% x% m  FROM V$ROWCACHE# S+ v& x! i: s0 e' A7 l0 F, a# p! g( D
  监控 MTS! F7 f, _/ i" R7 S, f
  select busy/(busy+idle) "shared servers busy" from v$dispatcher;* a, _; B# h& J4 s: L# h9 L
  此值大于0.5时,参数需加大
4 ^3 @3 K1 f# e7 F% e% S  select sum(wait)/sum(totalq) "dispatcher waits" from v$queue where type=dispatcher;
" G- i; u" [, h/ F  select count(*) from v$dispatcher;
0 F3 h7 t& I3 l8 G- a, O8 W, A  select servers_highwater from v$mts;- g$ c: D. _; R2 m+ S6 t
  servers_highwater接近mts_max_servers时,参数需加大# d8 T+ a  s' |% I! w# n
  碎片程度
$ I+ p, e) ^  C1 t  select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_name3 }3 e0 {  D! x) ~2 U' P6 P
  having count(tablespace_name)>10;
9 W1 `. D/ k8 k: ~2 p  alter tablespace name coalesce;
$ L/ ^( H9 l/ C  alter table name deallocate unused;
! t. k+ b6 D8 x  J  create or replace view ts_blocks_v as
! Q/ X9 l1 Q+ f0 T% m0 t  select tablespace_name,block_id,bytes,blocks,free space segment_name from dba_free_space0 v9 C0 |; [+ I& v5 x  x2 i; Q
  union all9 H# J  N# g  v, @  r+ |% j; h2 J
  select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;+ {/ Z' a3 C: e, Q) a2 w
  select * from ts_blocks_v;# K3 T/ q  E7 |% T: H1 d2 f
  select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space
  e# [, e4 i6 `: ]& q( ?  group by tablespace_name;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 14:30 , Processed in 0.227861 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表