Oracle其他常用统计语句

1、文件IO统计
select TS.Name, DF.Name File_Name,
    FS.Phyblkrd  Blocks_Read,
    FS.Phyblkwrt Blocks_Written,
    FS.Phyblkrd+FS.Phyblkwrt Total_IOs
FROM  V$FILESTAT FS, V$DATAFILE DF, v$tablespace TS
WHERE DF.File#=FS.File#  AND DF.ts#=TS.TS#
order by FS.Phyblkrd+FS.Phyblkwrt desc;

2、表空间使用情况统计
SELECT upper(f.tablespace_name) "表空间名", d.Tot_grootte_Mb "表空间大小(M)",
       d.Tot_grootte_Mb - f.total_bytes "已使用空间(M)",
       to_char(round((d.Tot_grootte_Mb - f.total_bytes) / d.Tot_grootte_Mb * 100,2),'990.99') "使用比",
       f.total_bytes "空闲空间(M)",
       f.max_bytes "最大块(M)"
FROM
   (SELECT tablespace_name, round(SUM(bytes)/(1024*1024),2) total_bytes,
           round(MAX(bytes)/(1024*1024),2) max_bytes
    FROM sys.dba_free_space
    GROUP BY tablespace_name) f,
  (SELECT dd.tablespace_name, round(SUM(dd.bytes)/(1024*1024),2) Tot_grootte_Mb
    FROM sys.dba_data_files dd
    GROUP BY dd.tablespace_name) d
WHERE d.tablespace_name = f.tablespace_name
ORDER BY 4 DESC

SELECT t.*
FROM
   (  SELECT D.TABLESPACE_NAME, SPACE "SUM_SPACE(M)", BLOCKS SUM_BLOCKS,
             SPACE - NVL(FREE_SPACE, 0) "USED_SPACE(M)",
          ROUND((1 - NVL(FREE_SPACE, 0) / SPACE) * 100, 2) "USED_RATE(%)",
          FREE_SPACE "FREE_SPACE(M)"
       FROM
          (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) SPACE,
                  SUM(BLOCKS) BLOCKS
            FROM DBA_DATA_FILES
            GROUP BY TABLESPACE_NAME) D,
          (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) FREE_SPACE
            FROM DBA_FREE_SPACE
            GROUP BY TABLESPACE_NAME) F
       WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
  UNION ALL --if have tempfile
      SELECT D.TABLESPACE_NAME, SPACE "SUM_SPACE(M)", BLOCKS SUM_BLOCKS,
           USED_SPACE "USED_SPACE(M)",
           ROUND(NVL(USED_SPACE, 0) / SPACE * 100, 2) "USED_RATE(%)",
          SPACE - USED_SPACE "FREE_SPACE(M)"
      FROM
        (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) SPACE,
                SUM(BLOCKS) BLOCKS
          FROM DBA_TEMP_FILES
          GROUP BY TABLESPACE_NAME) D,
        (SELECT TABLESPACE, ROUND(SUM(BLOCKS * 8192) / (1024 * 1024), 2) USED_SPACE
          FROM V$SORT_USAGE
          GROUP BY TABLESPACE) F
  WHERE D.TABLESPACE_NAME = F.TABLESPACE(+)
) t
ORDER BY "USED_RATE(%)" desc;

3、查看回滚段状态
SELECT a.segment_name,b.status
FROM Dba_Rollback_Segs a, v$rollstat b
WHERE a.segment_id=b.usn
ORDER BY 2

4、查看哪些session正在使用哪些回滚段
/*col 回滚段名 format a10
  col SID format 9990
  col 用户名 format a10
  col 操作程序 format a80
  col status format a6 trunc*/

SELECT r.name "回滚段名", s.sid, s.serial#,
       s.username "用户名", s.status,
       s.SQL_ADDRESS, t.cr_get, t.phy_io,
       t.used_ublk, t.noundo, substr(s.program, 1, 78) "操作程序"
FROM  sys.v_$session s,sys.v_$transaction t,sys.v_$rollname r
WHERE t.addr = s.taddr and t.xidusn = r.usn
ORDER BY t.cr_get, t.phy_io

5、查看无法扩展的段
SELECT segment_name, segment_type, owner, a.tablespace_name "tablespacename",
       initial_extent/1024 "inital_extent(K)", next_extent/1024 "next_extent(K)",
       pct_increase, b.bytes/1024 "tablespace max free space(K)", b.sum_bytes/1024 "tablespace total free space(K)"
FROM dba_segments a,
     ( SELECT tablespace_name,MAX(bytes) bytes,SUM(bytes) sum_bytes 
       FROM dba_free_space GROUP BY tablespace_name) b
