数据库版本是10.2.0.1,使用EXPDP 导数据的时候,alert log 出现如下信息:

 

星期三 十月 26 12:14:02 2011

已忽略 MAXTRANS 参数的值 (30)。

kupprdp: 主进程 DM00 已启动,带 73,操作系统 id=4731

执行 - SYS。KUPM$MCP.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS', 'KUPC$C_1_20111026121403', 'KUPC$S_1_20111026121403', 0);

kupprdp: 工作进程 DW01 启动时,工作线程 id=1,pid=77,OS id=4774

执行 - SYS。KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS');

 

星期三 十月 26 12:14:42 2011

内存通知:库缓存对象加载到 SGA 中

堆大小 5525K 超过通知阈值 (2048K)

 

KGL 对象名称 :SELECT /*+rule*/SYS_XMLGEN(VALUE(KU$), XMLFORMAT.createFormat2('TABLE_T', '7')), KU$.OBJ_NUM,KU$.ANC_OBJ.NAME,KU$.ANC_OBJ。OWNER_NAME,KU$.ANC_OBJ。TYPE_NAME,KU$.BASE_OBJ.NAME ,KU$.BASE_OBJ。OWNER_NAME,KU$.BASE_OBJ。TYPE_NAME,KU$.SPARE1,KU$.XMLSCHEMACOLS ,KU$.SCHEMA_OBJ.姓名,KU$.SCHEMA_OBJ.NAME ,'TABLE',KU$.物业,KU$。SCHEMA_OBJ。OWNER_NAME,KU$.TS_NAME,KU$.TRIGFLAG FROMSYS.KU$_FHTABLE_VIEW KU$ WHERE NOT (BITAND(Y$100)PROPERTY,8192)=8192) 而不是 BITAND(KU$.SCHEMA_OBJ。FLAGS,128)!=0和KU$。OBJ_NU

 

Trace 文件内容:

[xezf@localhost bdump]$ cat/home/oracle_app/admin/XEZF/bdump/xezf_dw01_4774.trc

/home/oracle_app/admin/XEZF/bdump/xezf_dw01_4774.trc

Oracle 数据库 10g 企业版版本10.2.0.1.0 - 生产

使用分区、OLAP 和数据挖掘选项

ORACLE_HOME = /home/oracle_app

系统名称: Linux

节点名称:localhost.localdomain

发布: 2.6.18-8.el5

版本: #1 SMP 星期四 三月 15 19:57:35 EDT 2007

机器:i686

实例名称: XEZF

重做此实例挂载的线程:1

甲骨文进程号: 77

Unix 进程 pid: 4774, 图像:oracle@localhost.localdomain (DW01)

 

2011-10-26 12:14:42.557

行动名称:(SYS_EXPORT_SCHEMA_01)2011-10-26 12:14:42.529

模块名称:(数据泵工人)2011-10-26 12:14:42.529

服务名称:(SYS$用户) 2011-10-2612:14:42.529

场次ID:(106.8016) 2011-10-2612:14:42.529

内存通知:库缓存对象加载到 SGA 中

堆大小 5525K 超过通知阈值 (2048K)

库对象句柄:句柄 =902ccc68mutex=0x902ccd1c(0)

名称=

SELECT /*+rule*/ SYS_XMLGEN(VALUE(KU$), XMLFORMAT.createFormat2('TABLE_T','7')), KU$.OBJ_NUM,KU$.ANC_OBJ.NAME,KU$.ANC_OBJ。OWNER_NAME,KU$.ANC_OBJ。TYPE_NAME,KU$.BASE_OBJ.NAME ,KU$.BASE_OBJ。OWNER_NAME,KU$.BASE_OBJ。TYPE_NAME,KU$.SPARE1,KU$.XMLSCHEMACOLS ,KU$.SCHEMA_OBJ.姓名,KU$.SCHEMA_OBJ.NAME ,'TABLE', KU$.物业,KU$。SCHEMA_OBJ。OWNER_NAME,KU$.TS_NAME,KU$.来自 SYS 的 TRIGFLAG。KU$_FHTABLE_VIEW KU$ WHERE NOT (BITAND(KU$.PROPERTY,8192)=8192)和NOTBITAND(KU$.SCHEMA_OBJ。FLAGS,128)!=0 和 KU$。OBJ_NU

