oracle日常诊断语句

WBOY
發布: 2016-06-07 15:03:34
原創
1041 人瀏覽過

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 18. 清除已删除的arch log 信息 crosscheck archivelog all; delete expired archivelog all; ――――――――――――――――――――――――――――――――――――――――――――――――

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

    18. 清除已删除的arch log 信息

    crosscheck archivelog all;

    delete expired archivelog all;

    ――――――――――――――――――――――――――――――――――――――――――――――――

    19。查找等待时间最长的语句

    select a.USERNAME,a.OSUSER,a.PROCESS,a.MACHINE,a.ACTION,a.sid, a.last_call_et ,b.sql_text

    from v$session a

    ,v$sqltext b

    where a.username is not null

    and   a.status = 'ACTIVE'

    and   a.sql_address = b.address

    order by a.last_call_et,a.sid,b.piece ;

    根据查出来的sid判断等待的对象

    select owner,segment_name,segment_type

    from (select p1 file#, p2 block# from  v$session_wait

    where sid = 284

    and event in ('buffer busy waits'

    ,'db file sequential read'

    ,'db file scattered read'

    ,'free buffer waits')) b

    ,dba_extents a

    where a.file_id = b.file#

    and   b.block# between a.block_id and (a.block_id+blocks-1);

    ――――――――――――――――――――――――――――――――――――――――――――――――

    20. 监控索引使用

    select * from V$OBJECT_USAGE where used='YES'

    select * from V$OBJECT_USAGE where used='NO'

    select 'alter index '||index_name||' monitoring usage;' from dba_indexes where owner='ABSYS';

    ――――――――――――――――――――――――――――――――――――――――――――――――

    21. 查找正在执行的存储过程

    create or replace procedure sys.who_is_using(obj_name varchar2) is

    begin

    dbms_output.enable(1000000);

    for i in (SELECT distinct b.username,b.sid

    FROM SYS.x$kglpn a,v$session b,SYS.x$kglob c

    WHERE a.KGLPNUSE = b.saddr

    and upper(c.KGLNAOBJ)  like upper(OBJ_NAME)

    and a.KGLPNHDL = c.KGLHDADR)

    loop

    dbms_output.put_line('('||to_char(i.sid)||') - '||i.username);

    end loop;

    end;

    ――――――――――――――――――――――――――――――――――――――――――――――――

    22.查找全表扫描的SQL语句

    Select sql_text from v$sqltext t, v$sql_plan p

    Where t.hash_value=p.hash_value

    And p.operation='INDEX'

    And p.OPTIONS='FULL SCAN'

    Order by p.HASH_VALUE, t.piece;

    查找Fast Full index 扫描的Sql语句可以这样;

    Select sql_text from v$sqltext t, v$sql_plan p

    Where t.hash_value=p.hash_value

    And p.operation='INDEX'

    And p.OPTIONS='FULL SCAN'

    Order by p.HASH_VALUE, t.piece;

    ――――――――――――――――――――――――――――――――――――――――――――――――

    23.已经alter system kill session 但是没有kill干净,查找进程号

    select p.addr from v$process p where pid 1

    minus

    select s.paddr from v$session s;

    ――――――――――――――――――――――――――――――――――――――――――――――――

    24.10g自动收集数据

    select JOB_NAME,ENABLED,state from dba_scheduler_jobs;

    exec dbms_scheduler.disable('GATHER_STATS_JOB');

    exec dbms_scheduler.enable('GATHER_STATS_JOB');

    ――――――――――――――――――――――――――――――――――――――――――――――――

    25.查询有enqueue等待的事件

    SELECT   b.SID, b.serial#, b.username, machine, event, wait_time,

    CHR (BITAND (p1, -16777216) / 16777215)

    || CHR (BITAND (p1, 16711680) / 65535) "Enqueue Type"

    FROM v$session_wait a, v$session b

    WHERE a.event NOT LIKE 'SQL*N%'

    AND a.event NOT LIKE 'rdbms%'

    AND a.SID = b.SID

    AND b.SID > 8

    AND a.event = 'enqueue'

    ORDER BY username;

    ――――――――――――――――――――――――――――――――――――――――――――――――

    26.如何确定哪个表空间读写频繁?

    select name,phyrds,phywrts,readtim,writetim

    from v$filestat a,v$dbfile b

    where a.file# = b.file#

    order by readtim desc

    ――――――――――――――――――――――――――――――――――――――――――――――――

    27.在磁盘上的物理写入和读取次数上如果出现很大的差别,就表明肯定有哪个磁盘负载过多!

    如果出现磁盘负载不平衡,可以通过移动数据文件来均衡文件I/O:

    alter tablespace tablespace_name offline;

    $cp /disk1/a.dbf /disk2/a.dbf;

    alter tablespace tablespace_name rename datafile ‘/disk1/a.dbf’ to ‘/disk2/a.dbf’;

    alter tablespace tablespace online;

    $rm /disk1/a.dbf

    ――――――――――――――――――――――――――――――――――――――――――――――――

    28. 查询SQL语句执行时,硬语法分析的次数

    select name,value

    from v$sysstat

    where name like ‘parse count%’;

    ――――――――――――――――――――――――――――――――――――――――――――――――

    29.查询SQL语句中没有帮定变量的SQL语句,按执行次数排序

    SELECT SUBSTR (sql_text, 1, 40) “SQL”, COUNT (*),

    SUM (executions) “TotExecs” FROM v$sqlarea WHERE executions

    GROUP BY SUBSTR (sql_text, 1, 40) HAVING COUNT (*) > 20 ORDER BY 2;

    ――――――――――――――――――――――――――――――――――――――――――――――――

    30.该项显示buffer cache大小是否合适

    公式:1-((physical reads-physical reads direct-physical reads direct (lob)) / session logical reads)

    执行:

    select 1-((a.value-b.value-c.value)/d.value)

    from v$sysstat a,v$sysstat b,v$sysstat c,v$sysstat d

    where a.name=’physical reads’ and

    b.name=’physical reads direct’ and

    c.name=’physical r

  [1] [2] 

oracle日常诊断语句

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板