Oracle 常用性能监控SQL语句

来源:互联网 发布:java string split函数 编辑:程序博客网 时间:2024/06/12 22:26

原文:http://panhongbin100.iteye.com/blog/1596414
1. –查看表锁
SELECT * FROM SYS.V_SQLAREAWHEREDISKREADS>100;2.SELECTEVENT,SUM(DECODE(WAITTIME,0,0,1))Prev,SUM(DECODE(WAITTIME,0,1,0))Curr,COUNT()TotFROMVSESSION_WAIT
GROUP BY EVENT
ORDER BY 4;
3. –回滚段的争用情况
SELECT NAME, WAITS, GETS, WAITS / GETS “Ratio”
FROM VROLLSTATA,VROLLNAME B
WHERE A.USN = B.USN;
4. –查看前台正在发出的SQL语句
SELECT USER_NAME, SQL_TEXT   
FROM VOPEN_CURSOR     
 WHERE SID IN (SELECT SID  
                 FROM (SELECT SID, SERIAL#, USERNAME, PROGRAM     
                         FROM V
SESSION   
WHERE STATUS = ‘ACTIVE’));
5. –数据表占用空间大小情况
SELECT SEGMENT_NAME, TABLESPACE_NAME, BYTES, BLOCKS
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE = ‘TABLE’
ORDER BY BYTES DESC, BLOCKS DESC;
6. –查看表空间碎片大小
SELECT TABLESPACE_NAME,
ROUND(SQRT(MAX(BLOCKS) / SUM(BLOCKS)) *
(100 / SQRT(SQRT(COUNT(BLOCKS)))),
2) FSFI
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
ORDER BY 1;
7. –查看表空间占用磁盘情况
SELECT B.FILE_ID 文件ID号,
B.TABLESPACE_NAME 表空间名,
B.BYTES 字节数,
(B.BYTES - SUM(NVL(A.BYTES, 0))) 已使用,
SUM(NVL(A.BYTES, 0)) 剩余空间,
SUM(NVL(A.BYTES, 0)) / (B.BYTES) * 100 剩余百分比
FROM DBA_FREE_SPACE A, DBA_DATA_FILES B
WHERE A.FILE_ID = B.FILE_ID
GROUP BY B.TABLESPACE_NAME, B.FILE_ID, B.BYTES
ORDER BY B.FILE_ID;
8. –查看session使用回滚段
SELECT R.NAME 回滚段名,
S.SID,
S.SERIAL#,
S.USERNAME 用户名,
T.STATUS,
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;  
9.  –查看SGA区剩余可用内存  
SELECT NAME,  
             SGASIZE / 1024 / 1024        “Allocated(M)”,  
             BYTES / 1024            “**空间(K)”,  
             ROUND(BYTES / SGASIZE * 100, 2)    “**空间百分比(%)”     
  FROM (SELECT SUM(BYTES) SGASIZE FROM SYS.V_
SGASTAT) S,
SYS.V_SGASTATF  WHEREF.NAME=freememory;10.I/OSELECTDF.TABLESPACENAMENAME,DF.FILENAMEfile,F.PHYRDSPYR,F.PHYBLKRDPBR,F.PHYWRTSPYW,F.PHYBLKWRTPBWFROMVFILESTAT F, DBA_DATA_FILES DF
WHERE F.FILE# = DF.FILE_ID
ORDER BY DF.TABLESPACE_NAME;
11. –监控SGA命中率
SELECT A.VALUE + B.VALUE “logical_reads”,
C.VALUE “phys_reads”,
ROUND(100 * ((A.VALUE + B.VALUE) - C.VALUE) / (A.VALUE + B.VALUE)) “BUFFER HIT RATIO”
FROM VSYSSTATA,VSYSSTAT B, VSYSSTAT C  
 WHERE A.STATISTIC# = 38  
   AND B.STATISTIC# = 39  
   AND C.STATISTIC# = 40;  
12.  –监控 SGA 中字典缓冲区的命中率  
SELECT PARAMETER,  
       GETS,  
       GETMISSES,  
       GETMISSES / (GETS + GETMISSES) * 100 “miss ratio”,  
       (1 - (SUM(GETMISSES) / (SUM(GETS) + SUM(GETMISSES)))) * 100 “Hit ratio”  
  FROM V
