WEB开发网
开发学院数据库Oracle Unix环境下的Oracle调优 阅读

Unix环境下的Oracle调优

 2007-05-06 12:05:47 来源:WEB开发网   
核心提示: 1 划给Oracle使用的内存不要超过系统内存的1/2,一般保在系统内存的40%为益,2 为系统增加内存3 如果你的连接特别多,Unix环境下的Oracle调优(2),可以使用MTS的方式4 打全补丁,防止内存漏洞如何找到点用系用资源特别大的Oracle的session及其执行的语句,我们

1 划给Oracle使用的内存不要超过系统内存的1/2,一般保在系统内存的40%为益。

2 为系统增加内存

3 如果你的连接特别多,可以使用MTS的方式

4 打全补丁,防止内存漏洞

如何找到点用系用资源特别大的Oracle的session及其执行的语句。

Hp-unix可以用glance,top

IBM AIX可以用topas

些外可以使用ps的命令。

通过这些程序我们可以找到点用系统资源特别大的这些进程的进程号,我们就可以通过以下的sql语句发现这个pid正在执行哪个sql,这个sql最好在pl/sql developer,toad等软件中执行,不需要进行格式化, 把<>中的spid换成你的spid就可以了。

使用top查看运行时间最长state为run进程的pid,使用如下的语句查看pid在做什么SELECT a.sql_text
FROM v$sqltext a,v$session b
WHERE a.hash_value = b.sql_hash_value AND b.SID='&sid'
ORDER BY piece ASC

查看到如果是有全表扫描的语句就要进行优化。

查找前十条性能差的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较大的正在运行的sessionSELECT 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

Tags:Unix 环境 Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接