配置参数用于标识要存储在数据库中的对象(如表格、索引和列)。其对应值用于标识在数据库中存储对象的方式。这些参数及其配置字符串按照配置关键字进行分组。
在存储于 Oracle 数据库的地理数据库中,ArcGIS 使用“参数名称-配置字符串对”执行以下操作:
- 建立表和索引的存储特征。
- 定义空间、栅格和属性列的存储类型。
- 定义 XML 文档的存储方式。
- 使用户可以在 ArcGIS 界面中使用关键字。
- 提供描述配置关键字的注释。
关键字/参数名组合是唯一的;对于同一关键字下的同一参数,不能存在两个不同的设置。
但是,大多数参数均可在多个不同配置关键字下使用。例如,可以将 GEOMETRY_STORAGE 参数设置为 DEFAULTS 下的一个值,然后创建一个自定义关键字,该关键字包含设置为不同值的 GEOMETRY_STORAGE 参数。
参数使用方式示例
在下例中,SQL 语句返回所有以 RAS 开头的参数的数值,并将这些参数分组到 DBTUNE 表中的 DEFAULTS 关键字下。
SQL> SELECT * FROM SDE.DBTUNE
2 WHERE KEYWORD = 'DEFAULTS' AND PARAMETER_NAME LIKE 'RAS%';
KEYWORD PARAMETER_NAME CONFIG_STRING
------------ ---------------------- -------------------------
DEFAULTS RASTER_STORAGE BLOB
DEFAULTS RAS_INDEX_ID PCTFREE 0 INITRANS 8 TABLESPACE IDX1 NOLOGGING
DEFAULTS RAS_STORAGE PCTFREE 0 INITRANS 8 TABLESPACE RASTER
RAS_STORAGE 参数的 config_string 包含适用于 CREATE TABLE 语句的 Oracle SQL 语法。RAS_STORAGE 参数用于控制 SDE_RAS_<raster_column_ID> 表的存储。因此,如果在地理数据库中创建栅格数据集时指定 DEFAULTS 关键字,ArcGIS 将读取 RAS_STORAGE 的 config_string 并将其放到用于创建 SDE_RAS_<raster_column_ID> 表的 SQL 语句中。
配置关键字和参数值可用于由 ArcGIS 发布以创建表的 SQL 语句。以下 DEFAULTS 关键字/参数值将转换为下列 SQL 语句:
DEFAULTS RAS_STORAGE PCTFREE 0 INITRANS 8 TABLESPACE RASTER
CREATE TABLE myuser.sde_ras_6
(raster_id number(38),
raster_flags number(38),
description varchar2(65))
PCTFREE 0
INITRANS 8
TABLESPACE raster
如果未指定表空间,Oracle 将使用表空间的默认存储参数在用户的默认表空间中存储表和索引。如果在最后一个示例中未指定栅格表空间,则将使用用户的默认表空间。
以某一用户身份连接后,通过查询 USER_USERS Oracle 系统表的 DEFAULT_TABLESPACE 字段可确定该用户的默认表空间。以 Oracle 数据库管理员身份,使用 WHERE 子句查询 DBA_USERS 表的 DEFAULT_TABLESPACE 字段以指定用户。
SQL> connect <user>/<password>
SQL> SELECT default_tablespace
FROM user_users;
SQL> connect system/<password>
SQL> SELECT default_tablespace
FROM dba_users
WHERE username = <'USER'>;
SQL> connect <user>/<password>
SQL> SELECT * FROM user_tablespaces
WHERE tablespace_name = <'TABLESPACE'>;
可以通过更改配置参数设置为数据提供合适的表空间名。您可以使用导出地理数据库配置关键字工具导出当前配置参数设置,并更改值,然后使用导入地理数据库配置关键字工具导入更改。
有效参数列表
下表按字母顺序列出了所有可在 Oracle 中的地理数据库内使用的配置参数。粗体的值表示该值为默认值。
下表之后的部分更详细深入地解释了各个参数(按其功能分组)。
参数名称 | 说明 | 值 | 备注 |
---|---|---|---|
A_INDEX_RASTER | 添加表(即 A 表)栅格列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
A_INDEX_ROWID | A 表 ObjectID 列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
A_INDEX_SHAPE | A 表空间列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
A_INDEX_STATEID | A 表 sde_state_id 列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
A_INDEX_USER | 定义 A 表索引的存储方式 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
A_INDEX_XML | A 表 XML 列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
A_STORAGE | 定义 A 表的存储方式 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
ATTRIBUTE_BINARY | 指示二进制属性(非空间)字段的存储类型 | BLOB 或 LONGRAW | |
AUX_INDEX_COMPOSITE | 栅格 AUX 表复合列索引的存储定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
AUX_STORAGE | 栅格 AUX 表的存储定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
B_INDEX_RASTER | 业务表中栅格列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
B_INDEX_ROWID | 业务表 ObjectID 列索引和栅格 rowid 索引 R<N>_SDE_ROWID_UK 的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
B_INDEX_SHAPE | 业务表中空间列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | 仅适用于二进制几何存储类型(SDEBINARY 和 SDELOB) |
B_INDEX_TO_DATE | 用于创建索引 R<registration_id>_sde_todate 的存储参数信息,在存档操作期间更新历史记录表时使用该信息 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
B_INDEX_USER | 业务表用户索引的存储定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
B_INDEX_XML | 业务表中 XML 列索引表的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
B_STORAGE | 业务表和栅格属性表的存储定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
BLK_INDEX_COMPOSITE | 栅格 BLK 表复合列索引的存储定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
BLK_STORAGE | 栅格 BLK 表的存储定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
BND_INDEX_COMPOSITE | 栅格 BND 表复合列索引的存储定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
BND_INDEX_ID | 栅格 BND 表 RID 列索引的存储定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
BND_STORAGE | 栅格 BND 表的存储定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
COMMENT | 用于添加注释的行 | 最多可容纳 8,000 个字符长的注释 | |
COMPRESS_ROLLBACK_SEGMENT | 版本压缩回滚段(仅适用于使用手动撤消空间管理的数据库) | 回滚段名称 | |
D_INDEX_DELETED_AT | 删除表(即 D 表)sde_deleted_at 列索引的存储定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
D_INDEX_ STATE_ROWID | 删除表 sde_states_id 和 sde_deletes_row_id 列索引的存储定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
D_STORAGE | 删除表的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
F_INDEX_AREA | 要素表中面积列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | 仅适用于二进制几何存储类型(SDEBINARY 和 SDELOB) |
F_INDEX_FID | 要素表中 FID 列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | 仅适用于二进制几何存储类型(SDEBINARY 和 SDELOB) |
F_INDEX_LEN | 要素表中长度列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | 仅适用于二进制几何存储类型(SDEBINARY 和 SDELOB) |
F_STORAGE | 要素表存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | 仅适用于二进制几何存储类型(SDEBINARY 和 SDELOB) |
GEOMETRY_STORAGE | 指示空间列的存储数据类型 | ST_GEOMETRY、SDEBINARY、SDELOB、OGCWKB 或 SDO_GEOMETRY | |
LD_INDEX_DATA_ID | SDE_LOGFILE_DATA 和 SDE_LOGPOOL 表的索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
LD_INDEX_ROWID | SDE_LOGFILE_DATA 和 SDE_LOGPOOL 表的 SDE_ROWID 列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
LD_STORAGE | SDE_LOGFILE_DATA 和 SDE_LOGPOOL_<SDE_ID> 表的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
LF_INDEXES | SDE_LOGFILES 表列索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
LF_STORAGE | SDE_LOGFILES 表的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
MD_URI_LOB_STORAGE | 定义镶嵌数据集 URI 列的存储方式 | 有关 CREATE TABLE 语句中 LOB 子句的信息,请参阅 Oracle 文档。 | |
MVTABLES_MODIFIED_INDEX | MVTABLES_MODIFIED 索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
MVTABLES_MODIFIED_TABLE | MVTABLES_MODIFIED 表的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
RAS_INDEX_ID | 栅格 RAS 表 RID 索引的存储定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
RAS_STORAGE | 栅格 RAS 表的存储定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
RASTER_STORAGE | 指示对栅格数据采用的存储类型 | RASTERBLOB、BLOB 或 ST_RASTER | |
RDT_INDEX_COMPOSITE | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | ||
RDT_STORAGE | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | ||
S_INDEX_ALL | 使用二进制几何类型存储时,空间索引表第一个索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | 仅适用于二进制几何存储类型(SDEBINARY 和 SDELOB) |
S_INDEX_SP_FID | 空间索引表第二个索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | 仅适用于二进制几何存储类型(SDEBINARY 和 SDELOB) |
S_STORAGE | 表示空间索引的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | 仅限 Esri ST_Geometry 存储 |
SDO_COMMIT_INTERVAL | 指定每次数据库 COMMIT 之间插入索引表的行数(这成为 CREATE INDEX 语句中的参数,但只在使用四叉树索引时使用)。 | 1000(有关所有这些值的信息,请参阅《Oracle Spatial 用户指南》。) | 仅适用于 Oracle Spatial |
SDO_DIMNAME_1 SDO_DIMNAME_2 SDO_DIMNAME_3 SDO_DIMNAME_4 | Oracle Spatial 几何类型的各个维度的名称;对应的值如下所示:1 = X 2 = Y 3 = Z 4 = M | 维度名称(有关所有这些值的信息,请参阅《Oracle Spatial 用户指南》。) | 仅适用于 Oracle Spatial |
SDO_ELEM_INFO_VARRAY_STORAGE | 定义 SDO_Geometry 对象 SDO_ELEM_INFO_ARRAY 部分的存储 | 有关 CREATE TABLE varray_storage_clause 的信息,请参阅 Oracle 文档。 | 仅适用于 Oracle Spatial |
SDO_INDEX_SHAPE | Oracle Spatial 几何类型空间索引的存储参数 | 各空间索引的存储参数,包括 <tablespace_name> 和 sdo_indx_dims=#(默认值为 2),后者指定使用 R 树空间索引应建立索引的维度数(有关所有这些值的信息,请参阅《Oracle Spatial 用户指南》。) | 仅适用于 Oracle Spatial |
SDO_LB_1、SDO_LB_2、SDO_LB_3、SDO_LB_4 | Oracle Spatial 几何类型的维度下限;基于要加载的数据范围在数据默认值的坐标系中指定的单位;对于具有大地测量 SAID 的数据,SDO_LB_1 必须为 180,SDO_LB_2 必须为 90 | 比相应 SDO_UB 值大的值(有关所有这些值的信息,请参阅《Oracle Spatial 用户指南》。) | 仅适用于 Oracle Spatial |
SDO_ORDINATES_VARRAY_STORAGE | 定义 SDO_Geometry 对象 SDO_ORDINATES_ARRAY 部分的存储 | 有关 CREATE TABLE varray_storage_clause 的信息,请参阅 Oracle 文档。 | 仅适用于 Oracle Spatial |
SDO_SRID | 分配给 SDO_Geometry 列的 Oracle Spatial 坐标参考标识符 | 如果创建要素类时指定的配置关键字包含设置为有效坐标参考系的 SDO_SRID 参数,则该值将用于要素类并写入 Oracle USER_SDO_GEOM_METADATA 视图中。 SDO_SRID 参数指定的值会覆盖客户端(例如 ArcCatalog 或 ArcGIS Pro)指定的任何坐标参考系。 | 仅适用于 Oracle Spatial |
SDO_TOLERANCE_1 SDO_TOLERANCE_2 SDO_TOLERANCE_3 SDO_TOLERANCE_4 |
| 大于 0 的值(有关所有这些值的信息,请参阅《Oracle Spatial 用户指南》。) | 仅适用于 Oracle Spatial |
SDO_UB_1、SDO_UB_2、SDO_UB_3、SDO_UB_4 |
| 比相应 SDO_LB 值大的值(有关所有这些值的信息,请参阅《Oracle Spatial 用户指南》。) | 仅适用于 Oracle Spatial |
SE_ANNOCAD_LOB_STORAGE | 定义 SE_ANNO_CAD_DATA 列的存储,追加到使用 SDO_GEOMETRY 存储以及存储 CAD 或注记数据的所有表。 | 有关 CREATE TABLE 语句中 LOB 子句的信息,请参阅 Oracle 文档。 | 仅适用于 Oracle Spatial |
SESSION_INDEX | 基于会话的日志文件表索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
SESSION_STORAGE | 基于会话的日志文件表的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
ST_GEOM_LOB_STORAGE | 控制 ST_Geometry 对象的 SHAPE.POINTS 列的存储方式 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
ST_INDEX_PARTITION_LOCAL | 指定已分区表的 sde.st_spatial_index 是作为全局索引还是局部索引进行创建(FALSE 表示 st_spatial_index 将作为全局索引创建;TRUE 指定空间索引将作为局部索引创建。) | TRUE 或 FALSE | 仅适用于包含 ST_Geometry 列的已分区业务表 |
STATES_INDEX | STATES 表的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
STATES_LINEAGES_TABLE | STATE_LINEAGES 表的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
STATES_TABLE | STATES 表的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
UI_NETWORK_TEXT | 用户界面参数,用于指示将在 ArcGIS 用户界面中显示的相关配置关键字;包括网络配置的描述 | 描述不能超过 8000 个字符 | |
UI_TERRAIN_TEXT | 用户界面参数,用于指示将在 ArcGIS 用户界面中显示的相关配置关键字;包括 terrain 配置的描述 | 描述不能超过 8000 个字符 | |
UI_TEXT | 用户界面参数,用于指示将在 ArcGIS 用户界面中显示的相关配置关键字;包含相关的非复合配置关键字的描述 | 描述不能超过 8000 个字符 | |
UI_TOPOLOGY_TEXT | 用户界面参数,用于指示将在 ArcGIS 用户界面中显示的相关配置关键字;包括拓扑配置的描述 | 描述不能超过 8000 个字符 | |
UNICODE_STRING | 确定是否使用 Unicode 文本类型(如果设置为 TRUE,将使用与 UNICODE 兼容的数据类型存储字符字段。例如,如果将 UNICODE_STRING 参数设置为 FALSE,则字符串数据类型将为 VARCHAR2。如果将 UNICODE_STRING 设置为 TRUE,则字段的数据类型将为 NVARCHAR2。) | TRUE 或 FALSE | |
VERSIONS_INDEX | VERSIONS 表索引的存储方式定义 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
VERSIONS_TABLE | VERSIONS 表的存储方式定义 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
XML_COLUMN_STORAGE | 指定要创建的 XML 列的类型:ArcSDE XML 或原生 DBMS XML | SDE_XML or DB_XML | |
XML_DOC_INDEX | sde_xml_doc<n> 表中 xmldoc<n>_pk 索引和 xml_doc<n>_ix 索引的存储子句 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
XML_DOC_LOB_STORAGE | sde_xml_doc<n> 表中 xml_doc 列的 XML 文档的存储和访问信息 | 有关 LOB 存储参数的信息,请参阅 Oracle 文档。 | |
XML_DOC_MODE | XML 文档的存储类型 | COMPRESSED 或 UNCOMPRESSED | |
XML_DOC_STORAGE | sde_xml_doc<n> 表的存储子句 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
XML_DOC_UNCOMPRESSED_TYPE | XML_DOC_MODE 参数设置为 UNCOMPRESSED 后,XML_DOC_UNCOMPRESSED_TYPE 参数可确定 XML 文档的存储格式 | 由于 XML_DOC_MODE 的默认设置为 COMPRESSED,因此默认情况下 XML_DOC_UNCOMPRESSED_TYPE 参数不存在;可能的值为:CLOB 或者 NCLOB | |
XML_DOC_VAL_LOB_STORAGE | sde_xml_doc<n> 表中 xml_doc_val 列的 XML 文档内容的存储和访问信息 | 有关 LOB 存储参数的信息,请参阅 Oracle 文档。 | |
XML_IDX_INDEX_DOUBLE | sde_xml_idx<n> 表中 double_tag 列的 xmlix<n>_db 索引的存储子句 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
XML_IDX_INDEX_ID | xml_idx<n> 表中 ID 列的 xmlix<n>_id 索引的存储子句 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
XML_IDX_INDEX_PK | sde_xml_idx<n> 表中 xml_key_column 标识列的 xmlix<n>_pk 索引的存储子句 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
XML_IDX_INDEX_STRING | sde_xml_idx<n> 表中 string_tag 列的 xmlix<n>_st 索引的存储子句 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
XML_IDX_INDEX_TAG | sde_xml_idx<n> 表中 tag_id 列的 xmlix<n>_tg 索引的存储子句 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
XML_IDX_INDEX_TEXT | XML 索引创建参数(请参阅《Oracle Text 参考指南》。) | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
XML_IDX_STORAGE | sde_xml_idx<n> 表(XML 列的索引表)的存储子句 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 | |
XML_IDX_TEXT_TAG_STORAGE | sde_xml_idx<n> 表(XML 列的索引表)中 text_tag 列内容的存储方式和访问信息(如果默认情况下未指定任何值或未指定 DISABLE STORAGE IN ROW,则此 LOB 数据将存储在行内。) | <无任何值>、ENABLE STORAGE IN ROW 或 DISABLE STORAGE IN ROW | |
XML_IDX_TEXT_UPDATE_MEMORY | 构建和更新文本索引时使用的内存量,例如,2M 表示将分配 2 MB 的内存 | 一个大于 0 且小于以 MB(使用 M 表示)为单位的可用 RAM 量的整数(有关建议的设置,请参阅 Oracle 文档。) | |
XML_IDX_TEXT_UPDATE_METHOD | Oracle Text 索引更改追踪方法:
| NONE、BUFFERED 或 IMMEDIATE | |
XML_INDEX_TAGS_INDEX | sde_xml_indexes 表的 xml_indextags_pk 索引的存储子句 | 有关 CREATE INDEX 参数的信息,请参阅 Oracle 文档。 | |
XML_INDEX_TAGS_TABLE | sde_xml_index_tags 表的存储子句,以及 tag_name 列和 tag_alias 列中相应的 xml_indextags_ix1 和 xml_indextags_ix2 索引的存储子句 | 有关 CREATE TABLE 参数的信息,请参阅 Oracle 文档。 |
参数的功能描述
以下部分将对之前表中列出的参数进行详细解释。
业务表和索引存储参数
业务表是由 ArcGIS 客户端创建的任意 Oracle 表。使用 B_STORAGE 参数可定义业务表的存储配置。
有五种索引存储参数支持创建业务表索引:
- B_INDEX_USER 参数保存通过 C API 函数 SE_table_create_index 和 sdetable 命令的 create_index 操作创建的用户定义之索引的存储配置。
- B_INDEX_ROWID 参数用于保存 ArcGIS 对注册表中 ObjectID 列(通常称为 ROWID 或 OBJECTID 列)创建的索引的存储方式配置。
- B_INDEX_SHAPE 参数用于保存向业务表添加二进制几何空间列时 ArcGIS 创建的空间列索引的存储方式配置。创建要素类时,ArcGIS 将创建此索引。
- B_INDEX_RASTER 参数用于保存向业务表添加栅格列时 ArcGIS 创建的栅格列索引的存储方式配置。创建要素类时,ArcGIS 将创建此索引。
- B_INDEX_TO_DATE 参数用于指定索引 R<registration_id>_sde_todate 的存储方式。此索引是在对业务表启用存档时创建的,并且在执行存档操作期间更新历史记录表时使用。
A 表和 D 表存储参数
将业务表或要素类注册为版本化业务表或要素类,从而允许多个用户维护和编辑同一个对象。ArcGIS 会为注册版本的每个表创建两个表,即添加表和删除表。
每过一段适当的时间间隔,用户就会合并他们所做的更改和其他用户所做的更改,并协调修改相同要素时产生的所有冲突。
A 表参数
A_STORAGE 参数维护 A 表的存储配置。A 表的名称为 A<n>,其中 <n> 是在 TABLE_REGISTRY 系统表中列出的注册 ID。例如,如果业务表 ROADS 使用注册 ID 10 列出,则 ArcGIS 会创建名为 A10 的 A 表。
另外,还有五个存储参数,用于保存 A 表索引的存储方式配置。
- A_INDEX_RASTER 参数指定为 A 表中栅格列创建的索引的存储配置。索引名称为 SDE_RIX_<N>_A。<N> 为栅格列 ID。
- A_INDEX_ROWID 参数用于保存 ArcGIS 对版本化状态 ID 和 ObjectID(也称为 ROWID)列创建的索引的存储方式配置。A 表的 ROWID 索引名为 A<n>_PK,其中 <n> 是业务表的注册 ID,业务表使用该 ID 与 A 表建立关联。
- A_INDEX_STATEID 参数用于保存 ArcGIS 为添加表中 SDE_STATE_ID 列创建的索引的存储方式配置。SDE_STATE_ID 列索引名为 A<n>_STATE_ID_IX1,其中 <n> 是业务表的注册 ID,业务表使用该 ID 与 A 表建立关联。
- A_INDEX_SHAPE 参数用于保存 ArcGIS 为 A 表中空间列创建的索引的存储方式配置。如果业务表中包含空间列,则会在 A 表中复制空间列及其索引。A 表的空间列索引称为 A<n>_IX1_A,其中 <n> 是在 LAYERS 表中列出的要素类的图层 ID。
- A_INDEX_USER 参数用于保存 ArcGIS 为 A 表创建的用户定义索引的存储方式配置。业务表中用户定义的索引在 A 表中可重复。
D 表参数
D_STORAGE 参数保存 D 表的存储配置。D 表的名称为 D<n>,其中 <n> 是在 TABLE_REGISTRY 系统表中列出的注册 ID。例如,如果业务表 ROADS 列出的注册 ID 为 10,则 ArcGIS 将创建名为 D10 的删除表。
另外,还有两个存储参数用于保存 ArcGIS 为 D 表创建的索引的存储方式配置。D_INDEX_STATE_ROWID 参数用于保存 ArcGIS 为 D 表中 SDE_STATE_ID 和 SDE_DELETES_ROW_ID 列创建的 D<n>_IDX1 索引的存储方式配置。D_INDEX_DELETED_AT 参数用于保存 ArcGIS 为 D 表中 DELETED_AT、SDE_DELETES_ROW_ID 和 SDE_STATE_ID 列创建的 D<n>_PK 索引的存储方式配置。
空间索引与要素表参数
使用 ST_Geometry 存储方式创建的具有空间索引的要素类会在 Oracle 数据库中创建另一个表。此空间索引表的名称为 S<n>_IDX$,其中 <n> 是该表的几何索引值。可通过查询 SDE.ST_GEOMETRY_COLUMNS 表来获取该值。此空间索引表被创建为 Oracle 索引组织表 (IOT)。通过企业 Manager 查看时,ST_Geometry 属性的空间索引显示为 A<n>_IX1。值 <n> 表示存储在 LAYERS 表中的 LAYER_ID 值。
如果创建包含 ST_Geometry 列的分区业务表,您还可能希望对空间索引进行分区。有两种分区方法:全局和局部。默认情况下,将对已分区业务表创建全局分区索引。要创建局部分区索引,则必须在 CREATE INDEX 语句的末尾添加关键字 LOCAL。为使 ArcGIS 能够在空间索引的 CREATE INDEX 语句末尾添加 LOCAL,请在 DEFAULTS 关键字下将 ST_INDEX_PARTITION_LOCAL 设置为 TRUE。
但如果未对包含 ST_Geometry 列的业务表进行分区,则将 ST_INDEX_PARTITION_LOCAL 设置为 TRUE 时会收到以下错误消息:
ORA-14016: underlying table of a LOCAL partitioned index must be partitioned
使用 ArcSDE 压缩二进制存储(LONG RAW 或 BLOB 数据类型)格式创建的要素类会向 Oracle 数据库添加两个表 - 要素表和空间索引表。空间索引表将创建为 S<n>,其中 <n> 是空间索引表中要素类的图层 ID,该值可在 LAYERS 表中找到。将对要素表创建三个索引,对空间索引表创建两个索引。适用于空间索引的配置参数通常以 S_ 开头。
这些表和索引的存储参数与业务表中 B_STORAGE 和 B_INDEX_* 存储参数的用法相同。S_STORAGE 参数用于保存空间索引表及其 Esri ST_Geometry 存储类型的索引的 Oracle CREATE TABLE 存储方式配置。S_INDEX_ALL 参数只适用于二进制存储类型,可保存空间表中第一个索引的 Oracle CREATE INDEX 存储配置。空间索引将创建为 S<n>_IX1,其中 <n> 是索引要素类的图层 ID,该值可在 LAYERS 表中找到。
如果对要素类使用的是二进制存储类型,则 S_INDEX_SP_FID 参数将保存空间表中第二个索引的 Oracle CREATE INDEX 存储配置。空间索引将创建为 S<n>_IX2,其中 <n> 是索引要素类的图层 ID,该值可在 LAYERS 表中找到。
仅当使用二进制存储类型时要素类参数才适用。这些参数以 F_ 开头。
- F_STORAGE 参数保存要素表的 Oracle CREATE TABLE 存储配置字符串。要素表将创建为 F_<n>,其中 <n> 是表要素类的图层 ID,该值可在 LAYERS 表中找到。
- F_INDEX_FID 参数保存要素表中空间列索引的 Oracle CREATE INDEX 存储配置字符串。空间列索引将创建为 F<n>_UK1,其中 <n> 是索引要素类的图层 ID,该值可在 LAYERS 表中找到。
- F_INDEX_AREA 参数保存要素表中面积列索引的 Oracle CREATE INDEX 存储配置。空间列面积索引将创建为 F<n>_AREA_IX2,其中 <n> 是索引要素类的图层 ID,该值可在 LAYERS 表中找到。
- F_INDEX_LEN 参数保存要素表中长度列索引的 Oracle CREATE INDEX 存储配置。空间列长度索引将创建为 F<n>_LEN_IX3,其中 <n> 是索引要素类的图层 ID,该值可在 LAYERS 表中找到。
栅格表和索引存储参数
如果您在指定关键字时将 RASTER_STORAGE 设置为 BLOB,则添加到业务表的栅格列是对存储在包含支持的表和索引的方案中的栅格数据的外键引用。如果将 RASTER_STORAGE 设置为 RASTERBLOB(默认设置),将在业务表上创建 BLOB 列, 并将支持的栅格信息存储在其他表中。如果将 RASTER_STORAGE 设置为 ST_RASTER,可将 ST_Raster 列添加到业务表中,并将支持的栅格信息存储在其他表中。
如果想对数据库中的大部分栅格列使用相同的栅格数据存储格式,在 DEFAULTS 配置关键字下设置一次 RASTER_STORAGE 参数即可。例如,要将默认 RASTER_STORAGE 从 BLOB 更改为 ST_RASTER,会进行以下更改:
## DEFAULTS RASTER_STORAGE "ST_RASTER" <other parameters> END
请注意,ArcGIS 10.4.1 和较早版本的客户端无法创建或访问使用 RASTERBLOB 存储的栅格数据集或镶嵌数据集。
以下栅格表参数定义支持的栅格表和索引的配置。
RASTER_STORAGE 参数将取代 RASTER_BINARY_TYPE,RASTER_BINARY_TYPE 仍可继续使用但不再受支持。
RAS_STORAGE 参数保存 RAS 表的 Oracle CREATE TABLE 的存储配置。
RAS_INDEX_ID 参数保存 RAS 表索引的 Oracle CREATE INDEX 的存储配置。
BND_STORAGE 参数保存 BND 表的 Oracle CREATE TABLE 的存储配置。
BND_INDEX_COMPOSITE 参数保存 BND 表中复合列索引的 Oracle CREATE INDEX 的存储配置。
BND_INDEX_ID 存储参数保存 BND 表中行 ID (RID) 列索引的 Oracle CREATE INDEX 的存储配置。
AUX_STORAGE 参数保存 AUX 表的 Oracle CREATE TABLE 的存储配置。
AUX_INDEX_COMPOSITE 参数保存 AUX 表索引的 Oracle CREATE INDEX 的存储配置。
BLK_STORAGE 参数保存 BLK 表的 Oracle CREATE TABLE 的存储配置。
BLK_INDEX_COMPOSITE 参数保存 BLK 表索引的 Oracle CREATE TABLE 的存储配置。
MD_URI_LOB_STORAGE 参数定义如何将 LOB 存储在镶嵌数据集的 URI 列中。
ArcGIS 为 Oracle 提供三种栅格数据存储格式。RASTER_STORAGE 参数指定使用的几何存储方法。RASTER_STORAGE 参数具有以下值:
- BLOB
- ST_RASTER
- LONGRAW
还有另一类栅格表,即栅格属性表。此表(或这些表;可以存在多个此类表)存储栅格像元值的属性值。B_STORAGE 参数定义这些表的存储方式。如果需要为这些表定义不同于其他要素类业务表的存储位置,请确保创建一个可在创建栅格数据集和栅格目录时使用的栅格关键字(该关键字指定栅格属性表的各种存储信息)。
要了解有关栅格属性表的详细信息,请参阅栅格数据集属性表。
几何存储参数
Oracle 中的地理数据库可使用五种不同的空间数据存储格式。GEOMETRY_STORAGE 参数指定使用的几何存储方法。应在 DEFAULTS 配置关键字中设置 GEOMETRY_STORAGE 参数以反映创建大部分要素类时将使用的几何存储类型。GEOMETRY_STORAGE 参数具有以下可能值:
- ST_Geometry for Oracle - 该类型扩展数据库,以包括 ST_GEOMETRY 数据类型。如果要以此种格式来存储空间数据,请将 GEOMETRY_STORAGE 参数设置为 ST_GEOMETRY。(从 ArcGIS 9.3 开始,如果未设置 GEOMETRY_STORAGE 参数,则假定使用 ST_GEOMETRY 格式。)
- 存储为 BLOB 数据类型的 ArcSDE 压缩二进制
如果要以此种格式来存储空间数据,请将 GEOMETRY_STORAGE 参数设置为 SDELOB。如果要将此格式设置为默认格式,请在 DEFAULTS 配置关键字下将 GEOMETRY_STORAGE 参数设置为 SDELOB。
- ArcSDE 压缩二进制 - 如果要以存储为 LONG RAW 的压缩二进制格式存储空间数据,请将 GEOMETRY_STORAGE 参数设置为 SDEBINARY。
- Oracle Spatial 几何类型 - 此对象关系存储类型将扩展数据库模型以将 SDO_GEOMETRY 类型包括在 Oracle DBMS 中。
如果要以此种格式来存储空间数据,请将 GEOMETRY_STORAGE 参数设置为 SDO_GEOMETRY。如果要将此格式设置为默认格式,请在 DEFAULTS 配置关键字下将 GEOMETRY_STORAGE 参数设置为 SDO_GEOMETRY。
- OGC 熟知二进制 (WKB) 几何类型 - 这种存储类型将几何表示为连续的字节流形式。OGCWKB 表示仅支持简单 2D 几何。
如果您要以这种格式来存储空间数据,请将 GEOMETRY_STORAGE 参数设置为 OGCWKB。如果您要将此格式设置为默认格式,请在 DEFAULTS 配置关键字中将 GEOMETRY_STORAGE 参数设置为 OGCWKB。
XML 参数
XML_COLUMN_STORAGE 参数会确定是以 ArcSDE XML 方式,还是以本机 Oracle XML 方式创建 XML 列。默认设置为使用 ArcSDE XML (SDE_XML)。
一个 XML 列可能有两个文本索引与其关联:一个 XML 文档表文本索引和一个 XML 索引表文本索引。要成功创建 XML 列,XML_IDX_INDEX_TEXT 参数必须具有合适的值。创建 XML 列的上下文文本索引时 PARAMETERS 子句将使用该值。XML_IDX_INDEX_TEXT 参数的相应值与用于创建其他类型索引的 DBTUNE 参数的值不同。PARAMETERS 子句中的值控制文本索引的存储参数、在 XML 文档中建立索引和搜索文本时用于进行语言分析的语言、更新文本索引计划以及特定于文本索引的其他设置。
XML 文档以大对象 (LOB) 形式存储在 XML 文档表的 XML_DOC 和 XML_DOC_VAL 列中以及 XML 索引表的 TEXT_TAG 列中。要获得最佳搜索性能,准确配置这些列很重要。如果 LOB 数据与行中的其他数据存储在同一块中,则将行内存储 LOB。但是,只有 LOB 数据大小小于 4 KB 时才能进行行内存储。对于行外存储,将以 LOB 段的形式存储数据,且仅 LOB 定位器与其余数据一同存储在行内。
可以使用 DBTUNE 参数 XML_DOC_LOB_STORAGE 和 XML_DOC_VAL_LOB_STORAGE 以及 XML_IDX_TEXT_TAG_STORAGE 来指定是将与 XML 列关联的 LOB 数据存储在行内还是行外。附加值 "DISABLE STORAGE IN ROW" 可在行外存储数据,附加值 "ENABLE STORAGE IN ROW" 可在行内存储数据。
对 XML 列行外存储 LOB 数据时,默认情况下,ArcGIS 会将数据存放到 XML 文档表所在的表空间中。另外,可以将 LOB 数据移动到不包含 XML 文档表的其他表空间中。
日志文件表参数
日志文件表供 ArcGIS 使用,用于维护所选记录的集合。
日志文件参数将对日志文件数据表和索引产生影响。它们以字母 L 或单词 SESSION 开头。参数如下:
- LF_STORAGE 定义 LOGFILES 表的配置。
- LF_INDEXES 用于配置 LOGFILES 表中 logfiles_pk 与 logfiles_uk 索引的创建方式。
- LD_STORAGE 定义 LOGFILE_DATA 和 LOGPOOL_<SDE_ID> 表的配置。
- LD_INDEX_ROWID 用于配置 LOGFILE_DATA 表中 LOGFILE_DATA_idx1 索引以及 LOGPOOL_<SDE_ID> 池表中 LOGPOOL_<SDE_ID>_idx1 索引的创建方式。
- LD_INDEX_DATA_ID 用于配置 LOGFILE_DATA 表中 LOGFILE_DATA_idx2 索引以及 LOGPOOL_<SDE_ID> 表中 LOGPOOL_<SDE_ID>_idx1 索引的创建方式。
- SESSION_STORAGE 定义 SESSION_<sde_id> 表的配置。
- SESSION_INDEX 用于配置基于会话的日志文件表中 LOGSESSION_<SDE_ID>_idx1 索引的创建方式。
- Oracle 数据库中不使用 SESSION_TEMP_TABLE。
有关如何在地理数据库中使用日志文件表的详细信息,请参阅有关 Oracle 的日志文件表选项。
用户界面参数
用户界面参数以 UI 开头,用于指示其关联配置关键字在 ArcGIS 用户界面和 ArcObjects 中是否可用。UI_TEXT 用于非复合配置关键字。UI_TOPOLOGY_TEXT 用于拓扑关键字。UI_TERRAIN_TEXT 用于 terrain 关键字。UI_NETWORK_TEXT 用于网络关键字。需要 UI 参数的默认配置关键字已具备 UI 参数。仅在创建您自己的自定义关键字时才需要添加这些参数的其中之一。
BLOB 存储参数
BLOB 可用于 GEOMETRY_STORAGE、RASTER_STORAGE 和 ATTRIBUTE_BINARY 参数。
GEOMETRY_STORAGE 参数控制着在要素类中存储矢量数据的方式。RASTER_STORAGE 参数控制着在栅格数据集、栅格目录或栅格属性中存储栅格数据的方式。最后,ATTRIBUTE_BINARY 参数控制着既不是矢量也不是栅格的所有其他二进制数据的存储。
要创建 BLOB 列,必须在给定配置关键字中对参数进行如下设置:
GEOMETRY_STORAGE SDELOB
RASTER_STORAGE BLOB
ATTRIBUTE_BINARY BLOB
对于矢量数据和栅格数据,Esri 推荐使用以下 LOB 存储参数:
- 始终启用行内存储,因为多数地理信息系统 (GIS) 数据小于 3964 个字节(行内阈值)。在行内存储数据可提供最佳性能。
- 启用缓存,因为会频繁读取地理数据库数据。
- 由于 ArcGIS 不对 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 索引。对于地理数据库数据,不太可能发生这种情况。考虑使用 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 关键字,因为业务表必须包含这些列。相反,您可以创建单独的配置关键字,然后将这些存储参数添加到这些关键字中。在创建表期间将引用包含存储参数的关键字。还应注意,如果特定的关键字不包含存储参数,则将使用 DEFAULTS 关键字的存储参数。鉴于这种情况,如果某关键字的配置字符串与 DEFAULTS 关键字下的存储参数相同,则无需在该关键字中添加特定的存储参数。例如,如果新关键字 ROADS 的所有存储参数(除 B_STORAGE 和 A_STORAGE 以外)都具有与 DEFAULTS 关键字的存储参数相同的配置字符串,那么您只需在 ROADS 关键字下创建 B_STORAGE 和 A_STORAGE 参数。其他所有存储参数都从 DEFAULTS 关键字读取,因为 ROADS 关键字不包含这些参数。
其他参数
某些也可在 DBTUNE 表中设置的参数包括:
COMPRESS_ROLLBACK_SEGMENT 参数
定期压缩版本化数据库的状态树是必须执行的维护过程。
压缩操作的事务往往比较大;如果使用的是 Oracle 手动撤消方法,Esri 建议您创建一个较大的独立回滚段以包含更改内容。COMPRESS_ROLLBACK_SEGMENT 存储参数用于存储为此创建的回滚段的名称。应将 COMPRESS_ROLLBACK_SEGMENT 存储参数添加到 DEFAULTS 配置关键字中。
Oracle 不建议使用手动撤消方法。有关详细信息,请参阅随 Oracle 安装提供的文档。
ATTRIBUTE_BINARY 参数
ArcGIS 可定义用于以 LONG RAW 或 BLOB 形式存储二进制数据的属性列。建议的默认设置设置为 BLOB。
如果使用的是要素类制图表达,则必须使用 ATTRIBUTE_BINARY 参数已设置为 BLOB 的配置关键字创建要素类。如果已将 DEFAULTS ATTRIBUTE_BINARY 值设置为 LONGRAW,则必须创建用户在创建包含制图表达类的要素类时可指定的其他配置关键字。
例如,可以按如下方式添加自定义配置关键字 REPRESENTATIONS:
##REPRESENTATIONS ATTRIBUTE_BINARY BLOB UI_TEXT "Configuration keyword used to create feature classes containing representation classes" END
有关自定义关键字的详细信息,请参阅配置关键字。如果创建要素类时使用的配置关键字将 ATTRIBUTE_BINARY 参数设置为 LONGRAW 且创建了多个制图表达,则会返回一条错误消息:
Unable to create the representation. Underlying DBMS error.
发生这种情况的原因是每次添加新制图表达类时,会向要素类的业务表添加两个新字段 - 一个是 LONG RAW,一个是 BLOB。Oracle 中的表不能包含多个 LONG RAW 字段,因此添加第二个 LONG RAW 字段时操作将失败。
UNICODE_STRING 参数
UNICODE_STRING 参数指定文本列是以 VARCHAR2(非 Unicode)数据类型还是 NVARCHAR2 (Unicode) 数据类型存储。
有关 Unicode 数据的描述,请参阅 Unicode 概述。