论坛首页 综合技术论坛

关于oracle的性能

浏览 9437 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-13  
最近tuxedo频繁出现服务堵塞现象,后来经过测试发现问题出在oracle10G的问题上。

10G自动分析了表,因此执行计划中看到没有用到索引,而结果显然是CBO选择了一条效率并不高的扫描方式进行查询,导致上面结果。

我想问的是,有没有办法解决上面的问题,除了升级oracle。
   发表时间:2008-01-13  
既然你知道是CBO选择了效率不搞的方式,那就手动干预Oracle选择更好的方式啊。
一般的Oracle 的SQL里有index hint方式可以使用,
比如select * from tableA use index(better_index_name) inner join TabelB...
0 请登录后投票
   发表时间:2008-01-13  
但是这样的话,我们系统非常庞大,这势必要更改大量的代码,几乎不可能。

所有,有没有从oracle的配置上入手解决问题?

因为这个问题在9I上是没有的,所以...唉。
0 请登录后投票
   发表时间:2008-05-28  
采用哪种优化模式是可以设置的吧,你完全可以不用CBO啊。
但实际上,长久看,CBO是一个更好的优化方式。特别是需要长期维护的大系统,否则以后性能问题会不断出现。
0 请登录后投票
   发表时间:2008-05-29  
nooalou 写道
但是这样的话,我们系统非常庞大,这势必要更改大量的代码,几乎不可能。

所有,有没有从oracle的配置上入手解决问题?

因为这个问题在9I上是没有的,所以...唉。

那你就退回到9i不就得了?
这个是最简单的方法。
另外,加入index hint也不会是特别大的工作量,我相信不是每个语句都需要,而应该只有少量的语句无法自动选择最优的查询计划。
0 请登录后投票
   发表时间:2008-06-15  
Lucas Lee 写道
既然你知道是CBO选择了效率不搞的方式,那就手动干预Oracle选择更好的方式啊。
一般的Oracle 的SQL里有index hint方式可以使用,
比如select * from tableA use index(better_index_name) inner join TabelB...



首先这个是mysql的hint方式;
其次,在sql中明确指出使用某个index的hint是非常不可取的,会对以后的维护造成非常大的问题,某天你为了性能考虑,需要调整一个索引的时候,索引名称变了,你怎么办?这个时候这个hint就是一个失效的hint,天知道这个时候oracle会走出一个什么样的执行计划,所以非到万不得已的情况,建议还是不要使用hint,尤其是指明索引的hint;
再次,你可以通过关闭oracle自动分析功能,可以通过如下方式:
    exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');
    或者:
    调整参数:STATISTICS_LEVEL=BASIC
0 请登录后投票
   发表时间:2008-08-21  
优化SQL这个你一定要学好,别总从oracle身上找问题!一般开发人员对sql语句的编写都是很垃圾的,尤其是不懂oracle的开发人员
0 请登录后投票
   发表时间:2008-08-21  
或者你贴出来sql语句! 你去itpub看看oracle的提问艺术,我给你贴过来

提问你的oracle problem
0。尝试在google,论坛,metalink,online document里搜索。
1。写清楚你的执行log,报错信息,写清楚DB version , OS
2。Instance 方面的问题,请贴出alertlog
3。network的问题,贴出server的listener.ora , sqlnet.ora 并运行lsnrctl service, 贴出client的tnsnames.ora , sqlnet.ora ,并运行tnsping
4。DB总体性能问题,请于peak time做statspack,并上传statspack report。同时附上CPU/MEM配置,以及CPU IDLE/free menory的情况
5。SQL性能问题,列出当前SQL,以及PLAN。同时应提供表结构,index情况,Table的record数。CBO/RBO,table是否analyze等信息。
6。确保你的问题是Oracle相关。
0 请登录后投票
   发表时间:2008-12-02  
oracle自认为比人聪明了,所以10g以后版本都默认设置CBO方式,实际上呢,CBO就是个鸡肋,经常给人找麻烦。还不如9i稳定。
0 请登录后投票
   发表时间:2008-12-03  
zfree 写道
oracle自认为比人聪明了,所以10g以后版本都默认设置CBO方式,实际上呢,CBO就是个鸡肋,经常给人找麻烦。还不如9i稳定。

呵呵,是吗?那也是oracle的人认为比一般人聪明吧。一般导致cbo无法选择最优的方案,是你没有告诉oracle相关的信息。在10g,cbo已经比较好了,这个已经被大多数使用者接受了,好好找找自己的哪儿没有弄好
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics