2007-1-9 09:37
ZALBB
10202 上的又一新BUG(外部表的读取)
版本 10202,WINDOWS(2003,64B)
状况:
SYS@NCBI>select count(*) from T123456;
select count(*) from T123456
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-00552: internal XAD package failed to load
ORA-06512: at "SYS.ORACLE_LOADER", line 19
Elapsed: 00:00:00.29
我根据错误信息:KUP-00552: internal XAD package failed to load
在METALINK上查找到相关文档。按照ORACLE的文档(Doc ID:
373168.1 )处理后,问题解决。其解释:
The issue is likely caused by Bug 5172459: 'KUP-00552 WHEN QUERYING EXTERNAL
TABLES IN 10.2.0.2' which is still open and active.
According to Bug 5172459, the problem appears to be that the
messages file for external tables ( kup<lang>.msb ) for non-english systems
解决方法:
Need to replace the language specific (non-english) kup<lang>.msb file
with the english version.
1. cd $ORACLE_HOME/rdbms/mesg
2. Replace <lang> with your installed languages file.
mv KUP<lang>.msb to KUP<lang>.msb.BAK
3. Copy <us> version over current <lang> copy of kup msb file.
cp kupus.msb to KUP<lang>.msb
4. re-run the select against the external table
我实际的操作过程,就是:
该目录:$ORACLE_HOME/rdbms/mesg 下有两个文件:
kupzhs.msb 和 kupus.msb, 其默认使用了kupzhs.msb
此时,我把kupzhs.msb 重新命名为 kupzhs.msb.bak
之后在测试, OK:
SYS@NCBI>select count(*) from T123456;
COUNT(*)
----------
407
Elapsed: 00:00:01.01
SYS@NCBI>SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bi
PL/SQL Release 10.2.0.2.0 - Production
CORE 10.2.0.2.0 Production
TNS for 64-bit Windows: Version 10.2.0.2.0 - Production
NLSRTL Version 10.2.0.2.0 - Production
Elapsed: 00:00:00.01
SYS@NCBI>
我猜测:数据库之所以默认选择使用kupzhs.msb 文件,是因为:
操作系统的控制面板下的 regional and language options 选项
里选择了(chinese RPC), 若改为(Englist United States), 则
数据库可能会使用 kupus.msb, 但这只是我的猜测,限于环境,我
无法作测试.
另外,文档上解释: 该BUG可能出现在所以平台上,
Oracle Server - Enterprise Edition - Version: 10.2.0.2.0
This problem can occur on any platform.