问题:
因为数据库做迁移,新库只做了share_pool和db_cache_size调整,做exp整库导出时出现如下错误:
连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出整个数据库...
. 正在导出表空间定义
. 正在导出配置文件
. 正在导出用户定义
. 正在导出角色
. 正在导出资源成本
. 正在导出回退段定义
. 正在导出数据库链接
. 正在导出序号
. 正在导出目录别名
. 正在导出上下文名空间
. 正在导出外部函数库名称
. 导出 PUBLIC 类型同义词
EXP-00008: 遇到 ORACLE 错误 4031
ORA-04031: 无法分配 4032 字节的共享内存 ("shared pool","unknown object","joxs heap init","ioc_allocate_pal")
EXP-00000: 导出终止失败
分析:
1、看这表象第一是想到share pool大小是不是太小,故调整重启后再次,错误依旧,查看alert日志,提示:Tue Jun 05 08:20:38 2012
Errors in file s:\stat\admin\udump\stat_ora_3760.trc:
ORA-04031: 无法分配 4032 字节的共享内存 ("shared pool","unknown object","joxs heap init","ioc_allocate_pal")
2、再看stat_ora_3760.trc:
Dump file s:\stat\admin\udump\stat_ora_3760.trc
Tue Jun 05 08:20:38 2012
ORACLE V9.2.0.1.0 - Production vsnsta=0
vsnsql=12 vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Instance name: stat
Redo thread mounted by this instance: 1
Oracle process number: 27
Windows thread id: 3760, image: ORACLE.EXE
*** SESSION ID:(31.15805) 2012-06-05 08:20:38.000
ioc_allocate (size: 4096, heap name: *** SGA ***, flags: 9) caught 4031
*** 2012-06-05 08:20:38.000
ksedmp: internal or fatal error
ORA-04031: 无法分配 4032 字节的共享内存 ("shared pool","unknown object","joxs heap init","ioc_allocate_pal")
Current SQL statement for this session:
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM2) SYNNAM2, DBMS_JAVA.LONGNAME(SYNTAB) SYNTAB, TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS ORDER BY SYNTIME
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
_ksedmp+147 CALLrel _ksedst+0
_ksfdmp.108+e CALLrel _ksedmp+0 3
1003387C CALLreg 00000000 72EB190 3
100EA9AB CALLrel 10033630 805D5A8 23B77D74 1000 805C6BC
9
100323C0 CALLreg 00000000 805D5A8 805C670
10066030 CALLrel 10032310 805D5A8 100EA990 805C670 0
805C254 805C63C 805C640
FFFFFFFF
---这个dump提示有句sql语句看到没:SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM2) SYNNAM2, DBMS_JAVA.LONGNAME(SYNTAB) SYNTAB, TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS ORDER BY SYNTIME
再用dbms_java的包查找同义词,有木有!莫非跟oralce里面某个java的组件有关?遂查看java_pool_size 发现为0,貌似有点头绪了。
解决:
修改java_pool_size为适合大小,我改成10M,再次备份,问题修复!
---相关参考来至chinaunix
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22907091/viewspace-732015/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22907091/viewspace-732015/