动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.Oracle回滚表空间丢失或损坏处理.
.使用Oracle 8.0数据库的几点经验.
.Relation Algebra.
.Linux上应用isdn的解决方案.
.轻松六步使你的Oracle存储过程迅.
.TestKing Oracle 1z0-026 V3.
.解决Oracle 10g library内存分配.
.在Oracle里设置访问多个SQL Serv.
.查看文件内容的特殊方法.
.如何在Linux/390中添加新卷.
.WIN平台下仅开一个端口让Oracle穿.
.Oracle7.X 回滚表空间数据文件的.
.在标识列里插入特定的值.
.PL/SQL过程.
.oracle/sql server procedure 导.
.Oracle 连接常见错误及解决方法.
.Oracle的数据库对象中表与视图.
.关于SQL的执行计划。.
.Oracle系统实用工具介绍.
.配置Oracle Enterprise Manager过.

Unix环境下Oracle数据库优化心得介绍

发表日期:2008-2-9 |


    很多的时侯,做Oracle DBA的我们,当应用治理员向我们通告现在应用很慢、数据库很慢的时侯,我们到数据库时做几个示例的Select也发现同样的问题时,有些时侯我们会无从下手,因为我们认为数据库的各种命种率都是满足Oracle文档的建议。 实际上如今的优化己经向优化等待(waits)转型了,实际中性能优化最根本的出现点也都集中在IO,这是影响性能最主要的方面,由系统中的等待去发现Oracle库中的不足、操作系统某些资源利用的不合理是一个比较好的办法,下面把我的一点实践经验与大家分享一下,本文测重于Unix环境。   一、通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲这也可能不是一个正常的状态,因为cpu可能正等待IO的完成。除此之外我们还应观注那些占用系统资源(cpu、内存)的进程。 1、如何检查操作系统是否存在IO的问题?使用的工具有sar,这是一个比较通用的工具。 Rp1#sar -u 2 10 即每隔2秒检察一次,共执行20次,当然这些都由你决定了。 示例返回:
  HP-UX hpn2 B.11.00 U 9000/800 08/05/03
  18:26:32 %usr %sys %wio %idle
  
注:我在redhat下查看是这种结果,不知%system就是所谓的%wio。
  Linux 2.4.21-20.ELsmp (YY075) 05/19/2005   10:36:07 AM CPU %user %nice %system %idle   10:36:09 AM all 0.00 0.00 0.13 99.87   10:36:11 AM all 0.00 0.00 0.00 100.00   10:36:13 AM all 0.25 0.00 0.25 99.49   10:36:15 AM all 0.13 0.00 0.13 99.75   10:36:17 AM all 0.00 0.00 0.00 100.00   10:36:17 AM CPU %user %nice %system %idle   10:36:19 AM all 0.00 0.00 0.00 100.00   10:36:21 AM all 0.00 0.00 0.00 100.00   10:36:23 AM all 0.00 0.00 0.00 100.00   10:36:25 AM all 0.00 0.00 0.00 100.00
  
    其中的%usr指的是用户进程使用的cpu资源的百分比,%sys指的是系统资源使用cpu资源的百分比,%wio指的是等待io完成的百分比,这是值得我们观注的一项,%idle即空闲的百分比。假如wio列的值很大,如在35%以上,说明你的系统的IO存在瓶颈,你的CPU花费了很大的时间去等待IO的完成。Idle很小说明系统CPU很忙。像我的这个示例,可以看到wio平均值为11说明io没什么非凡的问题,而我的idle值为零,说明我的cpu已经满负荷运行了。   当你的系统存在IO的问题,可以从以下几个方面解决: *联系相应的操作系统的技术支持对这方面进行优化,比如hp-ux在划定卷组时的条带化等方面。 *查找Oracle中不合理的sql语句,对其进行优。 *对Oracle中访问量频繁的表除合理建索引外,再就是把这些表分表空间存放以免访问上产生热点,再有就是对表合理分区。 常用的工具便是vmstat,对于hp-unix来说可以用glance,Aix来说可以用topas,当你发现vmstat中pi列非零,memory中的free列的值很小,glance,topas中内存的利用率多于80%时,这时说明你的内存方面应该调节一下了,方法大体有以下几项。 *划给Oracle使用的内存不要超过系统内存的1/2,一般保在系统内存的40%为益。 *为系统增加内存。 *假如你的连接非凡多,可以使用MTS的方式。 *打全补丁,防止内存漏洞。 3、如何找到点用系用资源非凡大的Oracle的session及其执行的语句。 Hp-unix可以用glance,top,IBM AIX可以用topas,此外可以使用ps的命令。通过这些程序我们可以找到点用系统资源非凡大的这些进程的进程号,我们就可以通过以下的sql语句发现这个pid正在执行哪个sql,这个sql最好在pl/sql developer,toad等软件中执行, 把<>中的spid换成你的spid就可以了。

  SELECT a.username,a.machine,a.program,a.sid,a.serial#,
  a.status,c.piece,c.sql_text from v$session a,v$process b,
  v$sqltext c WHERE b.spid='ORCL' AND b.addr=a.paddr AND
  a.sql_address=c.address(+)order BY c.piece
  
