日期:2014-05-16  浏览次数:20875 次

关于oracle性能的问题
最近一直研究数据库性能的问题,不知道高手们在数据库出现慢的时候都从哪些方面入手。

另外在提问几个问题,目前我们的数据库总体比较慢(unix上)   用top命令看了,cpu和内存使用量都不大,buffer   cahe   ,临时表空间,都不小,各种命中率也都还可以,我只会检查这些参数,不知道是什么问题,请高手给点拨一下。

另外   我用trace追踪几个进程,原始trc文件看不太懂,tkprof后好像好多信息都过滤掉了,除了能看到执行的语句外没有什么太多信息,请问高手们都是怎么从trc文件中提取有用信息的,有没有相关的文档给   推荐下,或者您受累给我发一下     workhard123@sohu.com,谢谢先。  

希望大家对这个问题进行讨论一下,把相关的经验介绍下,把知道共享一下,我对这方面很感兴趣,呵呵,谢谢大家先

------解决方案--------------------
我一般是先判断是应用程序使用觉得慢还是直接在数据库中查询慢,如果是前者,那么不一定就是DB慢,可能有其他原因。查DB慢,操作系统中查CPU、内存、IO(包括磁盘和网络),数据库中查wait事件、lock等,还有就是用statspack收集各统计值并生成报告。
------解决方案--------------------
当出现系统慢时,首先要判断是否是数据库慢.
这个可以通过查看等待事件就知道了,等待事件当前有多少? 什么样的等待事件? 和平时相比何如? 答案将是比较容易得出的.

如果不是数据库的问题,那么就要去找其他的原因,比如网络,中间件层的系统资源等等.

如果是数据库的问题,还是要从等待时间入手. 什么等待最多? 为什么会有这样的等待? 是因为锁呢,还是因为某些糟糕的语句被频繁执行,性能问题给凸显出来了,或者还是有用户在做大批量的数据处理,占用了过多的资源? 等等了,都需要去考虑一下,具体问题再具体解决. 当然,statspack,或者awr等都是不错的工具,可以结合起来使用.

至于trace ,网上有很多例子,去搜一下吧.

上面只是我个人观点,如有不对,请大家指正.