前台将参数打包成xmltype字段传过来,其中包含图片,当图片较大时会报错
ORA-31167: 无法插入 64K 以上的 XML 节点;
检查时发现某些编码都80k了也不会报这个错误.
现在有两个问题.
1.如何解决ora-31167的问题.
2.莫非lob字段带压缩的?在哪儿能查看是否被压缩了.
1想了两个办法,一是把经过base64编码的图片肢解成若干个小于64k的片段,二是新建一张表,xml节点不存储base64编码后的数据,只存储新建表的一个主键值.
还有其他办法么?
ORA-31167: 无法插入 64K 以上的 XML 节点;
检查时发现某些编码都80k了也不会报这个错误.
现在有两个问题.
1.如何解决ora-31167的问题.
2.莫非lob字段带压缩的?在哪儿能查看是否被压缩了.
1想了两个办法,一是把经过base64编码的图片肢解成若干个小于64k的片段,二是新建一张表,xml节点不存储base64编码后的数据,只存储新建表的一个主键值.
还有其他办法么?
Yes, it is a limitation of 10g. In 11g, this limitation has been increased to 4GB. So, upgrading to 11g is probably the best "workaround" although I have not tried the method showed in Dr_Billy's link.看来10G中是不能了,但是有解决方案,,参考下
http://forums.oracle.com/forums/thread.jspa?messageID=958230实验成功了,共享下啊,嘿嘿
貌似这个容量检查是有时候检查有时候不检查。
如果你是对一个clob使用xmltype来构造一个xmltype数据就不检查,如果在外部程序直接插入一个xmltype变量就会检查。
直接修改节点内容时也不检查,但是解析的时候就检查
1.升级到11g,节点容量不再有限制
2.使用xdb的存储