我们就可以把得到的这个sql分析一下,看一下它的执行计划是否走索引,对其优化避免全表扫描,以减少IO等待,从而加快语句的执行速度。 提示:我在做优化sql时,经常碰到使用in的语句,这时我们一定要用exists把它给换掉,因为Oracle在处理In时是按Or的方式做的,即使使用了索引也会很慢。 比如:
  SELECT col1,col2,col3 FROM table1 a
  WHERE a.col1 not in (SELECT col1 FROM table2)
  
可以换成:
  SELECT col1,col2,col3 FROM table1 a
  WHERE not exists
  (SELECT 'x' FROM table2 b
  WHERE a.col1=b.col1)
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做以简要的说明: a、buffer busy waits,free 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
  
a、2开异步IO,IBM这方面简单得多,hp则麻烦一些,可以与Hp工程师联系。 b、db file sequential read,指的是顺序读,即全表扫描,这也是我们应该尽量减少的部分,解决方法就是使用索引、sql调优,同时可以增大db_file_multiblock_read_count这个参数。 c、db file scattered read,这个参数指的是通过索引来读取,同样可以通过增加db_file_multiblock_read_count这个参数来提高性能。 d、latch free,与栓相关的了,需要专门调节。 e、其他参数可以不非凡观注。 其他的优化手段似乎主要集中在SQL查询语句上面,Oracle本身也提供了优化器。
上一篇:Oracle数据库字符集转换规律全面剖析 人气:520
下一篇:Oracle SQL性能优化技巧大总结 人气:712
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-19 久溜溜电影系统(免维护+小偷) v5
2008-8-19 晴天免费电影系统完整版(带迅雷采
2008-8-19 Twinklous File Manager v1.5
2008-8-19 千米旅游网站管理系统 v2.0
2008-8-19 资阳人才网 v2.0
2008-8-19 全球商务B2B网站系统 v1.0 asp版
2008-8-19 动域网主机代理管理系统 v1.0
2008-8-19 JH2008-企业网站(全站生成html)
2008-8-19 GlobalEC C2C管理系统 v1.0
2008-8-16 iLaba Player(小喇叭播放器) v2.
2008-8-16 DoubleClickFix 鼠标双击修正工具
2008-8-16 CrystalCPUID 4.15.2.451
2008-8-16 VeryCD 电驴(easyMule) 1.0.4 Bu
2008-8-16 uTorrent 1.8 Build 11813 - Sta
2008-8-16 比特精灵(BitSpirit) v3.3.2.287
2008-8-16 StayInTune音叉 v1.0 破解版
2008-8-16 iChing《周易》汉化补丁 v1.0
2008-8-16 Starmap星空图v1.0汉化破解版
  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