当前位置:  数据库>oracle

Unix平台Oracle数据库优化简介

    来源: 互联网  发布时间:2017-03-21

    本文导语: 如今的优化己经向优化等待(waits)转型了,实际中性能优化最根本的出现点也都集中在IO,这是影响性能最主要的方面,由系统中的等待去发现Oracle库中的不足、操作系统某些资源利用的不合理是一个比较好的办法,本文测重于Uni...

如今的优化己经向优化等待(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)


    
 
 

您可能感兴趣的文章:

  • UNIX下面能否使用类似BCP的程序连接另一台UNIX下面的Sybase数据库进行数据处理
  • 请问,在unix下,关闭oracle数据库和重起unix,的正确顺序和命令应该是怎样的!请教!
  • 有什么好的介绍UNIX使用和管理的书吗?UNIX下最常用的数据库是什么?
  • 怎样可以在WINDOWS下连到UNIX下的SYBASE数据库进行编程?
  • unix下一般用什么数据库。如(金融)行业!
  • windows应如何访问UNIX/LINUX系统下的数据库?
  • unix系统有没有本地数据库?类似windows下的access
  • 如何在sco/unix5.0下同时安装多个数据库(oracle和informix)???
  • http://www.itpub.net 论坛更新数据库,速度更快,欢迎大家前去讨论unix&linux知识!
  • 请教:关于[linux/unix环境下连接到Oracle数据库后断开连接]的问题
  • 我想用unix系统,主要是为了编程和数据库,用哪个好啊?
  • 有谁能推荐在unix下用oracle数据库开发软件的书籍吗?
  • Unix系统下如何将oracle数据库备份
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • putty远程链接上unix服务器,如何操作安装在上面的PostgreSQL数据库?
  • UNIX下数据库的问题
  • 100分求 HP UNIX下如何安装SYBASE 数据库?
  • 请问去银行笔试unix ,数据库原理,都考哪些东东
  • 开发Unix下的数据库应用程序有什么好的参考书?
  • unix下C++代码中如何进行数据库操作?给个完整代码学习学习
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在unix下编写socket,从远端接收数据并存入db2数据库
  • UNIX和Windows数据存取方式不同吗?
  • 大家在UNIX下都使用什么数据库?使用什么做数据开发?
  • 请教unix系统下高效数据传输的方法
  • Unix 命令行数据复制程序 ddpt
  • 如何在UNIX/LINUX下实现数据包拦截?
  • 请问,我如何在unix下用c/c++连结数据(oracle)??在线等待!!!!
  • 网页中的数据如何传递到Web服务器(Unix操作系统)上的c程序中?
  • unix下如何读光驱,软驱中数据?
  • 请问在UNIX系统下C语言中的数据类型转换的问题
  • UNIX下SOCKET怎么能象WINDOWS下用通信事件来响应接收数据呢?
  • 在UNIX下用c/c++怎么能实现大数据文件的快速读写?
  • unix如何进行数据备份?
  • unix多线程数据传递问题
  • 如何在两台UNIX服务器间传递XML数据
  • unix 下web应用程序调用 一个写数据库的perl脚本 的问题。
  • Linux或者Unix下的数据库系统有哪些,哪些是免费的?
  • 急求 unix 与linux在文件存储上 和数据存储上有哪些不同 希望各路英雄帮忙
  • unix系统下怎样在不同大小的硬盘之间整盘对拷,包括数据库
  • 如何启动和关闭安装在UNIX下的ORACLE数据库?
  • java命名空间java.util.regex类pattern的类成员方法: unix_lines定义及介绍
  • 刚刚接触Unix系统和Unix编程。急需Unix下多线程程序设计和网络Socket程序设计方面的资料。
  • unix/Linux下c++ boost thread库读写锁介绍
  • 关于UNIX的历史 : 1973年,K.Thompson和D.M.ritchie,用C改写UNIX。那么,在此之前,UNIX是用什么写的?
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • 没有unix系统我如何学习unix
  • php将unix时间戳转换成字符串时间函数(date)
  • unix盘哪里有下载的??哪里有比较好的unix论坛??万分感谢!!!!!!!!!
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • 急!装完unix5.06,再装win2000。重启后不能进unix.
  • UNIX特急!!!digital unix问题,请专家快来!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3