hash=cee7e1d7e94b0fa1690a65161375b4d6 时间戳=10-26-201112:14:37

namespace=CRSRflags=RON/KGHP/TIM/KEP/PN0/DBN/[10010044]

kkkk-dddd-llll=0001-0001-0001 lock=N pin=0latch#=5 hpc=0002 hlc=0002

lwt=0x902cccc4[0x902cccc4,0x902cccc4]ltm=0x902ccccc[0x902ccccc,0x902ccccc]

pwt=0x902ccca8[0x902ccca8,0x902ccca8]ptm=0x902cccb0[0x902cccb0,0x902cccb0]

ref=0x902ccce4[0x902ccce4,0x902ccce4]lnd=0x902cccf0[0x962477a4,0x9681c18c]

库对象: 对象 = 9487dd60

type=CRSR flags=EXS[0001] pflags=[0000] status=VALD load=0

儿童:尺寸=16

子 # 表引用句柄

 ------ -------- --------- --------

0 9414ed1c 9414e9d0 90566b6c

数据块:

data# 堆指针状态引脚更改 whr alloc(K) size(K)

 ----- -------- -------- --------- ---- ------ --- -------- --------

0 9d323b60 9487ddf8 I/P/A/-/- 0 NONE 00 0.67 1.05

库对象句柄:句柄=90566b6cmutex=0x90566c20(0)

namespace=CRSRflags=RON/KGHP/PN0/[10010000]

kkkk-dddd-llll=0000-0001-0000 lock=N pin=Xlatch#=5 hpc=0002 hlc=0002

lwt=0x90566bc8[0x90566bc8,0x90566bc8]ltm=0x90566bd0[0x90566bd0,0x90566bd0]

pwt=0x90566bac[0x90566bac,0x90566bac]ptm=0x90566bb4[0x90566bb4,0x90566bb4]

ref=0x90566be8[0x9414e9d0,0x9414e9d0]lnd=0x90566bf4[0x90566bf4,0x90566bf4]

 LIBRARY OBJECT: object=94fc1c00

 type=CRSR flags=EXS[0001] pflags=NST[0001] status=VALD load=0

 DEPENDENCIES: count=101 size=112

 dependency#    tablereference   handle position flags

 ----------- -------- --------- -------- -------- -------------------

           0 94fc1f70  9a943858 902ccb10      386 DEP[01]

           1 94fc1f70  9a94388c 9dadaffc      229 DEP[01]

           2 94fc1f70  9a9438c0 9dae1bac       80 DEP[01]

 ....

 

Oracle MOS 上[ID330239.1] 对此问题有说明:

Memory Notification: Library Cache Object Loaded Into Sga [ID 330239.1]

 

 

导致这个提示的原因:

这些是警告消息,不应导致负责这些错误的程序失败。它们是 10g 版本 2 中新的事件消息传递机制和内存管理器的结果。

这意味着该过程只是在分配期间花费大量时间来查找可用内存扩展,因为内存可能会非常分散。

这些消息并不意味着ORA-4031即将发生。

--这个提示意味着在内存中有严重的碎片时,进程需要用更多的时间来查找空余的内存。

 

解决方法:

在 10g 中,我们有一个新的未记录参数,用于设置 KGL 堆大小警告阈值。此参数在 10gR1 中不存在。如果堆大小超过此阈值,则编写警告。
   

将_kgl_large_heap_warning_threshold设置为合理的高值或零以防止这些警告消息。值需要以字节为单位进行设置。

如果要将其设置为 8192 (8192 * 1024) 并且正在使用 spfile:

(以 “/ as sysdba” 身份登录)

SQL>更改系统集 “_kgl_large_heap_warning_threshold”=8388608 scope=spfile ;

SQL> 立即关闭

SQL>启动


如果使用“旧式”初始化参数,

请编辑初始化参数文件并添加
_kgl_large_heap_warning_threshold=8388608

 

注意:

10.2.0.1 中的默认阈值为 2M。因此,这些消息可能会经常出现在某些应用程序环境中。

在 10.2.0.2 中,回归测试后阈值增加到 50MB,因此这应该是一个合理的建议值。

 

我执行expdp的库是10.2.0.1的版本,所以正好和上面的说明一致。 解决方法一是修改参数参数,而是升级数据库版本。