ORA-04031 unable to allocate string bytes of shared memory ("string","string","string","string")  Cause More shared memory is needed than was allocated in the shared pool.  
Action If the shared pool is out of memory, either use the DBMS_SHARED_POOL package to pin large packages, reduce your use of shared memory, or increase the amount of available shared memory by increasing the value of the initialization parameters SHARED_POOL_RESERVED_SIZE and SHARED_POOL_SIZE. If the large pool is out of memory, increase the initialization parameter LARGE_POOL_SIZE.  

解决方案 »

  1.   

    楼上所指的shared_pool_size是否在init.ora中设置????设置完是否重启数据库?
      

  2.   

    在init<oracle_sid>.ora中,把share_pool_size设大点。
      

  3.   

    show parameter shareNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    hi_shared_memory_address             integer     0
    max_shared_servers                   integer     20
    shared_memory_address                integer     0
    shared_pool_reserved_size            big integer 1677721
    shared_pool_size                     big integer 46137344  --46M
    shared_server_sessions               integer     165
    shared_servers                       integer     1
    你150M?多大内存?
    业务多么?
    那还是减小的好。
      

  4.   

    SQL> show parameter shareNAME                                 TYPE    VALUE
    ------------------------------------ ------- -------------
    hi_shared_memory_address             integer 0
    shared_memory_address                integer 0
    shared_pool_reserved_size            string  7502059
    shared_pool_size                     string  150041190