如上

解决方案 »

  1.   

    是我的程序的问题?
    是ini参数(或内核参数)的设置不合理?
    还是这个本来就是oracle的bug?如果是第一个原因,我该怎么监测?
    如果是第二个原因,那我该如何调整?
      

  2.   

    init.ora
    process = XXX
    设大些,试试
      

  3.   

    应该是你的操作系统的内存不足了注意看看出错时候你的内存使用状况
    给出内存大小,最好给出init文件内容
      

  4.   

    init文件内容呢?
    是不是有mts
    如果有 large_pool_size多大?
    sort_area_size 多大?机器是不是还同时跑着别的东西?
    当时负载怎样?
    这个问题经常出现么?
      

  5.   

    ini:_lm_direct_sends = lkmgr
    _sqlexec_progression_cost = 0
    control_files = "/dev/vgblr5data01/rctrl_1"
    control_files = "/dev/vgblr5data01/rctrl_2"
    control_files = "/dev/vgblr5data01/rctrl_3"
    db_block_buffers = 20000
    db_block_size = 8192
    disk_asynch_io = TRUE
    distributed_transactions = 100
    dml_locks = 10000
    gc_files_to_locks = 1=3000:2-6=128EACH:7-115=1280EACH
    java_pool_size = 104857600
    job_queue_interval = 60
    job_queue_processes = 4
    large_pool_size = 104857600
    lm_locks = 221419
    lm_ress = 208552
    log_archive_dest_1 = "LOCATION=/arch"
    log_archive_format = "arch_%t_%s.arc"
    log_archive_start = FALSE
    log_buffer = 20971520
    log_checkpoint_interval = 1000000
    max_enabled_roles = 30
    open_cursors = 5000
    open_links = 10
    os_authent_prefix = ""
    parallel_server = TRUE
    processes = 1024
    remote_login_passwordfile = EXCLUSIVE
    rollback_segments = rbs_n1e
    rollback_segments = rbs_n1a
    rollback_segments = rbs_n1d
    rollback_segments = rbs_n1c
    rollback_segments = rbs_n1b
    rollback_segments = rbs_n1f
    rollback_segments = rbs_n1h
    rollback_segments = rbs_n1y
    rollback_segments = rbs_n1u
    rollback_segments = rbs_n1v
    rollback_segments = rbs_n1w
    rollback_segments = rbs_n1x
    rollback_segments = rbs_n1t
    rollback_segments = rbs_n1z
    rollback_segments = rbs_n1n
    rollback_segments = rbs_n1o
    rollback_segments = rbs_n1p
    rollback_segments = rbs_n1g
    rollback_segments = rbs_n1s
    rollback_segments = rbs_n1r
    rollback_segments = rbs_n1i
    rollback_segments = rbs_n1m
    rollback_segments = rbs_n1l
    rollback_segments = rbs_n1k
    rollback_segments = rbs_n1j
    rollback_segments = rbs_n1q
    session_cached_cursors = 50
    shadow_core_dump = none
    shared_pool_size = 419430400
    sort_area_retained_size = 1048576
    sort_area_size = 419430400
    thread = 1
    主机主要是跑oracle。
    当时负载比较高(因为需要周期性的进行巨量的计算),不过不经常出现。我经常使用重启系统来解决这个问题。
    但想知道怎么解决这个问题。
      

  6.   

    out of process memroy..... 
    Oracle错误号?
      

  7.   

    faint and  faint and  faint  :)如果你没有使用java 存储过程,请把这个降到1M,就算有java存储过程,也未必这么大吧
    java_pool_size = 104857600估计没有mts吧,你的应用情况根本就不能使用mts
    请把这个降低到10M以内,如果没有使用 rman 可以更小,给1M就行了
    这个基本没有什么用场
    large_pool_size = 104857600请把这个降低到3M以内,超过3M在任何平台下都没有丝毫意义
    建议1M足够
    log_buffer = 20971520下面这个参数估计没有产生实质性影响。不过这个值简直是夸张
    给10000足够了
    log_checkpoint_interval = 1000000这个参数太大了,用不了这么多,因为你整体内存就不是特别大
    给50M到100M一般应该够了
    shared_pool_size = 419430400
    下面两个参数是造成你的饿问题的根源!!!!!!!!!
    sort_area_retained_size = 1048576  这个给64K吧这个参数给这么大,你会导致100G的内存的服务器都可能会被200个session搞死的,这个参数给1M就足够了,如果有特殊运行的大查询,可以 单独
    alter session set sort_area_size = 10240000sort_area_size = 419430400 从来没见过这么让我吃惊的设置!!!!!
    BTW:把调整这些参数所节约出来的内存,加入到data buffer的参数db_block_buffers 中去最后两个参数的内存使用,不在你的SGA内,是额外从os获取的,是UGA,在PGA 内,这是根源
    并且这个参数是针对每个session的,明白你的设置是多么可怕了吧