希望能對大家有所幫助!
很多時候大家想查看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