设为首页 收藏本站
查看: 1194|回复: 0

[经验分享] oracle监控语句

[复制链接]

尚未签到

发表于 2018-9-12 11:11:32 | 显示全部楼层 |阅读模式
  1.  --查看表锁
  SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100;
  2.  --监控事例的等待
  SELECT EVENT,
  SUM(DECODE(WAIT_TIME, 0, 0, 1)) "Prev",
  SUM(DECODE(WAIT_TIME, 0, 1, 0)) "Curr",
  COUNT(*) "Tot"
  FROM V$SESSION_WAIT
  GROUPBY EVENT
  ORDERBY 4;
  3.  --回滚段的争用情况
  SELECTNAME, WAITS, GETS, WAITS / GETS "Ratio"
  FROM V$ROLLSTAT A, V$ROLLNAME B
  WHERE A.USN = B.USN;
  4.  --查看前台正在发出的SQL语句
  SELECT USER_NAME, SQL_TEXT   
  FROM V$OPEN_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'
  ORDERBY 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
  GROUPBY TABLESPACE_NAME
  ORDERBY 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
  GROUPBY B.TABLESPACE_NAME, B.FILE_ID, B.BYTES
  ORDERBY 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
  ORDERBY T.CR_GET, T.PHY_IO;
  9.  --查看SGA区剩余可用内存
  SELECTNAME,
  SGASIZE / 1024 / 1024        "Allocated(M)",
  BYTES / 1024            "**空间(K)",
  ROUND(BYTES / SGASIZE * 100, 2)    "**空间百分比(%)"
  FROM (SELECTSUM(BYTES) SGASIZE FROM SYS.V_$SGASTAT) S,
  SYS.V_$SGASTAT F   
  WHERE F.NAME = 'free memory';
  10.  --监控表空间I/O比例
  SELECT DF.TABLESPACE_NAME NAME,
  DF.FILE_NAME       "file",
  F.PHYRDS           PYR,
  F.PHYBLKRD         PBR,
  F.PHYWRTS          PYW,
  F.PHYBLKWRT        PBW
  FROM V$FILESTAT F, DBA_DATA_FILES DF
  WHERE F.FILE# = DF.FILE_ID
  ORDERBY 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 V$SYSSTAT A, V$SYSSTAT B, V$SYSSTAT 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
  GROUPBY PARAMETER, GETS, GETMISSES;
  13.  --监控 SGA **享缓存区的命中率,应该小于1%
  SELECTSUM(PINS) "Total Pins",

  SUM(RELOADS) "Total>  SUM(RELOADS) / SUM(PINS) * 100 LIBCACHE
  FROM V$LIBRARYCACHE;
  14.  --监控 SGA 中重做日志缓存区的命中率,应该小于1%
  SELECTNAME,
  GETS,
  MISSES,
  IMMEDIATE_GETS,
  IMMEDIATE_MISSES,
  DECODE(GETS, 0, 0, MISSES / GETS * 100) RATIO1,
  DECODE(IMMEDIATE_GETS + IMMEDIATE_MISSES,
  0,
  0,
  IMMEDIATE_MISSES / (IMMEDIATE_GETS + IMMEDIATE_MISSES) * 100) RATIO2
  FROM V$LATCH
  WHERENAMEIN ('redo allocation', 'redo copy');
  15.  --监控内存和硬盘的排序比率,最好使它小于 .10
  SELECTNAME, VALUE
  FROM V$SYSSTAT
  WHERENAMEIN ('sorts (memory)', 'sorts (disk)');
  16.  --监控字典缓冲区
  SELECTSUM(GETS) "DICTIONARY GETS",
  SUM(GETMISSES) "DICTIONARY CACHE GET MISSES"
  FROM V$ROWCACHE;
  17.  --非系统用户建在SYSTEM表空间中的表
  SELECT OWNER, TABLE_NAME
  FROM DBA_TABLES
  WHERE TABLESPACE_NAME IN ('SYSTEM', 'USER_DATA')
  AND OWNER NOTIN
  ('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
  ORDERBY 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
  ORDERBY 4 DESC;
  19.  --读磁盘数超100次的sql
  SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100;
  20.  --最频繁执行的sql
  SELECT * FROM SYS.V_$SQLAREA WHERE EXECUTIONS > 100;
  21.  --查询使用CPU多的用户session
  SELECT A.SID,
  SPID,
  STATUS,
  SUBSTR(A.PROGRAM, 1, 40) PROG,
  A.TERMINAL,
  OSUSER,
  VALUE / 60 / 100 VALUE
  FROM V$SESSION A, V$PROCESS B, V$SESSTAT C
  WHERE C.STATISTIC# = 12
  AND C.SID = A.SID
  AND A.PADDR = B.ADDR
  ORDERBY VALUE DESC;
  22.  --当前每个会话使用的对象数
  SELECT A.SID, S.TERMINAL, S.PROGRAM, COUNT(A.SID)
  FROM V$ACCESS A, V$SESSION S
  WHERE A.OWNER  'SYS'
  AND S.SID = A.SID
  GROUPBY A.SID, S.TERMINAL, S.PROGRAM
  ORDERBYCOUNT(A.SID);


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-573288-1-1.html 上篇帖子: oracle oid 10G-Permanent 下篇帖子: Oracle DataGuard 之--Physical DG转换Logical DG
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表