li
  当前位置:主页 > 性能优化 > 文章内容
li
Unix环境下的Oracle调优原则
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-03-07   阅读:31  
本文章共2297字,分2页,当前第1页,快速翻页:
 

首先通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲这也可能不是一个正常的状态,因为cpu可能正等待IO的完成。除此之外我们还应观注那些占用系统资源(cpu、内存)的进程。

$ sar -u 1 10

HP-UX bilut42 B.11.11 U 9000/800 10/31/06

09:50:02 %usr %sys %wio %idle
09:50:03 4 1 30 65
09:50:04 7 1 27 65
09:50:05 2 0 25 73
09:50:06 1 1 21 77
09:50:07 1 0 19 80
09:50:08 8 1 18 73
09:50:09 12 1 22 65
09:50:10 9 1 22 68
09:50:11 8 0 21 71
09:50:12 9 1 20 70

Average 6 1 23 71

其中%usr是用户进程使用cpu的百分比,%sys是系统进程使用cpu的百分比,%wio 是等待IO完成使用cpu的百分比, %idle是空闲的百分比。如果%wio列值很大,说明IO存在问题,需要进行优化,一般情况下认为%wio大于35IO就存在问题。 如果%idle值很低,说明cpu已经满负荷。

当你的系统存在IO的问题,可以从以下几个方面解决:

1 联系相应的操作系统的技术支持对这方面进行优化,比如hp-ux在划定卷组时的条带化等方面。

2 查找Oracle中不合理的sql语句,对其进行优化

3 对Oracle中访问量频繁的表除合理建索引外,再就是把这些表分表空间存放以免访问上产生热点,再有就是对表合理分区。

关注一下内存

常用的工具便是vmstat,对于hp-unix来说可以用glance,Aix来说可以用topas,当你发现vmstat中pi列非零,memory中的free列的值很小,glance,topas中内存的利用率多于80%时,这时说明你的内存方面应该调节一下了,方法大体有以下几项。

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

www.ixdba.net


(
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 · 2 · 下一页>>


  上一篇: Oracle常见等待事件介绍   下一篇: Oracle中hints的调整机制研究
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·Oracle常见等待事件介绍
·ORACLE执行计划的一些基本概念
·Oracle的封锁机制研究
·Oracle锁简单经验介绍
·Oracle索引基本原理介绍
·Oracle数据库空间管理对系统性能...
·Oracle DBA优化数据库性能的心得...
·设计和保持Oracle数据库优良性能...
·Oracle中行迁移和行链接的清除及...
·如何从应用程序来优化Oracle数据...
·Oracle中hints的调整机制研究
·有效创建Oracle dblink的两种方式
·Oracle 10g的AWR性能优化工具使用
·Oracle中疑难问题的解决方案
·oracle表碎片的相关知识与解决方...
·如何整理Oracle数据库碎片
·全面解析Oracle数据库字符集问题
·AIX下oracle10g rac:ora-12545错...
·Oracle 10g RAC for AIX安装配置...
·ora-12514错误以及解决方案
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接