今天遇到用户的一个问题
用户环境:Oracle 11.1.0.6 ArcSDE9.3.1
问题描述:用户的数据包含BLOB字段,估计这个BLOB存储的数据有大有小,通过ArcCatalog进行复制粘贴或者Load数据都会报
Failed to paste 图层名
Table not registered 用户名.图层名
Maximum BLOB size exceeded
关键错误是超出最大的BLOB大小,那么我们通过查看ArcSDE参数来分析该问题。
ArcSDE参数中有两个涉及到BLOB的参数
==============================================
参数名:MAXBLOBSIZE
描述:用户定义的 BLOB 的最大大小(以字节为单位)
默认:-1 (SE_UNLIMITED_BLOBSIZE)ArcSDE10的默认参数
注释:从 ArcGIS 10 开始,该参数设置为 -1 (SE_UNLIMITED_BLOBSIZE)。所有新的和升级的地理数据库都将被设置为无限制。
==============================================
参数名:BLOBMEM
描述:存储 BLOB 时,服务器必须累计应用程序通过网络发送的 BLOB 区段。如果 BLOB 大小大于 BLOBMEM,则服务器会在将 BLOB 数据存储到数据库中之前将其写入到磁盘文件。如果 BLOB 大小小于 BLOBMEM,则服务器会将 BLOB 累计到内存中。如果 BLOBMEM 是负数,则服务器始终都会使用内存,而不会考虑 BLOB 大小。
默认:1,000,000 Byte
==============================================
因为用户的版本是ArcSDE9.3.1 ,那么ArcSDE参数MAXBLOBSIZE还是默认的1000000Byte(1M)也就是说最大的BLOB存储大小限制在1MB,大于1MB就会报如下错误(该图为测试所得)
所以在ArcSDE9.3.1解决问题只需要将MAXBLOBSIZE参数修改为1000000000多加几个0就可以了
PS :刚才做过测试,不能再ArcSDE9.3.1直接将该值修改为-1者SE_UNLIMITED_BLOBSIZE
说明:以上错误红字的是ArcSDE9.3.1错误,图片为ArcSDE10的错误,可能有所差别。