这个问题不是一两句话可以搞定的,大部分与bug有关的,问一下Oracle或可以参照metaline的146599.1这个note.

解决方案 »

  1.   

    这种方法只有服务端(有 数据库)才产生的.在分配内存的时候出现问题,因为需要的内存大于设置的值。
    只要把 共享内存 加大就可以解决分配的问题啦.
    通常在 Oracle 有两种方法操作( DBA Studio 的图形界面,和 Pl/SQL 语句)如下用 图形界面 来解决
    打开 DBA Studio ,"例程" -> 数据库 -> 之后在右边的下面有一个 "所有初始化参数"
    按下之后,弹出一个对话框。
    选定: SHARED_POOL_RESERVED_SIZE 和 SHARED_POOL_SIZE 的值,把它们分别增加的可以啦~
    按 "说明" 还会对你以上的参数有详细的说明。
      

  2.   

    参数说明 (来自 DBA Studio)SHARED_POOL_RESERVED_SIZE 的参数说明:
    说明:指定要为较大连续共享池内存请求而保留的空间,以避免由碎片引起的性能下降。该池的大小应符合这样的条件:能存储为防止对象从共享池刷新而普遍要求的所有大型过程和程序包。 
    值范围:SHARED_POOL_RESERVED_MIN_ALLOC 到 
     SHARED_POOL_SIZE 的一半(以字节计)。 
    默认值:SHARED_POOL_SIZE 值的 5%
    ===========================================SHARED_POOL_SIZE 的参数说明:
    说明:以字节为单位,指定共享池的大小。共享池包含如: 共享游标、存储的过程、控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能。 
    值范围:300 KB - 根据操作系统而定。 
    默认值:如果是 64 位操作系统,值为 64MB;其它情况下,值为 16MB。
      

  3.   

    SHARED_POOL_SIZE 设置多大为宜?偶服务器有2G的RAM
      

  4.   

    以上方法应该可以解决的啦~  ... Good luck ...另外:
    如果最大的池(连接池)不够的话,就把 LARGE_POOL_SIZE 这个参数增大. (方式同上)LARGE_POOL_SIZE 的参数说明:
    说明:指定大存储池的分配堆,它可被多线程服务器 (MTS) 用作会话内存、用作并行执行的消息缓冲区以及用作 RMAN 备份和恢复的磁盘 I/O 缓冲区。 
    值范围:600K (最小值);>= 20000M (最大值是根据操作系统而定的)。 
    默认值:0,除非配置了并行执行或 DBWR_IO_SLAVES-----------------------------------------------------------------------------
    出现这种的情况也不一定是坏事呀,因为库的访问量大(业务多)吧 :)  (那钱就赚得多)
    不要因为有错误就害怕,其实 Oracle 也不是你想的那样. :)... Good luck ...
      

  5.   

    一般默认才 16MB ~如果 服务器 是数据服务器,可以设置 几百M 呀 :)