HOW TO

Analysieren der state_lineages-Tabelle mit einem Oracle-Datenbankauftrag

Last Published: April 25, 2020

Zusammenfassung

Die SDE.STATE_LINEAGES-Tabelle wird analysiert, wenn die Tabelle während der ArcSDE-Installation oder eines Upgrades erstellt wird. Ab diesem Zeitpunkt analysiert ArcSDE die Tabelle nicht, sondern der DBA ist dafür zuständig.

Wenn die Datenbank in einer Produktionsumgebung verwendet wird, kann die Anzahl an Zeilen in der Tabelle erheblich zunehmen.

Sind die Datenbankstatistiken für die Tabelle nicht aktuell und genau, wählt der Oracle-Optimierer möglicherweise einen Ausführungsplan zum Abrufen von Zeilen aus, der nicht optimal ist. Das kann sich negativ auf alle Versionsabfragen auswirken, da die Abfrage eine Auswahl in der Tabelle vornimmt, um die Lineage für eine Version zu ermitteln. Daher muss die state_lineages-Tabelle je nach Häufigkeit der Bearbeitungsoperationen während des Tages möglicherweise täglich analysiert werden.

Die Lösung besteht darin, einen Oracle-Datenbankauftrag zu verwenden, der die Tabelle in Zeiten mit geringer Auslastung analysiert.

Vorgehensweise



Stellen Sie sicher, dass ein SNP-Prozess läuft, um Aufträge in der Warteschlange im Hintergrund auszuführen. SNP-Prozesse werden regelmäßig aktiviert und führen Aufträge in der Warteschlange aus. SNP-Hintergrundprozesse unterscheiden sich von anderen Oracle-Hintergrundprozessen dahingehend, dass der Fehler eines SNP-Prozesses nicht dazu führt, dass die Instanz fehlschlägt. Schlägt ein SNP-Prozess fehl, startet Oracle ihn neu.

SNP-Hintergrundprozesse führen keine Aufträge aus, wenn das System im eingeschränkten Modus gestartet wurde. Sie können diese Verhalten jedoch mit der ALTER SYSTEM-Anweisung wie folgt aktivieren und deaktivieren:

Code:
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM DISABLE RESTRICTED SESSION;

Zur Erstellung des Datenbankauftrags müssen zwei Schritte ausgeführt werden: das Erstellen der gespeicherten Prozedur, die vom Auftrag ausgeführt werden soll, und das Erstellen des Auftrags, der die Prozedur ausführt.

In SQL*Plus erstellen Sie als SDE-Benutzer die gespeicherte Prozedur, die der Datenbankauftrag ausführt:

Code:
CREATE OR REPLACE PROCEDURE s_lineage_analyze IS

sqlstm VARCHAR2(64);

BEGIN
sqlstm := 'ANALYZE TABLE state_lineages COMPUTE STATISTICS';
EXECUTE IMMEDIATE sqlstm;
END;
/

Sie können die neue gespeicherte Prozedur einfach ausführen, wenn die Statistiken der Tabelle aktualisiert werden müssen.

Code:
EXECUTE s_lineage_analyze;

Es ist jedoch besser, einen Datenbankauftrag zu verwenden, der die Prozedur täglich ausführen kann. Erstellen Sie den Datenbankauftrag, indem Sie die Anforderung in SQL*Plus an die Oracle-Instanz senden.

1. Deklarieren Sie eine Variable namens "jobno", um die Anzahl von Aufträgen zu speichern, wenn Sie die Anforderung senden.

Code:
VARIABLE jobno number;

2. Senden Sie den Datenbankauftrag mithilfe des SYS.DBMS_JOB-Pakets. Wenn ein Benutzer nicht zum Ausführen der Prozedur berechtigt ist, stellen Sie eine Verbindung als SYS-Benutzer her, und gewähren Sie die entsprechenden Berechtigungen Dieses Beispiel sendet jeden Abend um Mitternacht einen Auftrag zur Ausführung der sde.s_lineage_analyze-Prozedur.

Code:
BEGIN
DBMS_JOB.SUBMIT
(:jobno,
'sde.s_lineage_analyze;',
trunc(sysdate) + 1,
'SYSDATE + 1');
COMMIT;
END;
/

Nach dem Senden können Sie den Wert der jobno-Variablen drucken.

Code:
PRINT jobno;

Verwenden Sie "jobno", um den Datenbankauftrag auszuführen. Auf diese Weise wird bestätigt, dass der Auftrag gesendet wurde und ordnungsgemäß funktioniert.

Code:
EXECUTE dbms_job.run(jobno);

Alternativ können Sie aus "user_jobs" die relevanten Informationen für den Auftrag auswählen:

Code:
SELECT job, next_date, interval, failures, broken FROM user_jobs;

Hinweis:
Dieser Artikel stammt teilweise aus der Oracle-Dokumentation. Er soll die Oracle-Dokumentation nicht ersetzen. Weitere Informationen und Erläuterungen finden Sie in der Oracle-Dokumentation.

Artikel-ID:000004488

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Weitere Informationen zu diesem Thema erkunden