当我尝试备份我的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
我该如何解决这个问题?
答案 0 :(得分:1)
SGA的共享池部分内存不足。
当您似乎使用XE 11g时,我假设您正在使用自动内存管理。所以我先试试
增加初始化参数MEMORY_TARGET
(如果新MEMORY_MAX_TARGET
超出,则MEMORY_TARGET
)。
请注意,XE中限制为最大1GB(请参阅http://docs.oracle.com/cd/E17781_01/install.112/e18802/toc.htm#BABHJHHC)。
要将其更改为SYS执行:alter system set MEMORY_TARGET=1GB;
要使用其他参数MEMORY_MAX_TARGET
更改scope=pfile
执行,您必须重新启动该实例。
如果这没有帮助(已设置最大1GB):部分禁用AMM并将初始化参数shared_pool_size
设置为250MB(或更多)以扩大共享池(以其他组件为代价,缓冲区)缓存,...)然后再试一次。
在SGA中使用
来查看当前对池的内存分配select nvl(pool,name) pool
,sum(bytes)/1024/1024 MB
from v$sgastat
group by nvl(pool,name)
;
如果共享池已经是最大的,而memory_target
已经达到了1GB的限制,那么我担心你对XE运气不好,应该考虑标准版。
答案 1 :(得分:0)
跟随 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