Oracle 存储 地理数据,Desktop Help 10.0 - Oracle 中地理数据库内的 BLOB 数据存储

设置 DBTUNE 参数来存储 BLOB 列

DBTUNE 表的存储参数控制着 ArcGIS 如何在 Oracle 中创建表和索引。有些存储参数还决定着创建表时使用的数据类型。有关 DBTUNE 表的详细信息,请参阅什么是 DBTUNE 表?有关 DBTUNE 存储参数的常规信息,请参阅什么是 DBTUNE 配置关键字和参数?

ArcSDE DBTUNE 存储参数 GEOMETRY_STORAGE、RASTER_STORAGE 和 ATTRIBUTE_BINARY 决定着存储 ArcSDE 数据所使用的 Oracle 数据类型。

GEOMETRY_STORAGE 参数控制着在要素类中存储矢量数据的方式。RASTER_STORAGE 参数控制着在栅格数据集、栅格目录或栅格属性中存储栅格数据的方式。最后,ATTRIBUTE_BINARY 参数控制着既不是矢量也不是栅格的所有其他二进制数据的存储。

要创建 BLOB 列,必须在给定 DBTUNE 关键字中对参数进行如下设置:

GEOMETRY_STORAGE SDELOB

RASTER_STORAGE BLOB

ATTRIBUTE_BINARY BLOB

对于矢量数据和栅格数据,ESRI 推荐使用以下 LOB 存储参数:始终启用行内存储,因为多数地理信息系统 (GIS) 数据小于 3964 个字节(行内阈值)。在行内存储数据可提供最佳性能。

启用缓存,因为会频繁读取 ArcSDE 数据。

由于 ArcSDE 不对 BLOB 数据执行更新,而只是执行插入和删除,因此将 PCT_VERSION 设置为 0,这样做是因为无需保留 LOB 段内较旧版本的数据。

不应使用小于 8K 的区段大小。2K 和 4K 的区段大小会增加 I/O 量,因为 Oracle 服务器进程必须提取更多区段。您可能会发现 8K 的区段大小比 16K 的区段大小浪费的空间量少。如果使用 2K 或 4K 的区段大小,您会发现浪费的空间量较少,但经测试发现,与使用 8K 的区段大小存储时相比,多数栅格数据和矢量数据的显示时间有明显地增加。由于区段大小必须始终是数据块大小的倍数,所以用于在 BLOB 中存储 GIS 数据的最佳数据块大小是 8K。

以下示例说明了为适合以 BLOB 数据类型存储的栅格块表而对栅格 DBTUNE 存储参数进行修改后的结果:

RASTER_STORAGE "BLOB"

BLK_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE RASTER

LOB (BLOCK_DATA) STORE AS

(TABLESPACE RASTER_LOB_SEGMENT

CACHE PCTVERSION 0)"

AUX_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE RASTER

LOB (OBJECT) STORE AS

(TABLESPACE RASTER

CACHE PCTVERSION 0)"

RASTER_STORAGE "ST_RASTER"

BLK_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE RASTER

LOB (BLOCK_DATA) STORE AS

(TABLESPACE RASTER_LOB_SEGMENT

CACHE PCTVERSION 0)"

如果栅格块像素数据小于 3965 个字节,该数据将存储在 RASTER 表空间的 BLOCK_DATA 列中。但是,如果超过此阈值,则将存储在 RASTER_LOB_SEGMENT 表空间的 LOB 段中。仅当区段数超过 12 时才使用 LOB 索引。对于 ArcSDE 数据,不太可能发生这种情况。考虑使用 8K 区段大小的 LOB 段。仅当 ArcSDE 二进制数据超过 96K 时,才可使用 LOB 索引。

以下示例说明了为适合以 BLOB 数据类型存储的要素表而对矢量 DBTUNE 存储参数进行修改后的结果:

GEOMETRY_STORAGE "SDELOB"

F_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE VECTOR

LOB (POINTS) STORE AS

(TABLESPACE VECTOR_LOB_SEGMENT

CACHE PCTVERSION 0)"

GEOMETRY_STORAGE "ST_GEOMETRY"

如果要素的二进制数据小于 3965 个字节,该数据将存储在 VECTOR 表空间的 POINTS 列中。但是,如果超过此阈值,则将存储在 VECTOR_LOB_SEGMENT 表空间的 LOB 段中。

ATTRIBUTE_BINARY "BLOB"

B_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE BIZZTABS

LOB (DOCUMENT) STORE AS

(TABLESPACE BIZZ_LOB_SEGMENT

CACHE PCTVERSION 0)"

A_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE BIZZTABS

LOB (DOCUMENT) STORE AS

(TABLESPACE BIZZ_LOB_SEGMENT

CACHE PCTVERSION 0)"

在本示例中,如果业务表的二进制数据小于 3965 个字节,该数据将存储在 BIZZTABS 表空间的业务表的 BLOB 列中。但是,如果超过此阈值,则将存储在 BIZZ_LOB_SEGMENT 表空间的 LOB 段中。本示例中的 BLOB 列为 DOCUMENT。如果上方的 B_STORAGE DBTUNE 参数用来创建没有 DOCUMENT 列的表,Oracle 将返回以下错误:

ORA-00904: "DOCUMENT": invalid identifier

因此,最好不要将引用特定 BLOB 列的 B_STORAGE 或 A_STORAGE 参数添加到 DEFAULTS 关键字,因为业务表必须包含这些列。相反,您可以创建单独的 DBTUNE 关键字,然后将这些存储参数添加到这些关键字中。在创建表期间将引用包含存储参数的关键字。还应注意,如果特定的关键字不包含存储参数,则将使用 DEFAULTS 关键字的存储参数。鉴于这种情况,如果某关键字的配置字符串与 DEFAULTS 关键字下的存储参数相同,则无需在该关键字中添加特定的存储参数。例如,如果新关键字 ROADS 的所有存储参数(除 B_STORAGE 和 A_STORAGE 以外)都具有与 DEFAULTS 关键字的存储参数相同的配置字符串,那么您只需在 ROADS 关键字下创建 B_STORAGE 和 A_STORAGE 参数。其他所有存储参数都从 DEFAULTS 关键字读取,因为 ROADS 关键字不包含这些参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值