oracle 性能调优之旅开始

1、先看三篇帖子:

www.itpub.net/thread-137600-1-1.html

http://www.itpub.net/thread-124424-1-1.html

http://blog.itpub.net/post/96/14353

执行下面的语句:

SQL> show parameter area_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------
bitmap_merge_area_size               integer     1048576
create_bitmap_area_size              integer     8388608
hash_area_size                       integer     131072
sort_area_size                       integer     65536
workarea_size_policy                 string      AUTO

我们只要知道一个问题,在这里sort_area_size=64K 和 hash_area_size=128K  是针对每个会话的,并不是针对整个数据库的。

1G内存的服务器上,内给到400--500M 给SGA。。2G 能给到1G; 8G 能给到5G。。通常用一个参考的公式来表达这个问题:

os使用内存+SGA+并发进程数*(sort_area_size+hash_area_size+2M) < 0.7* 总内存

不过现在10g ,11g中先后推出了SGA自动管理,内存自动管理。基本不用dba手动设置了。。

2、一个调优的案例分析

这个看了书上的一个调优的案例,总结出来的,具体的内容没有写(参照《oracle数据库性能优化》盖国强等著P69),主要是想同个自己看的第一个例子,来熟悉一般的调优过程。

问题表述:应用是一个后台新闻发布系统,前端展现的是一个大型网站。java开发应用,通过中间件连接池连接数据库。通过连接访问新闻网页极其缓慢,后台发布管理具有同样的问题。通常需要十几秒才能返回。这种性能是用户不能忍受的。

解决过程:

1、检查并跟踪数据库进程:在前台单击相关的新闻条目页面,同时进行后台进程跟踪。

SQL> select sid ,serial# ,username from v$session;

    SID    SERIAL# USERNAME
------- ---------- ------------------
    135      21065
    137      13248 SYS
    141       1793
    147        157
    157          1
    159          3
    160          9
    162       9589
    163          1
    164          1
    165          1

    SID    SERIAL# USERNAME
------- ---------- ------------------
    166          1
    167          1
    168          1
    169          1
    170          1

除了sys及后台进程外,其他的使我们诊断的目标,要对几个进程启用相关的进程SQL_TRACE

