数据库版本是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的版本,所以正好和上面的说明一致。 解决方法一是修改参数参数,而是升级数据库版本。