ORACLE数据库10g,内存16G,经常占用10G左右,CPU使用5%,空闲95%。ORACLE个别表192G,一亿多条记录,ERP系统计算超级慢如何优化ORACLE数据库??如有实践经验,可以聘用。

解决方案 »

  1.   

    不懂 不过erp系统 表太大了 ,做历史表吧 
      

  2.   

    缺乏足够资料,只能泛泛而谈:
    针对个别表192G,应该限制对这个表的查询修改操作,表结构可以根据需要设置分区或者是分表
    数据库虽然占用了10G内存,但是未必就说明这10G内存被有效的利用了,经常遇到的一种情况是在创建数据库时,把数据库占操作系统内存的百分比调整到3/4比例,但是没有根据实际需要进行调整,导致oracle只是在程序运行时分配了很多内存而已。
    如果系统运行还是很慢,但是CPU使用率不高,那么是否可以看一下硬件的性能?比如磁盘IO的性能,配置CPU并行SMP情况等等
      

  3.   

    先分析下表的构成,索引什么的吧.比如你那个亿级的表是否分区,索引是否合理等等.
    然后分析下sql.
    最后再调整下sga什么的.
      

  4.   

    你需要打开ORACLE的性能分析功能,然后根据统计表中的信息进行分析,具体是哪些语句慢?比如 select sysdate from dua; 这种语句都很慢的话,你需要去考虑一下你的硬件配置了。第一步,把所有SESSION全部杀掉,然后仅用你自己的一个SESSION连上,看 select 1 from dual; 看结果如何。
      

  5.   

    10g的数据库应该是采取的自动内存的管理,
    你可以查看下
    cache命中率超过99%,正常。buffer命中率为99%以上、tablespace使用率,
    如果前两个参数比较小。。你就要采取适当的方案进行调整。做好做个statspack请专家分析下给出方案。。
      

  6.   

    如果有钱俺可以优化(民工的价格别找俺),这种库优化是比较简单的事,可能会做一些规划上的调整与SQL优化。
      

  7.   

    招DBA,没个1w,甭开价了,
    才个把亿的数据,
    要知道,oracle 的对大数据量的查询不是在cpu,关键是磁盘IO,
    lz要知道sga,db_catch,pga,temp tablespace,undo tablespace
    这些都是干什么用的问题解决的一小步,
    个把亿的数据表肯定要partition 至于你要采用哪种,视情况而定,还有index优化,还有你的sql优化等等
      

  8.   

    你的数据量太大了,是否有分区,看看TOP SQL 
    再试试能否优化TOP SQL
      

  9.   

    首先从需求角度考虑,减少查询次数,简化统计方法,是效率最高的优化;
    再次从DB的配置上考虑,合理设置SGA区等大小,提升整个DB的性能;
    然后再从减小源表大小、及时归档、分区等角度优化DB结构;
    后面才是优化具体的SQL,创建索引等;
    如果有钱,也可以考虑加CPU/内存/磁盘等途径。
      

  10.   

    调优是需要经验的,估计也只有现场多观察才能发现问题,实在不行可以找个OCM到公司现场调优