監控事例的等待: select event
sum(decode(wait_time
)) prev
sum(decode(wait_time
)) curr
count(*)from v$session_wait group by event order by
;
回滾段的爭用情況: select name
waits
gets
waits/gets ratio fromv$rollstat a
v$rollname b where a
usn=b
usn;
監控表空間的I/O比例: selectdf
tablespace_namename
df
file_name
file
f
phyrds pyr
f
phyblkrd pbr
f
phywrtspyw
f
phyblkwrtpbw fromv$filestatf
dba_data_files df
where f
file#=df
file_id
在某個用戶下找所有的索引: selectuser_indexes
table_name
user_indexes
index_name
uniqueness
column_namefrom user_ind_columns
user_indexes
where user_ind_columns
index_name = user_indexes
index_name
and user_ind_columns
table_name = user_indexes
table_name
order by user_indexes
table_type
user_indexes
table_name
user_indexes
index_name
column_position;
監控 SGA 的命中率 select a
value + b
value
logical_reads
c
value
phys_reads
round(
* ((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# =
and b
statistic# =
and c
statistic# =
;
監控 SGA 中字典緩沖區的命中率 select parameter
gets
Getmisses
getmisses/(gets+getmisses)*
miss ratio
(
(sum(getmisses)/ (sum(gets)+sum(getmisses))))*
Hit ratio
from v$rowcache
where gets+getmisses <>
group by parameter
gets
getmisses;
監控 SGA 中共享緩存區的命中率應該小於% select sum(pins)
Total Pins
sum(reloads)
Total Reloads
sum(reloads)/sum(pins) *
libcache
from v$librarycache;
select sum(pinhits
reloads)/sum(pins)
hit
radio
sum(reloads)/sum(pins)
reload percent
from v$librarycache;
顯示所有數據庫對象的類別和大小 select count(name) num_instances
type
sum(source_size)
source_size
sum(parsed_size)parsed_size
sum(code_sizecode_size
sum(er
ror_size) error_size
sum(source_size) +sum(parsed_size) +sum(code_size)
+sum(error_size) size_required
from dba_object_size
group by type order by
;
監控 SGA 中重做日志緩存區的命中率應該小於% SELECT name
gets
misses
immediate_gets
immediate_misses
Decode(gets
misses/gets*
) ratio
Decode(immediate_gets+immediate_misses
immediate_misses/(immediate_gets+immediate_misses)*
) ratio
FROM v$latch WHERE name IN (
redo allocation
redo copy
);
監控內存和硬盤的排序比率最好使它小於增加sort_area_size SELECT name
value FROM v$sysstat WHERE name IN (
sorts(memory)
sorts (disk)
);
監控當前數據庫誰在運行什麼SQL語句 SELECT osuser
username
sql_text from v$session a
v$sqltext b
where a
sql_address =b
address order by address
piece;
監控字典緩沖區 SELECT (SUM(PINS
RELOADS)) / SUM(PINS)
LIB CACHE
FROM V$LIBRARYCACHE;
SELECT (SUM(GETS
GETMISSES
USAGE
FIXED)) / SUM(GETS)
ROW CACHE
FROM V$ROWCACHE;SELECT SUM(PINS)
EXECUTIONS
SUM(RELOADS)
CACHE MISSES WHILE EXECUTING
FROM V$LIBRARYCACHE; 後者除以前者
此比率小於
%
接近
%為好
SELECT SUM(GETS)
DICTIONARY GETS
SUM(GETMISSES)
DICTIONARY CACHE GET MISSES
FROM V$ROWCACHE
找ORACLE字符集 select * from sys
props$ where name=
NLS_CHARACTERSET
;
監控 MTS select busy/(busy+idle)
shared servers busy
from v$dispatcher;
此值大於
時
參數需加大
select sum(wait)/sum(totalq)
dispatcher waits
from v$queue
where type=
dispatcher
;
select count(*) from v$dispatcher;
select servers_highwater from v$mts;
servers_highwater接近mts_max_servers時
參數需加大
碎片程度 select tablespace_name
count(tablespace_name) from dba_free_space
group by tablespace_name
having count(tablespace_name)>
;
alter tablespace name coalesce;
alter table name deallocate unused;
create or replace view ts_blocks_v as
select tablespace_name
block_id
bytes
blocks
free space
segment_name from dba_free_space
union all
select tablespace_name
block_id
bytes
blocks
segment_name from
dba_extents;
select * from ts_blocks_v;
select tablespace_name
sum(bytes)
max(bytes)
count(block_id) from
dba_free_space
group by tablespace_name;
查看碎片程度高的表
SELECT segment_name table_name
COUNT(*) extents
FROM dba_segments WHERE owner NOT IN (
SYS
SYSTEM
) GROUP BY
segment_name
HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP
BY segment_name);
表索引的存儲情況檢查 select segment_name
sum(bytes)
count(*) ext_quan from dba_extents
where tablespace_name=
&tablespace_name
and segment_type=
TABLE
group by tablespace_name
segment_name;
select segment_name
count(*) from dba_extents where
segment_type=
INDEX
and owner=
&owner
group by segment_name;
找使用CPU多的用戶session 是cpu used by this session
select a
sid
spid
status
substr(a
program
)
prog
a
terminal
osuser
value/
/
value
from v$session a
v$process b
v$sesstat c
where c
statistic#=
and c
sid=a
sid and a
paddr=b
addr order by
value desc;
監控log_buffer的使用情況:(值最好小於%否則增加log_buffer 的大小) seletname
rbar
value
re
name
re
value
(rbar
value*
)/re
value||
%
radio
from v$sysstat rbar
v$sysstat re
where rbar
name=
redo buffer allocation retries
and re
name=
redo entries
;
查看運行過的SQL語句: SELECT SQL_TEXTFROM V$SQL
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22192.html