Bearbeiten von versionierten Daten in Oracle mit Multiversioned Views und SQL

Sie können versionierte Daten in einer Geodatabase bearbeiten, indem Sie eine für die Daten erstellte Multiversioned View editieren.

Zusammen mit ArcSDE werden verschiedene gespeicherte Prozeduren installiert, die Sie beim Arbeiten mit Multiversioned Views unterstützen. Diese Komponenten und ihre Beschreibungen sind im Folgenden aufgeführt:

Gespeicherte Prozedur

Zweck

Syntax und Beschreibung

sde.version_user_ddl.create_version

Erstellen Sie eine neue Geodatabase-Version.

Bearbeiten Sie stets Ihre eigene, separate Version; mehrere Editoren können nicht dieselbe Version mit Multiversioned Views bearbeiten.

EXEC sde.version_user_ddl.create_version

('<parent_version>', :<child_version_variable>, <name_rule>, <access>, '<description>')

"<parent_version>" die Version ist, aus der Ihre Version erstellt wird.

"<child_version>" der Name der von Ihnen erstellten Version ist.

"<access>" die Berechtigungsstufe der Version ist; 0 = Privat, 1 = Öffentlich, 2 = Geschützt.

"<description>" eine Textbeschreibung der Child-Version ist.

sde.version_util.set_current_version

Legt fest, auf welche Geodatabase-Version Sie zugreifen.

EXEC sde.version_util.set_current_version('<version_name>')

"<version_name>" ist der Name der Geodatabase-Version, zu der Sie eine Verbindung herstellen möchten.

sde.version_user_ddl.edit_version

Startet und beendet eine Editiersitzung.

EXEC sde.version_user_ddl.edit_version('<version_name>',<1 or 2>)

Geben Sie 1 an, um die Editiersitzung zu starten. Geben Sie 2 an, um sie zu beenden.

sde.version_user_ddl.delete_version

Löscht eine Geodatabase-Version.

EXEC sde.version_user_ddl.delete_version('<version_name>')

Wenn Sie versionierte Tabellen in Multiversioned Views bearbeiten, werden Änderungen an den Delta-Tabellen vorgenommen, und Zeilen-ID-Werte (Objekt-ID) für neue Datensätze werden automatisch generiert. Anders als beim Bearbeiten von versionierten Daten in einer ArcGIS-Editiersitzung wird jedoch kein interner Versionsabgleich mit diesen Änderungen vorgenommen.

Zudem wird auf den von der Version beim Starten einer Editiersitzung für eine Multiversioned View referenzierten Status eine exklusive Sperre angewendet. Daher wird dringend davon abgeraten, dass Multiversioned Views zum Bearbeiten der DEFAULT-Version oder einer anderen Version verwendet werden, die gleichzeitig von anderen Benutzern bearbeitet oder abgeglichen werden kann, da Konflikte nicht erkannt werden können und andere Benutzer durch Sperren blockiert werden. Erstellen Sie stattdessen eine eigene Version, die eigens für Ihre Editiersitzung in Multiversioned Views vorgesehen ist.

VorsichtVorsicht:
  • Vorgänge zur Versionsverwaltung, wie das Abgleichen, Lösen von Konflikten und Bereitstellen, müssen mit der ArcGIS-Software durchgeführt werden. Bei nicht ordnungsgemäßem Versions-Management können bei der Arbeit mit Sichten Schäden an der Geodatabase auftreten.
  • Verwenden Sie niemals die DBMS-Werkzeuge (Datenbankmanagementsystem), um Zeilen-ID-Felder (Objekt-ID) zu aktualisieren, die von ArcSDE in der Datenbank verwaltet werden. Diese Objekt-ID-Felder werden von der Geodatabase zugewiesen und verwaltet und dürfen daher per SQL nicht geändert werden.
  • Nehmen Sie niemals Änderungen an der DEFAULT-Version der Geodatabase mit SQL vor. Beim Starten einer Editiersitzung auf einer Version wird eine exklusive Sperre auf den Status angewendet, den die Version referenziert. Wenn Sie die DEFAULT-Version sperren, verhindern Sie, dass ArcGIS-Benutzer eine Verbindung zur Geodatabase herstellen.

