各位高手好
          小弟最近遇到很麻烦的事 希望各位大侠指点  
          我最近接手了一个离职同事的项目  项目处于上线三年状态 我做的是银行的项目 数据量比较大
          接手这项目后无非是维护罢了 但最近用户都反映系统慢  领导就交给我了一个优化数据库的 任务
          要是开发 或者简单表结构设计还得可以 要是做数据库优化小弟功底实在是不够啊 
          请个大侠帮帮忙指点下 这周就要我出方案 头疼
          
          银行有些业务复杂 一个检索 要套10多个子查询 看着都迷糊 还没注释 (写的人太缺德了)
          数据库 存在大量试图,而且有些视图建立在视图基础之上 
          我现在的想法是 建立历史表 把一部分数据移出去 
          在就是 有些地方改成存储过程 建临时表 加索引
          
          小弟跪求各位大侠指点 小弟也非常想学习这方面知识 做优化真的要些功力
           
          请给点方案或建议  谢谢

解决方案 »

  1.   

    google到的,希望有些帮助!
    http://tech.it168.com/db/o/2006-10-26/200610261121253.shtml
    http://oracle.chinaitlab.com/serial/717482.html
    http://database.51cto.com/art/201001/181249.htm
      

  2.   

    1.不要建什么历史表了,数据量大的表通通改成分区表,建好分区索引,容易维护又能提高性能。
    2.改成存储过程是不会提高系统性能的。
    3.做一个awr report,主要关注数据库的top 5 wait.
      

  3.   

    做数据库优化,总要先调查是什么原因导致的系统慢,然后根据原因再想解决办法吧!
    是sql文写的有问题,还是表结构创建的问题,还是数据量的问题,不一定你在别的地方做的优化在这里就一定好使,还是先好好调查下吧,银行的项目可不能出一点差错的。。
      

  4.   

    对 楼上说的对 你先要找到系统慢的原因,先分析AWR report出的文件 找到系统慢的原因。一般不要在生产库上随便调。分区当然是少不了的
      

  5.   

    其实有几张大的表 我们是做了分区的  
    我这几天观察 sql质量   和   数据量上都存在问题的 
    这个项目还是全国都在用的 是得谨慎啊 压力挺大 不过借这个机会研究学习下也不错
    我现在只是 出个方案 下周项目组还得开会讨论 
    就是感觉无从下手
      

  6.   

    楼主能发下具体的AWR 收集的report看看吗
      

  7.   

    确实如此,金融类大项目挺能锻炼人的~
    ---------------------------------------
    你说sql和数据量上都有问题:那么sql的优化和表分区或索引,结构估计要好好考虑了,具体的东西你再详细调查下,然后发出来大家一块讨论讨论~
      

  8.   

    对于大数据量数据处理的优化,通过AWR是不能带来太大帮助的.
    由于大数据量处理时系统负荷的突变特性,导致AWR所分析的对象本身就没有特别明显的规律可循,除非在系统参数配置上出了明显的不妥,否则根本无法从AWR报表中看出端倪.
    从我的经验来看,优化着手之处首要考虑就是对业务的理解,建模和应用逻辑的化简.一般未经化简的系统会因此在IO和网络传输上浪费30%~70%的带宽,过多视图的嵌套无疑是违背这一原则的,建议在完成可行的数据库重构后,先规划数据流,避免数据的无序流转,随后的所有数据处理逻辑遵从数据流框架设计.
    其次考虑系统参数和物理设计的调优,根据数据不同的访问特性设计表分区,表压缩以及存储分布与分配,同时考虑索引设计,宽表合理进行纵向切割避免行链和行迁移,避免clob和long的使用.参数上面:在实例级调整最大IO吞吐量,hash区,排序区大小,合理使用数据库块大小.合理分配操作系统资源.
    批处理应用和事务型应用采取隔离措施,尽量避免同时争夺资源,若条件允许,应物理上分离这两类应用主机,使得批处理应用在处理大数据量期间的参数配置能满足最大限度的均衡利用所有可用系统资源.
    最后优化单个SQL,针对执行计划调优,使用适当的连接方法(大数据量下hash比较常见)和排序,根据cpu和有效内存资源,使用分析函数解决太多全表扫描带来的IO.合理分解SQL的复杂度,充分利用系统的并行能力.总之,大数据量处理过程的优化原则就是:避免不必要的或过度使用系统资源,在此基础上根据系统可用资源最大程度的平衡各种资源的利用率,使其处于饱和前的峰值状态
      

  9.   

    系统已经在运行了  又不能明显看出问题 
    不做AWR做什么
      

  10.   

    明天 就得出方案了  先按各位的意见先整理个思路吧  做分区、 AWR、  调优SQL
    其实我们主要业务表不出 10张 其中 四张数据量比较大
    这两天晚上看了好多资料 感觉oracle博大精深啊 自己数据库知识太匮乏 惭愧
      

  11.   

    也许是数据量大了,程序跑起来慢了,好好的优化sql语句,用些hint试试看,特别是视图比较多的时候,尝试no_merge尝试下,我们这边也是很多复杂的存储过程,都是这样处理的
      

  12.   

    建议找一个ora优化调优专家和应用系统的专家联合分析慢的瓶颈,服务器硬件,网络,存储,包括客户端环境,应用系统,数据库,开发的接口,系统慢之前和之后有没有什么变化....
    这些东西要一个一个排除后,才好做oracle调优的,oracle调优肯定要找供应商的,风险太大
    先在测试系统弄,完了在备份再在正式系统数据库中实现,除了问题还能恢复过来的