SQL>exec dbms_system.set_sql_trace_in_session(sid, serial#,,true);

.......

在这里要跟踪不止一个后台的进程,反正只要认为可疑的进程都要跟踪的。此时,前台的页面进行刷新,等待一段时间。然后关闭SQL_TRACE

SQL>exec dbms_system.set_sql_trace_in_session(sid, serial#,,false);

2、检查TRACE文件:在udump目录下找到相应的跟踪文件,用tkprof工具查看。看到有一个问题,经过了3892次查询,才查询出一条对应的数据记录。在执行计划里,看到这条语句用的全表扫描。(现在要思考为什么不是走的索引?)

3、登陆数据库检查相应的表结构:发现每次查询所用的articleid 列 有索引,但是没有被用到

。为什么呢?检查表结构发现 articleid列时 VARCHAR2类型的数据。而我们查询时,articleid=20224456565这是一个数值的类型。Oracle在执行这个sql查询时,发生了潜在的数据类型转换(把表中的article转换为
number类型,然后和20224456565这个值比较,相同则取出。)很明显,这样需要全表的转换,执行了全表的扫描。。

4、解决办法:解决的办法超级简单,只需要在查询语句中数字两侧加上引单号:articleid=’
20224456565 ‘ 对于用单引号引起来的数字,oracle会认为是字符串、这样就消除了隐式类型的转换。再次查询,只需要查询2次,即可查询出一行。问题解决。

 

时间: 2024-12-09 04:25:00

oracle 性能调优之旅开始的相关文章

一次openresty http.lua 性能调优之旅

记一次openresty http.lua 性能调优之旅 1 背景 最近要用Nginx lua进行http 数据交互,因此想到了resty/http.lua,因此开启一段性能调优之旅. 2 发送HTTP GET请求代码 local ok, status, headers, code, body = hc:request { url = uri, method = "GET", } 很简单的一段代码,利用http.lua request 函数发送http get 请求并返回body及相关

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

oracle|心得|性能        很多的时侯,做Oracle DBA的我们,当应用管理员向我们通告现在应用很慢.数据库很慢的时侯,我们到数据库时做几个示例的Select也发现同样的问题时,有些时侯我们会无从下手,因为我们认为数据库的各种命种率都是满足Oracle文档的建议.实际上如今的优化己经向优化等待(waits)转型了,实际中性能优化最根本的出现点也都集中在IO,这是影响性能最主要的方面,由系统中的等待去发现Oracle库中的不足.操作系统某些资源利用的不合理是一个比较好的办法,下面把

看看葫芦里的药 ORACLE性能调优原则

oracle|性能 任何事情都有它的源头,要解决问题,也得从源头开始,影响ORACLE性能的源头非常多,主要包括如下方面: 数据库的硬件配置:CPU.内存.网络条件 1. CPU:在任何机器中CPU的数据处理能力往往是衡量计算机性能的一个标志,并且ORACLE是一个提供并行能力的数据库系统,在CPU方面的要求就更高了,如果运行队列数目超过了CPU处理的数目,性能就会下降,我们要解决的问题就是要适当增加CPU的数量了,当然我们还可以将需要许多资源的进程KILL掉: 2. 内存:衡量机器性能的另外一

Oracle性能调优条带宽度

无论是一个还是多个磁盘响应一个逻辑 I/O,我们都要求 I/O 能被一次处理.因而在确定了条带 深度的基础上,我们需要保证条带宽度  >= I/O 请求的大小 / 条带深度. 此外,考虑到以后系统容量的扩充,我们也需要规划好条带宽度. 如今大多数 LVM 都支持在线动态增加磁盘.也就是在磁盘容量不足时,我们可以随时将新磁盘加 入到一个已经使用的逻辑卷中.这样的话,我们在设置逻辑卷时就可以简单地将所有磁盘都归入到一 个卷中去. 但是,有些 LVM 可能还不支持动态增加磁盘.这时我们就需要考虑以后的

通向架构师的道路 第二十四天 Oracle性能调优(下)

4.4 Oracle表空间管理 Oracle的表空间文件都放在$ORACLE_HOME/oradata如/opt/oracle/product/10/oradata这样的目录中的 Oracle的表空间支持"热插拨" 即在Oracle运行时发觉表空间不够时可以直接打开Oracle的管理界面来动态给它划一块硬盘空间,或者甚至你又装了一块硬 盘进服务后,Oracle可以把表空间在运行时扩展到新插入的磁盘中.

通向架构师的道路 第二十四天 Oracle性能调优(上)

前言 这次,我们将在Linux下来动手完成Oracle数据库的安装与使用. Oracle本身是可以免费下载的包括 它 的企业版以及被它收购的Weblogic和Sun中的几乎任何东西你都可以拿来下载和使用,不像IBM和Tibco一些其它厂商,只有"试 用版"给你下载,Oracle的东西没有时间限制,你拿来做练习,搭实验环境都是没有任何的问题的. 但是,如果你出了 问题,需要用到Oracle的补丁或者是Oracle的技术支持,这就开始收费. Oracle就是这种"卖Service

一次oracle性能调优的实战

项目情况:是一个大型公司的内部办公系统,该系统有两个和一般企业应用不太一样的特点:一是用户量非常多,人员数达到2W左右,另一个是采用分级管理的形式,各个分公司数据分开管理. 我们的定位:我们是作为业务平台的提供商参与这个项目的,我们提供底层的开发平台,系统集成商在此基础上进行二次开发. 在项目从开发到部署的过程中遇到了很多的问题,也反映出很多问题. 一.怎么回事,跑得比猫还慢 项目开发完毕后部署在Ibm aix 小型机上,32G内存,16个cpu.应用服务器采用的是weblogic9.2,数据库

博客链接—Oracle性能调优

001 AWR概述:http://blog.itpub.net/29067253/viewspace-1990437/ 002 硬解析和物理读取与软解析和逻辑读取 :http://blog.itpub.net/29067253/viewspace-2054658/ 003 自动性能统计信息(一) :http://blog.itpub.net/29067253/viewspace-2093068/ 004 自动性能统计信息(二) :http://blog.itpub.net/29067253/vi

erlang网络编程的几个性能调优和注意点

问题描述 前些天给echo_**写了个非常简单的连接压力**程序,代码-module(stress_**). -export(). start() -> **s(12345). **s(Port) -> io:format("starting~n"), spawn(fun() -> **(Port) end), spawn(fun() -> **(Port) end), spawn(fun() -> **(Port) end), spawn(fun() -