Deutsch
Continue in the app
Be The First To Get Support Updates
Want to know about the latest technical content and software updates?

How To: Erstellen von Protokolldateitabellen in einer Enterprise-Geodatabase als globale temporäre Tabellen in Oracle

Zusammenfassung

Hinweis: Ab ArcGIS 10.7.1 verwenden Geodatabases in Oracle globale temporäre Tabellen im Besitz des Besitzers, der die Erstellung der Protokolldateitabelle veranlasst hat. Benutzer ohne Datenbankberechtigungen zum Erstellen von Tabellen verwenden globale temporäre Protokolldateitabellen, die sich im Besitz des SDE-Benutzers befinden.

Der folgende Workflow wird für frühere Versionen von ArcGIS verwendet.

Enterprise-Geodatabases verwenden Protokolldateitabellen, um Listen ausgewählter Objekte zu führen. In Oracle werden bei Verwendung der Architektur freigegebener Protokolldateien zwei Tabellen für jedes DBMS-Schema erstellt, das Auswahlen vornimmt. Diese Tabellen sind:

  • SDE_LOGFILES
  • SDE_LOGFILE_DATA

Die "sde_row_ids" der ausgewählten Gruppe werden in diese Tabellen geschrieben, damit sie später von der Anwendung verwendet werden können. Dadurch können Informationen schneller analysiert und verarbeitet werden.

Mitunter können Zeilen in diesen Tabellen getrennt werden. Wenn die Client-Anwendung beispielsweise nicht normal beendet wird, werden Zeilen in diesen Tabellen getrennt. Der Datenbankadministrator (DBA) muss sie dann manuell entfernen.

Der DBA oder der Administrator der Enterprise-Geodatabase kann diese Tabellen als globale temporäre Tabellen neu erstellen, um eine manuelle Bereinigung der Tabellen zu vermeiden.

Globale temporäre Tabellen

Mit globalen temporären Tabellen werden in Oracle Daten beibehalten, die nur für die Dauer einer Sitzung oder Transaktion verfügbar sind. Sobald die Sitzung oder Transaktion abgeschlossen ist, werden die Zeilen aus den temporären Tabellen gelöscht. Das erfolgt basierend auf der Konfiguration der Tabelle (um Zeilen beim Bestätigen entweder beizubehalten oder zu entfernen.)

Da die Informationen von Protokolldateien nur für die Dauer einer Sitzung verfügbar sind, kann die Verwendung globaler temporärer Tabellen die folgenden Vorteile bieten:

  • Zeilen einer Sitzung werden sofort entfernt, wenn die Sitzung beendet wird.
  • Es werden weniger Informationen von Wiederholungsprotokollen generiert.

Darüber hinaus werden diese Segmente und ihre Indizes im temporären Tablespace erstellt. Daher wird der Sicherungs- und Wiederherstellungsprozess nicht beeinträchtigt.

Globale temporäre Tabellen unterstützen bzw. verwalten keine Oracle-Tabellenstatistiken. Daher ist es sehr wichtig zu überprüfen, ob die Funktion für dynamische Stichproben für die Instanz aktiviert ist.

Vorgehensweise

Die bereitgestellten Anweisungen beschreiben, wie Protokolldateitabellen als globale temporäre Tabellen für jedes DBMS-Schema (Datenbankmanagementsystem), das aktuell Protokolldateitabellen besitzt, neu erstellt werden.

Hinweis: Es werden auch Schritte zum Erstellen globaler temporärer Tabellen für neue Benutzer ohne bereits vorhandene permanente SDE-Protokolldateitabellen bereitgestellt.
  1. Löschen von permanenten Protokolldateitabellen
    Löschen Sie die Tabellen "SDE_LOGFILES" und "SDE_LOGFILE_DATA" für jedes DBMS-Schema mit permanenten Protokolldateitabellen.
DROP TABLE sde_logfiles CASCADE CONSTRAINTS; DROP TABLE sde_logfile_data CASCADE CONSTRAINTS;

Nur neue DBMS-Benutzer

Erteilen Sie jedem neuen DBMS-Benutzer ohne bereits vorhandene Protokolldateitabellen die Berechtigung zum Erstellen von Tabellen und zum Erstellen von Sequenzen.

  1. Erstellen globaler temporärer Tabellen
    Für jedes DBMS-Schema müssen die Tabellen "SDE_LOGFILES" und "SDE_LOGFILE_DATA" sowie die verknüpften Indizes erstellt werden.
CREATE GLOBAL TEMPORARY TABLE sde_logfiles ( logfile_name VARCHAR2(256) NOT NULL ENABLE, logfile_id NUMBER(*,0) NOT NULL ENABLE, logfile_data_id NUMBER(*,0) NOT NULL ENABLE, registration_id NUMBER(*,0) NOT NULL ENABLE, flags NUMBER(*,0) NOT NULL ENABLE, session_tag NUMBER(*,0) NOT NULL ENABLE, logfile_data_db VARCHAR2(32), logfile_data_owner VARCHAR2(32), logfile_data_table VARCHAR2(98), column_name NVARCHAR2(32) ) ON COMMIT PRESERVE ROWS;
CREATE UNIQUE INDEX sde_logfiles_pk ON sde_logfiles (logfile_id); CREATE UNIQUE INDEX sde_logfils_uk ON sde_logfiles(logfile_name); CREATE UNIQUE INDEX sde_logfiles_uk2 ON sde_logfiles (logfile_data_id);
CREATE GLOBAL TEMPORARY TABLE sde_logfile_data ( logfile_data_id NUMBER(*,0) NOT NULL ENABLE, sde_row_id NUMBER(*,0) NOT NULL ENABLE ) ON COMMIT PRESERVE ROWS;
CREATE INDEX sde_logfile_data_idx1 ON sde_logfile_data (logfile_data_id, sde_row_id); CREATE INDEX sde_logfile_data_idx2 ON sde_logfile_data (sde_row_id);
  1. Aktivieren von dynamischen Stichproben
    Für globale temporäre Tabellen werden keine Statistiken berechnet. Der kostenbasierte Optimierer (Cost Based Optimizer, CBO) von Oracle verwendet Statistiken, um den effizientesten Zugriffspfad zu ermitteln. Aktivieren Sie die Oracle-Funktion für die dynamische Stichproben bei Statistiken, um sicherzustellen, dass der CBO den besten Ausführungspfad auswählt. Der empfohlene Minimalwert ist 2. Dies ist der Standardwert von Oracle 11g.
  2. Gilt nur für neue DBMS-Benutzer, für die noch keine permanenten SDE-Protokolldateien vorhanden sind
    Erstellen Sie die Sequenz "SDE_LOGFILE_LID_GEN".
CREATE SEQUENCE SDE_LOGFILE_LID_GEN INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E27 MINVALUE 1 NOCYCLE CACHE 20 NOORDER;

Widerrufen Sie die Berechtigung eines Benutzers zum Erstellen von Sequenzen.

Die Berechtigung zum Erstellen von Tabellen für Benutzer, die nur über Leseberechtigungen verfügen, kann ebenfalls widerrufen werden.

Referenzinformationen

Zuletzt geändert: 4/27/2021

Artikel-ID: 000009061

Software: ArcSDE 9.3.1, 9.3, 9.2, 9.1, 9.0, 8.3