In den folgenden Schritten werden Sie durch das Erstellen einer Multiversioned View, Erstellen einer Version für die Bearbeitung, Festlegen der zu bearbeitenden Version, Starten einer Editiersitzung, Durchführen einiger Änderungen über die Multiversioned View, Beenden der Editiersitzung, Übernehmen der Änderungen in der Datenbank und Löschen der Version geführt, die zur Bearbeitung erstellt wurde. In den Beispielen ist die erstellte Multiversioned View zum Durchführen der Änderungen in der Tabelle "code_mv", die für die Bearbeitung erstellte und verwendete Version hingegen "mvedits".

TippTipp:

Denken Sie daran, dass das in einer Multiversioned View bearbeitete Dataset bereits als versioniert registriert sein muss.

Schritte:
  1. Führen Sie an einer MS-DOS- (Windows) oder Shell-Befehlseingabeaufforderung (UNIX oder Linux) das Dienstprogramm "sdetable" aus, um eine Multiversioned View zu erstellen.
    sdetable –o create_mv_view –T code_mv –t code_enf 
    –i sde:oracle11g –u sarja –p not4U@orasvc
  2. Öffnen Sie einen SQL-Client, und deklarieren Sie eine Variable, um die Version zu speichern, die Sie im nächsten Schritt erstellen.
    VARIABLE mv_version NVARCHAR2(10); 
    EXEC :mv_version := 'mvedits';

    In diesem Beispiel ist "mv_version" der Variablenname, "NVARCHAR2(10)" ist der Datentyp der Variable, und "mvedits" ist der Versionsname.

  3. Erstellen Sie eine neue Version, in der Sie die Bearbeitungen vornehmen.
    EXEC sde.version_user_ddl.create_version 
    ('sde.DEFAULT', :mv_version, sde.version_util.C_take_name_as_given, sde.version_util.C_version_private, 'multiversioned view edit version');
  4. Legen Sie die Version für die Editiersitzung auf die soeben erstellte Child-Version fest.
    EXEC sde.version_util.set_current_version('mvedits');
  5. Starten Sie eine Editiersitzung, indem Sie die gespeicherte Prozedur "version_user_ddl.edit_version" ausführen und 1 angeben. "1" bedeutet, dass eine Editiersitzung gestartet wird.
    EXEC sde.version_user_ddl.edit_version('mvedits',1);
  6. Nehmen Sie die erste Änderung an der Multiversioned View mithilfe von SQL vor.

    In diesem Beispiel wird ein bestehender Datensatz aktualisiert.

    UPDATE code_mv 
    SET propowner = 'C. Industry' 
    WHERE vid = 2233
  7. Nehmen Sie die nächste Änderung an der Multiversioned View mithilfe von SQL vor.

    In diesem Beispiel wird ein neuer Datensatz in die Tabelle eingefügt.

    INSERT INTO code_mv (codenum,propowner,shape) 
    VALUES 
    (567, 'Anjo Badsu', sde.ST_PointFromText('point (40 40)', 12));
    TippTipp:

    In der INSERT-Anweisung wird kein Objekt-ID-Wert angegeben. Die Multiversioned View ruft die nächste verfügbare Objekt-ID automatisch ab und fügt sie für die Zeile ein.

    Das Versionieren einer Tabelle, die nur bei ArcSDE registriert wurde und über eine vom Benutzer verwaltete Objekt-ID-Spalte verfügt, ist zwar möglich, aber nicht zu empfehlen. Falls Sie dies doch durchführen, müssen Sie eine Objekt-ID mit den INSERT-Anweisungen bereitstellen. Die Multiversioned View kann keinen Wert für Sie generieren.

  8. Führen Sie eine COMMIT- oder ROLLBACK-Anweisung aus.
  9. Beenden Sie die Editiersitzung, indem Sie die gespeicherte Prozedur "version_user_ddl.edit_version" ausführen, jetzt aber den Wert 2 angeben.

    "2" bedeutet, dass eine Editiersitzung beendet wird.

    EXEC sde.version_user_ddl.edit_version('mvedits',2);
  10. Führen Sie nach Beendigung aller Editierschritte einen Abgleich durch, und schreiben Sie die Änderungen über ArcGIS Desktop zurück. Anschließend können Sie die in Schritt 3 erstellte Geodatabase-Version editieren. Falls Sie die Änderungen nicht benötigen, können Sie die in Schritt 3 erstellte Version löschen, ohne die Änderungen abzugleichen und zurückzuschreiben.
    EXEC sde.version_user_ddl.delete_version('mv_version');

Verwandte Themen


3/6/2012