Oracle11g 无法分配x字节的共享内存

Oracle11g 无法分配x字节的共享内存,oracle11g,oracle-xe,datapump,Oracle11g,Oracle Xe,Datapump,当我试图备份我的oracle数据库时,我发现了以下错误 UDE-04031: operation generated ORACLE error 4031 ORA-04031: unable to allocate 16 bytes of shared memory ("shared pool","SELECT j ob_id FROM v$datapum...","SQLA","tmp") ORA-06512: at "SYS.KUPV$FT_INT", line 2904 ORA-06512:

当我试图备份我的oracle数据库时,我发现了以下错误

UDE-04031: operation generated ORACLE error 4031
ORA-04031: unable to allocate 16 bytes of shared memory ("shared pool","SELECT j
ob_id FROM v$datapum...","SQLA","tmp")
ORA-06512: at "SYS.KUPV$FT_INT", line 2904
ORA-06512: at "SYS.KUPC$QUE_INT", line 572
ORA-25254: time-out in LISTEN while waiting for a message
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3326
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4551
ORA-06512: at line 1

如何解决此问题?

SGA的共享池部分内存不足

由于您似乎在使用XE11G,我假设您正在使用自动内存管理。所以我会先试试 增加初始化参数
内存\u目标
(如果新的
内存\u目标
,则增加
内存\u最大\u目标

注意:XE中的最大容量限制为1GB(请参阅)

要更改它,请按SYS执行:
alter system set MEMORY\u TARGET=1GB

要更改
MEMORY\u MAX\u TARGET
请使用附加参数
scope=pfile
执行,您必须重新启动实例

如果这没有帮助(已设置最大1GB):部分禁用AMM,并将初始化参数
共享池大小设置为250MB(或更多),以扩大共享池(以其他组件、缓冲区缓存等为代价),然后重试

也可以在SGA使用中查看当前分配给池的内存

select nvl(pool,name) pool
      ,sum(bytes)/1024/1024 MB 
  from v$sgastat 
 group by nvl(pool,name)
;

如果共享池已经是最大的,并且您的内存目标已经达到1GB的限制,那么我担心您在XE上运气不佳,应该考虑使用标准版。

以下GWu答案

以下是为Oracle Express 11.2保存我的一天的命令(当然,您可以更改参数值)

ALTER SYSTEM SET MEMORY_MAX_TARGET=1000m SCOPE=SPFILE;

ALTER SYSTEM SET MEMORY_TARGET=1000m SCOPE=SPFILE;

SHUTDOWN IMMEDIATE

STARTUP