zoukankan      html  css  js  c++  java
  • oracle性能sql

    查出锁定object的session的信息以及被锁定的object名

    SELECT L.SESSION_ID SID,
    S.SERIAL#,
    L.LOCKED_MODE,
    L.ORACLE_USERNAME,
    L.OS_USER_NAME,
    S.MACHINE,
    S.TERMINAL,
    O.OBJECT_NAME,
    S.LOGON_TIME
    FROM V$LOCKED_OBJECT L, ALL_OBJECTS O, V$SESSION S
    WHERE L.OBJECT_ID = O.OBJECT_ID
    AND L.SESSION_ID = S.SID
    ORDER BY SID, S.SERIAL#;

    查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句

    SELECT L.SESSION_ID SID,
    S.SERIAL#,
    L.LOCKED_MODE,
    L.ORACLE_USERNAME,
    S.USER#,
    L.OS_USER_NAME,
    S.MACHINE,
    S.TERMINAL,
    A.SQL_TEXT,
    A.ACTION
    FROM V$SQLAREA A, V$SESSION S, V$LOCKED_OBJECT L
    WHERE L.SESSION_ID = S.SID
    AND S.PREV_SQL_ADDR = A.ADDRESS
    ORDER BY SID, S.SERIAL#;

    解锁表

    --kill session语句
    --'151,3027'格式:'SID,SERIAL#'
    ALTER SYSTEM KILL SESSION '61,563';

    查询正在执行的sql


    SELECT b.sid oracleID,
    b.username,
    b.serial#,
    spid,
    paddr,
    sql_text,
    b.machine
    FROM v$process a, v$session b, v$sqlarea c
    WHERE a.addr = b.paddr AND b.sql_hash_value = c.hash_value;


    查看占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,
    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;

    查找前十条性能差的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 < 10;

    从V$SQLAREA中查询最占用资源的查询

    select b.username username,a.disk_reads reads,a.BUFFER_GETS as buffer,
    a.executions exec,a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,
    a.sql_text Statement
    from v$sqlarea a,dba_users b
    where a.parsing_user_id=b.user_id
    and a.disk_reads > 100000
    order by a.disk_reads desc;

    列出使用频率最高的5个查询

    select sql_text,executions
    from (select sql_text,executions,
    rank() over
    (order by executions desc) exec_rank
    from v$sql)
    where exec_rank <=5;

    消耗磁盘读取最多的sql top5

    select disk_reads,sql_text
    from (select sql_text,disk_reads,
    dense_rank() over
    (order by disk_reads desc) disk_reads_rank
    from v$sql)
    where disk_reads_rank <=5;

    找出需要大量缓冲读取(逻辑读)操作的查询

    select buffer_gets,sql_text
    from (select sql_text,buffer_gets,
    dense_rank() over
    (order by buffer_gets desc) buffer_gets_rank
    from v$sql)
    where buffer_gets_rank<=5;

    查询负载
    SELECT *
    FROM ( SELECT A.INSTANCE_NUMBER,
    A.SNAP_ID,
    B.BEGIN_INTERVAL_TIME + 0 BEGIN_TIME,
    B.END_INTERVAL_TIME + 0 END_TIME,
    ROUND(VALUE - LAG( VALUE, 1 , '0')
    OVER(ORDER BY A.INSTANCE_NUMBER, A.SNAP_ID)) "DB TIME"
    FROM (SELECT B.SNAP_ID,
    INSTANCE_NUMBER,
    SUM(VALUE ) / 1000000 / 60 VALUE
    FROM DBA_HIST_SYS_TIME_MODEL B
    WHERE B.DBID = (SELECT DBID FROM V$DATABASE)
    AND UPPER (B.STAT_NAME) IN UPPER(('DB TIME' ))
    GROUP BY B.SNAP_ID, INSTANCE_NUMBER) A,
    DBA_HIST_SNAPSHOT B
    WHERE A.SNAP_ID = B.SNAP_ID
    AND B.DBID = (SELECT DBID FROM V$DATABASE)
    AND B.INSTANCE_NUMBER = A.INSTANCE_NUMBER)
    WHERE TO_CHAR(BEGIN_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE , 'YYYY-MM-DD')
    ORDER BY BEGIN_TIME;

  • 相关阅读:
    Centos 通过yum的方式升级内核
    docker入门——镜像简介
    docker入门——管理容器
    docker入门——安装及简单操作
    docker入门——简介
    Centos 6安装 Jenkins
    Centos 7 搭建OpenStack 私有云——(1)基础环境配置
    Python正则表达式
    多选控件multipicker
    绝对定位 软键盘弹出时顶起底部按钮
  • 原文地址:https://www.cnblogs.com/jiayan666/p/14283037.html
Copyright © 2011-2022 走看看