DBTUNE-Speicherparameter für Oracle Spatial
Die Speicherparameter für Oracle Spatial unterscheiden sich von denen anderer Oracle-Datenbanken, die mit ArcSDE verwendet werden. Daher wird die Verwendung der Speicherparameter mit Oracle Spatial nachfolgend erläutert und anhand von Beispielen verdeutlicht.
Erstellen neuer Business-Tabellen
In ArcSDE werden die Speicherparameter B_STORAGE, B_INDEX_ROWID und B_INDEX_USER verwendet, um die Business-Tabelle und die nicht räumlichen Indizes in der Business-Tabelle zu speichern.
Erstellen von Oracle Spatial-Metadaten für neue Feature-Classes
Die Datenbanksicht USER_SDO_GEOM_METADATA ist Teil von Oracle Spatial, nicht von ArcSDE. Sie enthält Metadaten über SDO_GEOMETRY-Spalten in vorhandenen Tabellen, die dem Benutzer gehören. Jeder Benutzer verfügt über eine eigene USER_SDO_GEOM_METADATA-Sicht. Damit eine Indizierung und Abfrage möglich ist, muss der Besitzer der Tabelle Metadaten für jede SDO_GEOMETRY-Spalte in USER_SDO_GEOM_METADATA aufzeichnen. Die ArcSDE-Clients, die eine Feature-Class erstellen, wählen die Metadaten für die Feature-Class aus. Häufig übernehmen diese Clients ein Konfigurationsschlüsselwort, das einer Parametergruppe in der DBTUNE-Tabelle entspricht.
Folgende Speicherparameter steuern die Metadaten für neue Oracle Spatial-Feature-Classes:
SDO_DIMNAME_<n> SDO_LB_<n> SDO_UB_<n> SDO_TOLERANCE_<n> SDO_SRID
Wenn das beim Erstellen der Feature-Class angegebene Konfigurationsschlüsselwort den Parameter SDO_SRID enthält und hierfür ein gültiges Koordinatenbezugssystem angegeben ist, wird der SDO_SRID-Wert verwendet und in die Ansicht USER_SDO_GEOM_METADATA geschrieben, selbst wenn vom Client ein anderes Koordinatenbezugssystem angegeben wird.
In Oracle Spatial sind Feature-Geometrien mit zwei, drei oder vier Dimensionen in den Kombinationen X/Y, X/Y/Z, X/Y/M (Messwert) oder X/Y/Z/M zulässig. Über diese Speicherparameter können Sie in ArcSDE Metadaten für jede Dimension angeben. Das "<n>" in einigen Parameternamen muss je nach Dimensionsanzahl durch die Ziffer (1, 2, 3 oder 4) ersetzt werden. Wenn Sie diese Speicherparameter nicht angeben, bestimmt die ArcSDE-Client-Anwendung, die die Feature-Class erstellt, den Namen, den oberen und unteren Grenzwert (die Ausdehnung) sowie die Toleranz der einzelnen Dimensionen.
Oracle Spatial lässt auch Feature-Geometrien mit X/Y/M/Z zu; verwenden Sie diese jedoch nicht mit ArcSDE.
Erstellen eines räumlichen Indexes
Der DBTUNE-Parameter SDO_INDEX_SHAPE bestimmt, wie Oracle Spatial den räumlichen Index erstellt. ArcSDE hängt den Inhalt dieses Parameters (die Konfigurationszeichenfolge) an die Anweisung CREATE INDEX an, bevor die Anweisung an Oracle gesendet wird. Die Konfigurationszeichenfolge wird nach dem Schlüsselwort PARAMETERS in die SQL-Anweisung eingefügt. Beispiel:
CREATE INDEX MY_SP_INDEX ON MY_SP_TABLE(SHAPE) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ( <configuration string is inserted here> );
Bei der Konfigurationszeichenfolge handelt es sich um eine Zeichenfolge in Anführungszeichen mit einer Liste von Parameter=Wert-Elementen. In der Konfigurationszeichenfolge können zahlreiche Parameter angegeben werden. Informationen zu den Oracle Spatial-Indexparametern und ihrer Interaktion finden Sie in den entsprechenden Abschnitten des Handbuchs Oracle Spatial User's Guide and Reference.
Beachten Sie die Unterschiede zwischen den physischen Speicherparametern in der Konfigurationszeichenfolge des räumlichen Indexes und in einer Konfigurationszeichenfolge einer Business-Tabelle (wie in B_STORAGE angegeben). Ein Unterschied entsteht dadurch, dass Oracle eine bestimmte Formatierung der Parameter in SQL-Anweisungen erwartet. Da die Oracle-Anweisungen anders formatiert sind, sind auch die Konfigurationszeichenfolgen anders formatiert. Zudem steht nicht jeder physische Speicherparameter, der für die Erstellung von Tabellen verwendet wird, für die Erstellung von räumlichen Indizes zur Verfügung.
B_STORAGE "TABLESPACE ORSPBIZ PCTFREE 10 INITRANS 4 STORAGE(INITIAL 512000)" SDO_INDEX_SHAPE "tablespace=ORSPIDX initial=512000"
Beispiel für DBTUNE-Parametergruppen für Oracle Spatial-Feature-Classes
In diesem Abschnitt werden DBTUNE-Parametergruppen vorgestellt, die für mehrere allgemeine Szenarien gelten. (Denken Sie daran, dass Parameter nach Konfigurationsschlüsselwort sortiert werden.) Die Speicherparameter für Oracle Spatial-Feature-Classes werden in diesen Beispielen hervorgehoben.
Oracle und ESRI empfehlen die Verwendung von räumlichen R-Baum-Indizes mit SDO_GEOMETRY-Speicher. In einigen der folgenden Beispiele wird der Parameter "sdo_indx_dims=2" verwendet. Dieser Parameter gibt an, wie viele Dimensionen mit einem räumlichen R-Baum-Index indiziert werden sollen. In Oracle 9.2 lautet der Standardwert 2; dies sind die ersten beiden Dimensionen (X und Y). In früheren Oracle-Versionen wurde als Standardwert die in USER_SDO_GEOM_METADATA aufgezeichnete Anzahl an Dimensionen verwendet. Beim Erstellen von räumlichen R-Baum-Indizes für andere Dimensionen als X und Y traten zahlreiche Probleme auf. So unterstützt Oracle beispielsweise keine R-Baum-Indizes für die M-Dimension (Messwert). Wenn Sie räumliche R-Baum-Indizes erstellen und mit einer Oracle-Version vor 9.2 arbeiten, sollten Sie diesen Parameter immer einschließen.
Wenn Sie Oracle Spatial nicht standardmäßig verwenden, können Sie eine einfache Parametergruppe erstellen, um Oracle Spatial-Feature-Classes zu erstellen, die größtenteils Standardeinstellungen verwenden. Die Tabellen und Indizes werden im Standard-Tablespace des Benutzers erstellt. Dabei werden standardmäßige physische Speicherparameter verwendet, sofern nicht in der Parametergruppe DEFAULTS anders angegeben. Bei dem räumlichen Index handelt es sich um einen zweidimensionalen R-Baum.
##SDO_GEOMETRY GEOMETRY_STORAGE "SDO_GEOMETRY" SDO_INDEX_SHAPE "sdo_indx_dims=2" UI_TEXT "Oracle Spatial: default settings" END
Wenn Daten häufig mit einer bestimmten Raumbezugskennung (SRID, Spatial Reference Identifier) wie beispielsweise der geodätischen SRID 8307 (Breite/Länge WGS84) geladen werden, können Sie in Oracle Spatial eine erweiterte Version der vorherigen Parametergruppe erstellen. Sie müssen den oberen und den unteren Grenzwert sowie die Toleranz nicht angeben, können dies jedoch tun, wenn alle Feature-Classes für die X- und Y-Dimensionen die gleichen Metadaten aufweisen sollen. Dies ist nützlich, wenn Sie die Feature-Classes im gleichen Feature-Dataset verwenden möchten. Dieser Fall gibt außerdem an, dass alle Polygongrenzen mit umgekehrter Rotation neu angeordnet werden, bevor sie an ArcSDE-Clients gesendet werden.
Bei geodätischen Daten in Oracle9i werden die Ausdehnungen in Dezimalgrad und die Toleranzen in Meter angegeben.
##SDO_GEOMETRY_8307 GEOMETRY_STORAGE "SDO_GEOMETRY" SDO_INDEX_SHAPE "sdo_indx_dims=2" SDO_SRID 8307 SDO_DIMNAME_1 "Lon" SDO_LB_1 -180.000000 SDO_UB_1 180.000000 SDO_TOLERANCE_1 0.05 SDO_DIMNAME_2 "Lat" SDO_LB_2 -90.000000 SDO_UB_2 90.000000 SDO_TOLERANCE_2 0.05 UI_TEXT "Oracle Spatial: WGS84" END
Das folgende Beispiel kann verwendet werden, um eine Feature-Class mit einem räumlichen R-Baum-Index in den Tablespace ORSPBIZ zu laden. Der räumliche R-Baum-Index wird im Tablespace ORSPIDX erstellt. Die Werte für die Metadaten werden von dem ArcSDE-Client bestimmt, der die Daten lädt.
##SDO_GEOMETRY_ORSPBIZ GEOMETRY_STORAGE "SDO_GEOMETRY" B_STORAGE "TABLESPACE ORSPBIZ" SDO_INDEX_SHAPE "tablespace=ORSPIDX sdo_indx_dims=2" UI_TEXT "Tablespace ORSPBIZ / ORSPIDX" END
Mit dem folgenden Beispiel kann eine Feature-Class mit einem räumlichen Quadtree-Index geladen werden, der die feste Kachelebene 6 aufweist. Der räumliche Index wird im Tablespace ORSPIDX erstellt.
Bei Quadtree-Indizes ist das Übernahmeintervall wichtig, bei räumlichen R-Baum-Indizes wird es jedoch ignoriert. Es gibt die Anzahl der Business-Tabellendatensätze an, die verarbeitet werden, bevor die Indexdaten übernommen werden. Ohne diese Angabe werden alle Datensätze der Business-Tabelle verarbeitet, bevor die Indexdaten übernommen werden. Dies führt beim Indizieren von Tabellen mit vielen Datensätzen zu Problemen.
Der Parameter "sdo_commit_interval" ist so wichtig, dass er von ArcSDE automatisch in SQL-Indizierungsanweisungen für Oracle Spatial-Tabellen eingeschlossen wird, auch wenn Sie ihn nicht als Teil des Parameters SDO_INDEX_SHAPE angeben. Als Wert wird 1.000 verwendet.
##SDO_GEOMETRY_QT_6 GEOMETRY_STORAGE "SDO_GEOMETRY" SDO_INDEX_SHAPE "tablespace=ORSPIDX sdo_level=6 sdo_commit_interval=1000" END
Wenn Sie Ihre eigenen Parametergruppen entwerfen, können Sie Parameter für andere Geodatabase-Konstrukte hinzufügen, beispielsweise für geometrische Netzwerke oder Terrains. Sie können diese Anforderungen auch erfüllen, indem Sie Parameter in der Parametergruppe DEFAULTS festlegen.
Wenn Sie beispielsweise den Parameter GEOMETRY_STORAGE der Schlüsselwortliste DEFAULTS auf SDO_GEOMETRY festlegen, werden beim Erstellen von Topologien, Netzwerken und Terrains die standardmäßigen zusammengesetzten Schlüsselwörter verwendet. Da GEOMETRY_STORAGE in den standardmäßigen zusammengesetzten Schlüsselwörtern nicht angegeben wird, wird der GEOMETRY_STORAGE-Wert unter DEFAULTS verwendet, in diesem Fall SDO_GEOMETRY.
Wenn der DEFAULTS GEOMETRY_STORAGE-Wert nicht auf SDO_GEOMETRY festgelegt ist, Sie jedoch beispielsweise ein Terrain erstellen möchten, das den SDO_GEOMETRY-Speichertyp verwendet, müssen Sie eine neue Gruppe von Terrain-Schlüsselwörtern zur Speicherung von Terrains mit dem SDO_GEOMETRY-Speichertyp erstellen. Das folgende Beispiel zeigt, wie dies in der Datei "dbtune.sde" aussieht:
##TERRAIN_SDO UI_TERRAIN_TEXT "The terrain default configuration" GEOMETRY_STORAGE "SDO_GEOMETRY" B_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc" B_INDEX_ROWID "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" B_INDEX_SHAPE "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" B_INDEX_USER "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" END ##TERRAIN_SDO::EMBEDDED GEOMETRY_STORAGE "SDO_GEOMETRY" B_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc" B_INDEX_ROWID "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" B_INDEX_SHAPE "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" B_INDEX_USER "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" END