Oracle性能调优实践中的几点心得

来源:Oracle认证    发布时间:2012-11-12    Oracle认证视频    评论

4、另一个有用的脚本:查找前十条性能差的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 ; 

 

二、迅速发现oracle server的性能问题的成因,我们可以求助于v$session_wait这个视图,看系统的这些session在等什么,使用了多少的io。以下是参考脚本: 

脚本说明:查看占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 

 

对检索出的结果的几点说明: 

1、这是按每个正在等待的session已经发生的物理读排的序,因为它与实际的io相关。 

2、你可以看一下这些等待的进程都在忙什么,语句是否合理? 

select sql_address from v$session where sid= ; 

select * from v$sqltext where address= ; 

执行以上两个语句便可以得到这个session的语句。 

你也以用alter system kill session sid,serial#;把这个session杀掉。 

3、应观注一下event这列,这是我们调优的关键一列,下面对常出现的event做以简要的说明: 

abuffer busy waitsfree buffer waits这两个参数所标识是dbwr是否够用的问题,与io很大相关的,当v$session_wait中的free buffer wait的条目很小或没有的时侯,说明你的系统的dbwr进程决对够用,不用调整;free buffer wait的条目很多,你的系统感觉起来一定很慢,这时说明你的dbwr已经不够用了,它产生的wio已经成为你的数据库性能的瓶颈,这时的解决办法如下: 

a.1增加写进程,同时要调整db_block_lru_latches参数 

示例:修改或添加如下两个参数 

db_writer_processes=4 

db_block_lru_latches=8 

a2开异步ioibm这方面简单得多,hp则麻烦一些,可以与hp工程师联系。 

bdb file sequential read,指的是顺序读,即全表扫描,这也是我们应该尽量减少的部分,解决方法就是使用索引、sql调优,同时可以增大db_file_multiblock_read_count这个参数。 

cdb file scattered read,这个参数指的是通过索引来读取,同样可以通过增加db_file_multiblock_read_count这个参数来提高性能。 

dlatch free,与栓相关的了,需要专门调节。 

e、其他参数可以不特别观注。 

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答