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

Oracle监控之Top sql语句查询及各种监控语句统计

2016-08-24 22:55 597 查看
希望能对大家有所帮助!

很多时候大家想查看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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: