zoukankan      html  css  js  c++  java
  • 关于oracle数据库性能监控指标

    1. 当前连接会话数以及当前并发连接个数

    -- 当前活跃用户会话数
    Select count(*) from v$session where status='ACTIVE' and USERNAME is not null;
    -- 当前活跃系统会话数
    Select count(*) from v$session where USER# = 0;
    -- 当前非活跃会话数
    Select count(*) from v$session where status='INACTIVE'
    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
    1;
    3. Oracle IOPS(每秒的IO)和吞吐量

         网上给出的答案是这样的

    SELECT
    sum(decode( name, 'physical read IO requests', value, 'physical write IO requests', value, 0 )) AS iops,
    sum(decode( name, 'physical read bytes', value, 'physical write bytes', value, 0 )) / 1024 / 1024 AS mbps
    FROM v$sysstat
    WHERE name IN
    (
    'physical read IO requests',
    'physical write IO requests',
    'physical read bytes',
    'physical read total bytes',
    'physical write bytes',
    'physical write total bytes',
    'physical read total IO requests',
    'physical write total IO requests'
    );
       我对这个答案有一些疑惑,如果是物理io请求,那么这样得到的是io的总数,而不是每秒的io啊,另一个方法请看第 18 条

    4.碎片程度

    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;
    5.高速缓存命中率

    -- 高速缓存命中率
    SELECT NAME, PHYSICAL_READS, DB_BLOCK_GETS, CONSISTENT_GETS,

    1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS)) "Hit Ratio"

    FROM V$BUFFER_POOL_STATISTICS

    WHERE NAME='DEFAULT';
    -- 或者
    SELECT
    physical_reads,
    db_block_gets,
    consistent_gets,
    NAME,
    100 * (1 - (physical_reads / ( consistent_gets + db_block_gets - physical_reads ))) "Data Buffer Hit Ratio"
    FROM v$buffer_pool_statistics;

    -- 共享池命中率
    select sum(pinhits-reloads)/sum(pins)*100 "hit radio" from v$librarycache;

    -- 共享区字典缓冲区命中率

    select sum(gets-getmisses-usage-fixed)/sum(gets) from v$rowcache;

    -- 共享区缓存命中率
    select sum(pins-reloads)/sum(pins) from v$librarycache;
    -- 已经被包含在5里面

    6.库高速缓存命中率

    SELECT
    TO_CHAR(
    ROUND(( 1 - SUM( getmisses ) / SUM( gets )) * 100, 1 )) || '%' "Dictionary Cache Hit Ratio"
    FROM
    v$rowcache;
    7.字典缓存命中率

    SELECT
    sum( gets - getmisses - usage - fixed ) / sum( gets )   
    FROM
    v$rowcache;
    8.空闲的共享池内存

    SELECT
    *
    FROM
    V$SGASTAT
    WHERE
    NAME = 'free memory'
    AND POOL = 'shared pool';
    9.共享池使用率

    SELECT
    (
    1 - ROUND(
    BYTES / ( select sum(value) "total sga MB" from v$sga ), 2
    )
    ) * 100 || '%'
    FROM
    V$SGASTAT
    WHERE
    NAME = 'free memory'
    AND POOL = 'shared pool';
    10.数据库服务启动时间

    select * from sys.v_$instance
    11.共享缓冲池中重做日志命中率

    SELECT
    name,
    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
    WHERE
    name IN ( 'redo allocation', 'redo copy' );
    12.当前oracle所有进程执行进度

       当前进程的数量

    select count(*) from v$process;
    SELECT A.USERNAME,
    A.TARGET,
    A.SID,
    a.SERIAL#,
    A.OPNAME,
    ROUND(A.SOFAR * 100 / A.TOTALWORK, 0) || '%' AS "执行进度",
    A.TIME_REMAINING "剩余秒数",
    TRUNC(A.TIME_REMAINING / 60, 2) "剩余分钟",
    TRUNC(A.TIME_REMAINING / 60/60, 2) "剩余小时",
    B.SQL_TEXT "执行SQL",
    B.LAST_ACTIVE_TIME "开始时间"
    FROM V$SESSION_LONGOPS A, V$SQLAREA B
    WHERE A.TIME_REMAINING <> 0
    AND A.SQL_ADDRESS = B.ADDRESS
    AND A.SQL_HASH_VALUE = B.HASH_VALUE
    13.查询SGA和PGA的使用情况

    select name,
    round(total,2),
    round(total - free, 2) used,
    round(free, 2) free,
    round((total - free) / total * 100, 2) pctused
    from (select 'SGA' name,
    (select sum(value / 1024 / 1024) from v$sga) total,
    (select sum(bytes / 1024 / 1024)
    from v$sgastat
    where name = 'free memory') free
    from dual)
    union
    select name,
    round(total,2),
    round(used, 2) used,
    round(total - used, 2) free,
    round(used / total * 100, 2) pctused
    from (select 'PGA' name,
    (select value / 1024 / 1024 total
    from v$pgastat
    where name = 'aggregate PGA target parameter') total,
    (select value / 1024 / 1024 used
    from v$pgastat
    where name = 'total PGA allocated') used
    from dual);
    13. 查看会话的内存占用情况

    SELECT server "连接类型",
    s.username "用户名",
    OSUSEr "系统用户",
    NAME,
    round(VALUE / 1024 / 1024 ,2) "占用内存(M)",
    s.SID "会话ID",
    s.serial# 会话序列号,
    spid "系统进程ID",
    p.PGA_USED_MEM,
    p.PGA_ALLOC_MEM,
    p.PGA_FREEABLE_MEM,
    p.PGA_MAX_MEM
    FROM v$session s, v$sesstat st, v$statname sn, v$process p
    WHERE st.SID = s.SID
    AND st.statistic# = sn.statistic#
    AND sn.NAME LIKE 'session pga memory'
    AND p.addr = s.paddr
    ORDER BY VALUE DESC
    14.查询耗时最长的10条sql

    select *
    from (select v.sql_id,
    v.child_number,
    v.sql_text,
    v.elapsed_time,
    v.cpu_time,
    v.disk_reads,
    rank() over(order by v.elapsed_time desc) elapsed_rank
    from v$sql v) a
    where elapsed_rank <= 10;
    15.MTS

    select busy/(busy+idle) shared_servers_busy from v$dispatcher
    16.表级锁

    select sess.sid,
    sess.serial#,
    lo.oracle_username,
    lo.os_user_name,
    ao.object_name,
    lo.locked_mode
    from v$locked_object lo,
    dba_objects ao,
    v$session sess
    where ao.object_id = lo.object_id and lo.session_id = sess.sid;
    17.正在等待锁的所有会话

    SELECT * FROM DBA_WAITERS;
    18.TPS,QPS,MBPS

    SELECT
    'Qps|' AS begin1,
    ( SELECT sum( value ) FROM gv$sysmetric WHERE metric_name = 'I/O Requests per Second' ) AS b1,
    '|' AS end1,
    'Tps|' AS begin2,
    ( SELECT sum( value ) FROM gv$sysmetric WHERE metric_name = 'User Transaction Per Sec' ) AS b2,
    '|' AS end2,
    'Mbps|' AS begin3,
    ( SELECT sum( value ) FROM gv$sysmetric WHERE metric_name = 'I/O Megabytes per Second' ) AS b3,
    '|' AS end3
    FROM
    dual;
    19.数据库容量大小(GB)以及数据库各个表空间大小

    -- 数据库总大小
    SELECT ROUND(SUM(BYTES)/1024/1024/1024,2)||'GB'
    FROM DBA_DATA_FILES;
    -- 数据库各个表空间大小
    select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;
    20.审计信息

    -- 具体的审计信息
    select * from dba_audit_trail
    -- 是否打开审计功能 (默认是未开启,NONE表示未开启,其他的应该就是开启,比如 DB_EXTENDED)
    SELECT * from v$parameter WHERE name = 'audit_trail'
    21.当前数据库的版本信息

    SELECT * from v$version
    22. 获取不用用户不同操作的审计执行频率

    SELECT
    username,
    action_name,
    count( * ) c
    FROM
    dba_audit_trail
    GROUP BY
    username,
    action_name
    ORDER BY
    c DESC
    23.查询不同用户的连接数

    SELECT
    username,
    count( username )
    FROM
    v$session
    WHERE
    username IS NOT NULL
    GROUP BY
    username;
    24.被锁定或者已经过期的用户

    select username,lock_date from dba_users WHERE ACCOUNT_STATUS in ('LOCKED','EXPIRED & LOCKED')
    ————————————————
    版权声明:本文为CSDN博主「请干了这碗鸡汤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_23296327/article/details/104894975

    喜欢请赞赏一下啦^_^

    微信赞赏

    支付宝赞赏

  • 相关阅读:
    兼容各浏览器,背景透明,内容不透明
    101 个 MySQL 的调节和优化的提示
    二手房买卖砍价最新攻略 帮你花少钱买好房
    “中国互联网100强”(2013)发布
    写入文件,创建xunlei批量任务
    武汉选房
    Java并发编程(十一)线程池的使用
    Retrofit 代理模式
    Java并发编程(十)阻塞队列
    不要在Android的Application对象中缓存数据!
  • 原文地址:https://www.cnblogs.com/lkj371/p/14930571.html
Copyright © 2011-2022 走看看