English

Bug: Archive feature class' extent not being set when stored as ST_Geometry

Description

If the archive class is stored using ST_Geometry when enabling archiving on a feature dataset or feature class, the archive class' layer's extent is not being set.

Because the archive class' layer's extent is not defined, spatial queries are automatically converted to full table scans by the geodatabase. This impacts the performance and scalability of the ArcSDE server.

Cause

When archiving is enabled for a feature dataset or feature class, all features in the Default version are copied into the archive class. In ArcGIS 9.2, the archive class' layer's extent is not being calculated, when all the features are placed in the archive.

A layer's extent can be detected by using the sdelayer -o describe_long command. The layer's extent or envelope is reported. In the example below, the envelope for the SEWER layer's historic archive is <EMPTY>.

Note:
The name of the Archive layer is the layer name suffixed with _H. If archiving is enabled multiple times the name must be unique so that a number is added (_Hx where x is a number).

Code:
D:\>sdelayer -o describe_long -l sewer_h,shape -i sde:oracle10g

ArcSDE 9.3 for Oracle10g Build 324 Tue Aug 21 12:00:11 2007
Layer Administration Utility
-----------------------------------------------------
Layer Description ....: <None>
Table Owner ..........: TOMB
Table Name ...........: SEWER_H
Spatial Column .......: SHAPE
Layer Id .............: 11
SRID .................: 7
Minimum Shape Id .....: 1
Offset ...............:
falsex: -119670700.000000
falsey: -95612900.000000
System Units .........: 3048.006096
Z Offset..............: 0.000000
Z Units ..............: 1.000000
Measure Offset .......: <None>
Measure Units ........: <None>
XY Cluster Tolerance .: 0.003280833333
Spatial Index ........:
parameter: SPIDX_GRID,GRID0=170,FULL
exist: Yes
array form: 170,0,0
Layer Envelope .......: <EMPTY>
Entities .............: nslc+
Layer Type ...........: Extended SQL Type
Creation Date ........: 08/27/07 11:23:36
I/O Mode .............: NORMAL
Autolocking ..........: Enabled
Precision.............: High
User Privileges ......: SELECT, UPDATE, INSERT, DELETE
Coordinate System ....: PROJCS["NAD_1983_StatePlane_Ohio_South_FIPS_3402_Feet",G
EOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980
",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519
9433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0
],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER[
"Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.0333
3333333333],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Foot_US",0.30480060960121
92]]

Layer Configuration ..: DEFAULTS

When enabling archiving, the archive class' layer's envelope is <EMPTY>.

Workaround

To avoid performance problems while working with the archive class, it is very important to set a non-<EMPTY> layer extent or envelope. When the layer envelope is defined as <EMPTY>, the geodatabase does not apply a spatial filter when working with the archive class. The result is that every query against the archive class reads the entire archive class, which performs a full table scan.

To set a layer's envelope use the sdelayer -o alter command and either have ArcSDE calculate the layer envelope or explicitly set a layer envelope.

Code:
D:\>sdelayer -o alter -l sewer_h,shape -E calc -i sde:oracle10g
ArcSDE 9.3 for Oracle10g Build 324 Tue Aug 21 12:00:11 2007
Layer Administration Utility
-----------------------------------------------------
Successfully Modified the Layer

Note:
See the ArcGIS Documentation Library link in Related Information for additional information on the sdelayer command.

    Related Information