|
|
|
|

ArcSDE 设置DBTUNE参数存储BLOB列

DBTUNE表中的存储参数控制着在oracle中如何创建表和索引。其中一些存储参数定义在创建表的时候使用的数据类型。 ArcSDE的DBTUNE存储参数,例如GEOMETRY_STORAGE, RASTER_STORAGE, and ATTRIBUTE_BINARY定义了在存储ArcSDE数据的时候使用的oracle数据...

作者:yyilyzbc来源:GIS大讲堂|2009年12月22日
   DBTUNE表中的存储参数控制着在oracle中如何创建表和索引。其中一些存储参数定义在创建表的时候使用的数据类型。
    ArcSDE的DBTUNE存储参数,例如GEOMETRY_STORAGE, RASTER_STORAGE, and ATTRIBUTE_BINARY定义了在存储ArcSDE数据的时候使用的oracle数据类型。
    注意从ArcSDE 9.2开始RASTER_BINARY_TYPE参数被RASTER_STORAGE 替代。
   GEOMETRY_STORAGE 控制矢量数据(featureClass)的存储。RASTER_STORAGE 控制栅格数据(raster dataset, raster catalog, or raster attribute)的存储 。ATTRIBUTE_BINARY 控制其他二进制数据的存储(非矢量和栅格数据)。
    在ArcSDE中使用BLOB列存储数据,DBTUNE关键字设置如下:
GEOMETRY_STORAGE SDELOB
RASTER_STORAGE BLOB
ATTRIBUTE_BINARY BLOB
    ESRI建议使用如下设置来存储矢量和栅格数据:
1)总是使用 in-row storage 选项。因为在GIS系统中大多数的要素数据都小于3,964字节。使用in-row storage 选项选项能达到较好的性能。
2)为需要经常读的数据使用缓冲(Cache);
3)如果ArcSDE不经常更新BLOB数据而是经常插入或删除BLOB数据,那么设置 PCT_VERSION 参数为0,告诉oracle在 LOB段上不需要维护老版本的数据。
4)chuck的大小不应该小于8k。测试表明,存储GIS数据,数据块设置为8k是最合适的。
下面是RASTER_STORAGE参数的设置例子
RASTER_STORAGE "BLOB"
BLK_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE RASTER
             LOB (BLOCK_DATA) STORE AS
             (TABLESPACE RASTER_LOB_SEGMENT
              CACHE PCTVERSION 0)"
RASTER_STORAGE "BLOB" 表示使用BLOB方式存储栅格数据。如果栅格的block pixel 数据小于3,965 字节,则存储在RASTER表空间的BLOCK_DATA 列中。如果大于3,964 字节则存储在RASTER_LOB_SEGMENT 表空间的LOB段中。LOB index 只有在chunks个数超过12的时候才会使用。
下面是GEOMETRY_STORAGE 参数的设置例子
GEOMETRY_STORAGE "SDELOB"
F_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE VECTOR
             LOB (POINTS) STORE AS
             (TABLESPACE VECTOR_LOB_SEGMENT
              CACHE PCTVERSION 0)"
GEOMETRY_STORAGE "SDELOB"  表示使用BLOB方式存储矢量数据。如果要素的二进制数据小于3,965 字节,则存储在VECTOR表空间的POINTS列中。如果超过这个大小则存储在VECTOR_LOB_SEGMENT表空间的LOB段中。
下面是ATTRIBUTE_BINARY "BLOB" 参数的设置例子
ATTRIBUTE_BINARY "BLOB"
B_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE BIZZTABS
             LOB (DOCUMENT) STORE AS
             (TABLESPACE BIZZ_LOB_SEGMENT
              CACHE PCTVERSION 0)"
ATTRIBUTE_BINARY "BLOB"表示使用BLOB方式存储属性数据(非矢量和栅格数据)。如果b表的二进制数据小于3,965 字节,则存储在BIZZTABS表空间的DOCUMENT列中。如果超过这个大小则存储在BIZZ_LOB_SEGMENT 表空间的LOB段中。如果在创建b表的时候没有DOCUMENT列,则oracle会报下面的错误:
ORA-00904: "DOCUMENT": invalid identifier
因此,不建议在DBTUNE的默认关键字的存储参数中指定特定的列。可以创建单独的DBTUNE关键字来设置这些参数。关于DBTUNE关键字的创建和参数设置请参考DBTUNE的相关主题。

上一篇:BLOB数据在oracle 地理数据库中的存储方式

下一篇:ArcSDE使用ST_Geometry存储空间数据(ora…