我公司的oracle数据库性能下降很快,我查了数据服务器的射中率,只有66%,不知道如何调整,盼高手指点

解决方案 »

  1.   

    我的initorcl为:
    db_name = orcl
    db_files = 1020
    control_files = ("d:\orant\database\ctl1orcl.ora", "d:\orant\database\ctl2orcl.ora")
    db_file_multiblock_read_count = 32
    db_block_buffers = 2300
    shared_pool_size = 280000000
    log_checkpoint_interval = 8000
    processes = 100
    dml_locks = 500
    log_buffer = 32768
    dbwr_io_slaves=4
    sequence_cache_entries = 100
    sequence_cache_hash_buckets = 89
    #audit_trail = true
    #timed_statistics = true
    background_dump_dest = d:\orant\rdbms80\trace
    user_dump_dest = d:\orant\rdbms80\trace
    db_block_size =8192
    compatible = 8.0.5.0.0
    sort_area_size = 65536
    log_checkpoint_timeout = 0
    remote_login_passwordfile = shared
    max_dump_file_size = 10240
    log_archive_start=true
    log_archive_dest=d:\orant\database\archive
    log_archive_format=%T%S.arc
      

  2.   

    不要着急调整这个射中率,判断具体问题,解决根本原因。
    一句两句也说不清,强烈推荐机工出版的《Oracle性能优化技术内幕》
    非常好,也适合你的情况
      

  3.   

    db_block_buffers = 2300
    ------------------------
    太小了,至少分配SGA总容量的50%-60%.shared_pool_size = 280000000
    ----------------------------
    共享池分配了280MB,现在还不好说是否合适?
    你的系统总内存是多少?dbwr_io_slaves=4
    ----------------
    操作系统是什么? UNIX? I/O子系统性能很差吗?
    如果不是,不要分配这么多.db_file_multiblock_read_count = 32
    ----------------------------------
    全表扫描的情况多吗? 如果不是,设置小一点.processes = 100
    ---------------
    并发用户最大有多少? 可能小了点sort_area_size = 65536
    ----------------------
    应用中有没有大数据的排序操作(order by,group by,distinct等)?
    如果有,设置大一些.#timed_statistics = true
    如果要实时监控,最好将这个开关打开(去掉#)max_dump_file_size = 10240
    ---------------------------
    每个dump文件为5m,比较大,不太方便查看,设置小一点.
      

  4.   

    db_block_buffers = 2300  适当加大
    shared_pool_size = 280000000 好像不是越到越好 即使你内存富裕 (不信你自己单独调整实施看结果如何)
    sort_area_size = 65536 太小 5-10m 一般足够用关键是还是看应用情况