Oracle監控之Top sql語句查詢及各種監控語句統計
阿新 • • 發佈:2019-01-08
希望能對大家有所幫助!
很多時候大家想檢視oracle資料庫中的sql語句執行情況,但是又不知道如何是好,今天在這裡為大家提供一個sql語句,大家可以通過以下的sql語句查詢Oracle資料庫中Top Sql情況:
查詢結果可按照PCT、總耗費時間、CPU使用時間、平均執行時間、執行次數、關聯行數等排序。
TOP sql語句如下:
select round(100 * a.pct, 2) pct,
round(a.elapsed_time/1000000, 2) elapsed_time,
round(a.elapsed_time/a.executions/1000) ms_by_exec,
round(a.cpu_time/1000000 , 2) cpu_time,
a.buffer_gets total_cost,
round(a.buffer_gets/a.executions) elem_cost,
a.executions exec,
a.rows_processed nb_rows,
s.sql_text
from (select *
from (select elapsed_time,
ratio_to_report(elapsed_time) over () pct,
cpu_time,
buffer_gets,
executions,
rows_processed,
address,
hash_value
from v$sql
order by elapsed_time desc)
where rownum < 26) a,
v$sqlarea s
where a.address = s.address
and a.hash_value = s.hash_value
and a.executions <> 0
order by pct desc, cpu_time desc
session相關:
select sesion.sid,
username,
osuser,
machine,
sesion.module ,
status,
optimizer_mode,
sql_text
from v$sqlarea sqlarea, v$session sesion
where sesion.sql_hash_value = sqlarea.hash_value(+)
and sesion.sql_address = sqlarea.address(+)
and sesion.username is not null
order by username, sql_text
locks相關:
select
username,
osuser,
machine,
s.module,
l.sid,
decode(l.type,
'MR', 'Media Recovery',
'RT', 'Redo Thread',
'UN', 'User Name',
'TX', 'Transaction',
'TM', 'DML',
'UL', 'PL/SQL User Lock',
'DX', 'Distributed Xaction',
'CF', 'Control File',
'IS', 'Instance State',
'FS', 'File Set',
'IR', 'Instance Recovery',
'ST', 'Disk Space Transaction',
'TS', 'Temp Segment',
'IV', 'Library Cache Invalidation',
'LS', 'Log Start or Switch',
'RW', 'Row Wait',
'SQ', 'Sequence Number',
'TE', 'Extend Table',
'TT', 'Temp Table', l.type) type,
decode(lmode,
0, 'None',
1, 'Null',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share',
5, 'S/Row-X (SSX)',
6, 'Exclusive', lmode) lmode,
decode(request,
0, 'None',
1, 'Null',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share',
5, 'S/Row-X (SSX)',
6, 'Exclusive', request) request,
decode(block,
0, 'Not Blocking',
1, 'Blocking',
2, 'Global', block) block,
owner,
object_name,
a.sql_text
from v$locked_object lo, all_objects ao, v$lock l, v$session s, v$sqlarea a
where lo.object_id = ao.object_id
and l.sid = lo.session_id
and s.sid = l.sid
and a.address = s.sql_address(+)
and a.hash_value = s.sql_hash_value(+)
order by username
foreignKeysWithoutIndexes相關:
select user_cons_columns.table_name || '.' || user_constraints.constraint_name as "Foreign key"
from user_cons_columns, user_constraints
where user_constraints.constraint_type = 'R' and
user_constraints.constraint_name = user_cons_columns.constraint_name and
user_cons_columns.table_name || '.' || user_cons_columns.column_name not in (select table_name || '.' || column_name from user_ind_columns)
invalid objects相關:
select object_name from user_objects where status = 'INVALID'
disabled Constraints相關:
select table_name || '.' || constraint_name as "Constraint"
from user_constraints where status = 'DISABLED'
Library Cache Ratio/Row Cache Ratio/Cache Hit Ratio相關:
select round(100*(1-sum(reloads)/sum(pins)),2) || '% Library Cache Ratio' Ratio from v$librarycache union
select round(100*(1-sum(getmisses)/sum(gets)),2) || '% Row Cache Ratio' from v$rowcache
union
select round(100*(1-(phy.value / (cur.value + con.value))),2) || '% Cache Hit Ratio'
from v$sysstat cur, v$sysstat con, v$sysstat phy
where cur.name = 'db block gets' and
con.name = 'consistent gets' and
phy.name = 'physical reads'
oracle.parameters = select * from v$parameter
rollback Segment統計相關:
Select rn.Name "Rollback Segment", rs.RSSize/1024 "Size (KB)", rs.Gets "Gets",
rs.waits "Waits", (rs.Waits/rs.Gets)*100 "% Waits",
rs.Shrinks "# Shrinks", rs.Extends "# Extends"
from v$RollName rn, v$RollStat rs
where rn.usn = rs.usn
statistics 相關:
select name statistic, value system,
(select sum(value) from v$sesstat ses where ses.statistic# = sys.statistic#) sessions
from v$sysstat sys
events 相關:
select event, time_waited system,
(select sum(time_waited) from v$session_event ses where ses.event = sys.event) sessions
from v$system_event sys
where event != 'Null event' and
event != 'rdbms ipc message' and
event != 'pipe get' and
event != 'virtual circuit status' and
event != 'lock manager wait for remote message' and
event not like '% timer' and
event not like 'SQL*Net message from %'
datafile IO 相關:
select df.NAME filename,
ts.name tablespace_name,
PHYRDS physical_reads,
round((PHYRDS / pd.PHYS_READS)*100,2) pct_reads,
PHYWRTS physical_writes,
round(PHYWRTS * 100 / pd.PHYS_WRTS,2) pct_writes,
fs.PHYBLKRD + fs.PHYBLKWRT total_block_io
from (select sum(PHYRDS) phys_reads,
sum(PHYWRTS) phys_wrts
from v$filestat) pd,
v$datafile df,
v$filestat fs,
v$tablespace ts
where df.FILE# = fs.FILE# and df.ts# = ts.ts#
order by fs.PHYBLKRD + fs.PHYBLKWRT desc
tablespace相關:
select TABLESPACE_NAME,
INITIAL_EXTENT,
NEXT_EXTENT,
MIN_EXTENTS,
MAX_EXTENTS,
PCT_INCREASE,
MIN_EXTLEN,
STATUS,
CONTENTS,
LOGGING,
EXTENT_MANAGEMENT,
ALLOCATION_TYPE
from user_tablespaces
order by TABLESPACE_NAME
tablespace Freespace相關:
select ddf.TABLESPACE_NAME,
ddf.BYTES tablespace_size,
ddf.BYTES-nvl(DFS.BYTES,0) used,
round(((ddf.BYTES-nvl(dfs.BYTES,0))/ddf.BYTES)*100,2) pct_used,
nvl(dfs.BYTES,0) free,
round((1-((ddf.BYTES-nvl(dfs.BYTES,0))/ddf.BYTES))*100,2) pct_free
from (select t.name TABLESPACE_NAME,
sum(BYTES) bytes
from v$datafile d, v$tablespace t
where t.ts# = d.ts#
group by t.name) ddf,
(select TABLESPACE_NAME,
sum(BYTES) bytes
from user_free_space
group by TABLESPACE_NAME) dfs
where ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME(+)
order by ((ddf.BYTES-nvl(dfs.BYTES,0))/ddf.BYTES) desc