WHERE a.tablespace_name=b.tablespace_name
   AND next_extent>b.bytes
ORDER BY 4,3,1

6、查看系统锁
SELECT A.OWNER, A.OBJECT_NAME, B.XIDUSN, B.XIDSLOT, B.XIDSQN,
       B.SESSION_ID, B.ORACLE_USERNAME, B.OS_USER_NAME, B.PROCESS,
       B.LOCKED_MODE, C.MACHINE, C.STATUS, C.SERVER, C.SID, C.SERIAL#, C.PROGRAM
FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C
WHERE A.OBJECT_ID = B.OBJECT_ID 
  AND B.PROCESS = C.PROCESS
ORDER BY 1,2

7、查看Io较大正在运行的session
SELECT se.sid, se.serial#, pr.SPID, se.username, se.status, se.terminal,
       se.program, se.MODULE, se.sql_address, st.event, st.p1text, st.p1,
       st.p2, st.p3, st.STATE, st.SECONDS_IN_WAIT, si.physical_reads,
       si.block_changes
FROM v$session se, v$session_wait st, v$sess_io si, v$process pr
WHERE st.sid=se.sid
  AND st.sid=si.sid
  AND se.PADDR=pr.ADDR
  AND se.sid>6
  AND st.wait_time=0
  AND st.event NOT LIKE '%SQL%'
ORDER BY physical_reads DESC

8、查看正在使用临时段的session
SELECT username, sid, serial#, sql_address, machine,
       program, tablespace, segtype, contents
FROM v$session se, v$sort_usage su
WHERE se.saddr=su.session_addr

9、查看某一个操作系统进程的SQL
SELECT a.username, a.machine, a.program, a.sid,
       a.serial#,  a.status,  c.piece,   c.sql_text
FROM v$session a, v$process b, v$sqltext c
WHERE b.spid=****
  AND b.addr=a.paddr
  AND a.sql_address=c.address(+)
ORDER BY c.piece

10、查看enqueue锁状态
SELECT DECODE(request,0,'Holder: ','Waiter: ')||sid sess,
       id1, id2, lmode, request, type
FROM V$LOCK
WHERE (id1, id2, type) IN ( SELECT id1, id2, type FROM V$LOCK WHERE request>0)
ORDER BY id1, request

11、查看hotblock
SELECT /*+ ordered */
    E.OWNER || '.' || E.SEGMENT_NAME SEGMENT_NAME,
    E.EXTENT_ID EXTENT#,
    X.DBABLK - E.BLOCK_ID + 1 BLOCK#,
    X.TCH,  L.CHILD#
FROM SYS.V$LATCH_CHILDREN L, SYS.X$BH X, SYS.DBA_EXTENTS E
WHERE L.NAME = 'cache buffers chains'
     AND L.SLEEPS > &SLEEP_COUNT
     AND X.HLADDR = L.ADDR
     AND E.FILE_ID = X.FILE#
     AND X.DBABLK BETWEEN E.BLOCK_ID AND E.BLOCK_ID + E.BLOCKS - 1
ORDER BY X.TCH;

12.内存与CPU利用率:
SELECT aa.sid     AS "sid",
       aa.serial# AS "SERIAL#",
       aa.VALUE   AS "CPU",
       bb.VALUE   AS "内存-PGA",
       cc.VALUE   "I/O-Phy-read",
       aa.machine,aa.username,aa.program
  FROM (SELECT c.sid, c.serial#, a.NAME, b.VALUE,c.machine,c.program,c.username
          FROM v$statname a, v$sesstat b, v$session c
         WHERE NAME = 'CPU used by this session'
           AND a.statistic# = b.statistic#
           AND c.sid = b.sid) aa,
       (SELECT c.sid, c.serial#, a.NAME, b.VALUE
          FROM v$statname a, v$sesstat b, v$session c
         WHERE NAME = 'session pga memory'
           AND a.statistic# = b.statistic#
           AND c.sid = b.sid) bb,
       (SELECT c.sid, c.serial#, a.NAME, b.VALUE
          FROM v$statname a, v$sesstat b, v$session c
         WHERE NAME = 'physical reads'
           AND a.statistic# = b.statistic#
           AND c.sid = b.sid) cc
 WHERE aa.sid = bb.sid
    AND aa.sid = cc.sid
    AND aa.serial# = bb.serial#
    AND aa.serial# = cc.serial#
 ORDER BY 3 DESC, 4 DESC, 5 DESC

原文地址:https://www.cnblogs.com/jasonsfu/p/1152762.html