ROWCACHE
WHERE GETS + GETMISSES <> 0
GROUP BY PARAMETER, GETS, GETMISSES;
13. –监控 SGA **享缓存区的命中率,应该小于1%
SELECT SUM(PINS) “Total Pins”,
SUM(RELOADS) “Total Reloads”,
SUM(RELOADS) / SUM(PINS) * 100 LIBCACHE
FROM VLIBRARYCACHE;14.SGA1SELECTNAME,GETS,MISSES,IMMEDIATEGETS,IMMEDIATEMISSES,DECODE(GETS,0,0,MISSES/GETS100)RATIO1,DECODE(IMMEDIATEGETS+IMMEDIATEMISSES,0,0,IMMEDIATEMISSES/(IMMEDIATEGETS+IMMEDIATEMISSES)100)RATIO2FROMVLATCH
WHERE NAME IN (‘redo allocation’, ‘redo copy’);
15. –监控内存和硬盘的排序比率,最好使它小于 .10
SELECT NAME, VALUE
FROM VSYSSTATWHERENAMEIN(sorts(memory),sorts(disk));16.SELECTSUM(GETS)DICTIONARYGETS,SUM(GETMISSES)DICTIONARYCACHEGETMISSESFROMVROWCACHE;
17. –非系统用户建在SYSTEM表空间中的表
SELECT OWNER, TABLE_NAME
FROM DBA_TABLES
WHERE TABLESPACE_NAME IN (‘SYSTEM’, ‘USER_DATA’)
AND OWNER NOT IN
(‘SYSTEM’, ‘SYS’, ‘OUTLN’, ‘ORDSYS’, ‘MDSYS’, ‘SCOTT’, ‘HOSTEAC’);
18. –性能最差的SQL
SELECT *
FROM (SELECT PARSING_USER_ID EXECUTIONS,
SORTS,
COMMAND_TYPE,
DISK_READS,
SQL_TEXT
FROM V$SQLAREA
ORDER BY DISK_READS DESC)
WHERE ROWNUM < 100;

–用下列SQL 工具找出低效SQL :
SELECT EXECUTIONS,
DISK_READS,
BUFFER_GETS,
ROUND((BUFFER_GETS - DISK_READS) / BUFFER_GETS, 2) HIT_RADIO,
ROUND(DISK_READS / EXECUTIONS, 2) READS_PER_RUN,
SQL_TEXT
FROM V$SQLAREA
WHERE EXECUTIONS > 0
AND BUFFER_GETS > 0
AND (BUFFER_GETS - DISK_READS) / BUFFER_GETS < 0.8
ORDER BY 4 DESC;

  1. –读磁盘数超100次的sql
    SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100;
  2. –最频繁执行的sql
    SELECT * FROM SYS.V_$SQLAREA WHERE EXECUTIONS > 100;
  3. –查询使用CPU多的用户session
    SELECT A.SID,
    SPID,
    STATUS,
    SUBSTR(A.PROGRAM, 1, 40) PROG,
    A.TERMINAL,
    OSUSER,
    VALUE / 60 / 100 VALUE
    FROM VSESSIONA,VPROCESS B, V$SESSTAT C
    WHERE C.STATISTIC# = 12
    AND C.SID = A.SID
    AND A.PADDR = B.ADDR
    ORDER BY VALUE DESC;
  4. –当前每个会话使用的对象数
    SELECT A.SID, S.TERMINAL, S.PROGRAM, COUNT(A.SID)
    FROM VACCESSA,VSESSION S
    WHERE A.OWNER <> ‘SYS’
    AND S.SID = A.SID
    GROUP BY A.SID, S.TERMINAL, S.PROGRAM
    ORDER BY COUNT(A.SID);
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 移动代充q币没到怎么办 电信手机话费充多了怎么办 微信钱包提现提错银行卡怎么办 qq余额提现不了怎么办 qq钱包充错话费了怎么办 苹果账户扣了钱怎么办 苹果平板冲不进去电怎么办 qq红包输了钱怎么办 qq红包实名认证没有银行卡怎么办 扣扣红包发不了怎么办 qb充错账号了怎么办 q币冲错了号了怎么办 微信qb冲错号码怎么办 微信qb冲错了怎么办 qb冲到小号了怎么办 无意中充了q币怎么办 在绝地求生里打不开充值页面怎么办 电脑版迷你世界打不开怎么办 电脑的腾讯视频打不开怎么办 好多程序连不上网了怎么办 掌游宝炉石传说卡组复制不了怎么办 花呗不能充话费怎么办 想用话费充王者怎么办 苹果6s激活出错怎么办 联通话费充多了怎么办? 电信宽带充值充到别人账号了怎么办 未实名的支付宝钱转不出来怎么办 手机打游戏闪屏怎么办 支付宝手机冲错怎么办 手机停用了支付宝充值码怎么办 苹果手机桌面上找不到支付宝怎么办 苹果手机支付宝找不到了怎么办 微信上充话费没到账怎么办 冲q币不到账怎么办 支付宝冲话费没到帐怎么办 qq实名认证没有银行卡怎么办 微信零钱限额没有银行卡怎么办 qq钱包忘记支付密码怎么办 零钱包密码忘了怎么办 关爱通密码知道卡号忘了怎么办 卡号的密码忘了怎么办