欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

oracle日常诊断语句

程序员文章站 2022-06-09 13:09:12
...

欢迎进入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日常诊断语句