lob被自动压缩了?

minitoy 2011-01-23 03:25:56
前台将参数打包成xmltype字段传过来,其中包含图片,当图片较大时会报错
ORA-31167: 无法插入 64K 以上的 XML 节点;
检查时发现某些编码都80k了也不会报这个错误.
现在有两个问题.
1.如何解决ora-31167的问题.
2.莫非lob字段带压缩的?在哪儿能查看是否被压缩了.


1想了两个办法,一是把经过base64编码的图片肢解成若干个小于64k的片段,二是新建一张表,xml节点不存储base64编码后的数据,只存储新建表的一个主键值.
还有其他办法么?
...全文
182 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
minitoy 2011-02-14
  • 打赏
  • 举报
回复
找到两个解决办法.
1.升级到11g,节点容量不再有限制
2.使用xdb的存储
minitoy 2011-01-24
  • 打赏
  • 举报
回复
所以如果只是为了插入,那么可以把入参设置为clob,然后用xmltype构造下就可以了。但是没法解析啊
minitoy 2011-01-24
  • 打赏
  • 举报
回复
插入前是没问题的。插入后再extract就不可以了。
貌似这个容量检查是有时候检查有时候不检查。
如果你是对一个clob使用xmltype来构造一个xmltype数据就不检查,如果在外部程序直接插入一个xmltype变量就会检查。
直接修改节点内容时也不检查,但是解析的时候就检查
iqlife 2011-01-24
  • 打赏
  • 举报
回复
解析的时候出错?能插入的话,解析出来应该不会有问题啊
插入之前解析该节点有问题么,还是插入到数据库后再次取出来的时候解析有问题?
minitoy 2011-01-24
  • 打赏
  • 举报
回复
之前试过直接用plsql developer直接去update xmltype字段,也是可以将节点的容量增加到64k以上,但是再使用extract的时候就会报错ora-31167
minitoy 2011-01-24
  • 打赏
  • 举报
回复
看了下,他只是实现了大于64k的数据插入到节点,但是节点在解析的时候还是会报错的。[Quote=引用 2 楼 java3344520 的回复:]
Is this a limitation of Oracle 10g or is there a workaround?<<
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……
[/Quote]
iqlife 2011-01-24
  • 打赏
  • 举报
回复
Is this a limitation of Oracle 10g or is there a workaround?<<
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

实验成功了,共享下啊,嘿嘿
minitoy 2011-01-24
  • 打赏
  • 举报
回复
顶起来.
lxyzxq2008 2011-01-24
  • 打赏
  • 举报
回复
这个好深啊,没看过这快的东西,学习,等待M大结果

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