Enterprise-Geodatabases verwenden Protokolldateitabellen, um eine Liste ausgewählter Datensätze zu führen. Datensätze werden in den folgenden Situationen zur späteren Verwendung von der Anwendung in Protokolldateitabellen geschrieben:
- Ein Client erstellt einen Auswahlsatz mit einer bestimmten Größe (100 Datensätze in ArcMap, 1.000 Datensätze in ArcGIS Pro; 1.000 Datensätze, wenn ObjectIDs von einem Feature-Service angefordert werden).
- Sie nehmen einen Abgleich vor oder schreiben in eine versionierte Geodatabase zurück.
- Eine Client-Anwendung checkt Daten für die entkoppelte Bearbeitung aus.
Es gibt drei Protokolldateioptionen: gemeinsame, sitzungsbasierte und Gruppen sitzungsbasierter Protokolldateien. Jede Option wird in diesem Thema in einem eigenen Abschnitt erläutert.
Geodatabases in PostgreSQL sind standardmäßig freigegebene Protokolldateien, Sie können Einstellungen für Protokolldateitabellen ändern jedoch mit dem Geoverarbeitungswerkzeug Geodatabase-Protokolldateitabellen konfigurieren ändern.
Gemeinsame Protokolldateien
Gemeinsame Protokolldateien können von allen Sitzungen gemeinsam verwendet werden, die als derselbe Benutzer verbunden sind. Wenn mehrere Benutzer eine Verbindung über dasselbe Benutzerkonto herstellen, werden von all diesen Sitzungen Datensätze in dieselbe Protokolldateitabelle eingefügt und daraus gelöscht.
Wann werden gemeinsame Protokolldateien verwendet?
Verwenden Sie gemeinsame Protokolldateien, wenn jeder Client und Benutzer eine Verbindung mit einem anderen Datenbankbenutzerkonto herstellt.
Wann ist die Verwendung von gemeinsamen Protokolldateien nicht empfehlenswert?
In einigen Fällen ist die Verwendung gemeinsamer Protokolldateien nicht empfehlenswert, z. B., wenn Sie einen Feature-Service in ArcGIS for Server veröffentlichen, wodurch mehrere Verbindungen mit denselben Anmeldedaten hergestellt werden. Wenn viele Ihrer Benutzer Attributabfragen für denselben Feature-Service ausführen, kann dies zu Konflikten und längeren Wartezeiten für die SDE_LOGFILE_DATA-Tabelle führen. In diesen Fällen kann es sinnvoll sein, sitzungsbasierte Protokolldateien zu verwenden.
Für gemeinsame Protokolldateien erstellte Tabellen
Für diese Option werden die Protokolldateitabellen "SDE_LOGFILES" und "SDE_LOGFILE_DATA" verwendet. Diese werden im Schema des verbindenden Benutzers erstellt, wenn dieser das erste Mal eine Auswahl trifft, die den Auswahlschwellenwert überschreitet.
In "SDE_LOGFILES" werden Informationen über jeden erstellten Auswahlsatz (Protokolldatei) gespeichert. Die Spalten "logfile_name" und "logfile_id" in dieser Tabelle identifizieren eindeutig den Namen der Protokolldatei. Die Spalte "logfile_id" verknüpft außerdem den Protokolldatei-Datensatz mit der Tabelle "SDE_LOGFILE_DATA". Die Tabelle "SDE_LOGFILE_DATA" enthält die "logfile_data_id" sowie die Feature-Kennung für die ausgewählten Datensätze.
Alle Datensätze werden sofort gelöscht, wenn eine Auswahl gelöscht wird, damit die Tabelle "SDE_LOGFILE_DATA" nicht zu groß wird. Die Tabelle "SDE_LOGFILES" wird abgeschnitten, wenn die Sitzung beendet wird. Sowohl die Tabelle "SDE_LOGFILE_DATA" als auch die Tabelle "SDE_LOGFILES" verbleiben im Benutzerschema.
Berechtigungen zur Verwendung von gemeinsamen Protokolldateien
Da der Besitzer der Protokolldateitabellen der Benutzer ist, der die Verbindung herstellt, muss dieser Benutzer ein Schema besitzen, in dem er Tabellen erstellen kann. In Geodatabases müssen der Benutzer- und der Schemaname übereinstimmen. Wenn der Benutzer über kein passendes Schema verfügt, in dem Tabellen erstellt werden können, wird eine Fehlermeldung zurückgegeben, sobald der Benutzer eine Aktion ausführt, für die Protokolldateitabellen erforderlich sind, etwa beim Starten einer Editiersitzung oder Erstellen eines Auswahlsatzes, der die Schwellenwertgröße der verwendeten Client-Anwendung überschreitet.
Die folgenden Berechtigungen sind erforderlich, um gemeinsame Protokolldateitabellen in PostgreSQL verwenden zu können:
- CONNECT
- USAGE für das Benutzerschema
- CREATE für das Benutzerschema
Beachten Sie, dass durch das Gewähren von AUTHORIZATION-Berechtigungen automatisch USAGE- und CREATE-Berechtigungen übertragen werden. Wenn Sie jedoch nicht möchten, dass Benutzer Tabellen erstellen, können Sie keine AUTHORIZATION-Berechtigungen gewähren. Erteilen Sie stattdessen jedem Benutzer USAGE- und CREATE-Berechtigungen für ihre Schemas, damit Sie die CREATE-Berechtigungen nach der Erstellung der freigegebenen Protokolldateitabellen zurücknehmen können. Die USAGE-Berechtigung muss erhalten bleiben, sodass die Benutzer zukünftig in die Protokolldateitabellen schreiben können.
Beispiel: Jan Müller ist Städteplaner, der nur Daten aus der Geodatabase auswählt, um Analysen für seine Arbeit zu erstellen. Aus diesem Grund ist er ein Benutzer mit schreibgeschütztem Zugriff. Damit Jan jedoch die erforderlichen SDE_LOGFILES- und SDE_LOGFILE_DATA-Tabellen zum Speichern von Auswahlsets erstellen kann, muss er über die entsprechenden Berechtigungen für sein eigenes Schema verfügen.
Anstatt Jan unbegrenzte Berechtigungen zum Erstellen von Tabellen zu gewähren, erstellt der Benutzer "sde" ein Schema für Jan und gewährt ihm vorübergehend CREATE- und USAGE-Berechtigungen für das Schema. Der Benutzer "sde" bittet Jan dann, sich von ArcMap bei der Geodatabase anzumelden und eine Auswahl von 101 oder mehr Features zu treffen. Dadurch werden die erforderlichen Tabellen im Schema erstellt. Nach der Erstellung der Tabellen nimmt der Benutzer "sde" die CREATE-Berechtigung von Jan zurück.
Optionale Steuerung für freigegebene Protokolldateitabellen und Indizes
Zum Schlüsselwort "LOGFILE_DEFAULTS" der DBTUNE-Tabelle gehören mehrere Parameter, mit denen Sie steuern können, wie und wo Protokolldateitabellen in der Datenbank gespeichert werden. Zur Verwendung von gemeinsamen Protokolldateien müssen diese Parameter nicht festgelegt werden, Sie können sie jedoch verwenden, um die Speichermethode für die SDE_LOGFILES- und SDE_LOGFILE_DATA-Tabellen sowie für die Indizes in der Datenbank zu ändern.
Für PostgreSQL stehen folgende Parameter zur Verfügung:
- LD_INDEX_ALL
- LD_STORAGE
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
Weitere Informationen finden Sie unter Konfigurationsparameter für PostgreSQL.
Sitzungsbasierte Protokolldateien
Sitzungsbasierte Protokolldatei-Datentabellen beziehen sich auf eine einzelne Sitzung und können mehrere Auswahlsätze (Protokolldateien) enthalten. Jede angemeldete Sitzung benötigt einen Tabellensatz für Auswahlen.
Wann werden sitzungsbasierte Protokolldateien verwendet?
Die Verwendung von sitzungsbasierten Protokolldateien empfiehlt sich, wenn gleichzeitig mehrere Geodatabase-Verbindungen mit denselben Anmeldedaten hergestellt werden. Wenn beispielsweise viele Services auf die Daten in Ihrer Datenbank verweisen, können Sie sitzungsbasierte Protokolldateien verwenden.
Wann ist die Verwendung von sitzungsbasierten Protokolldateien nicht empfehlenswert?
Wenn Nur-Lesen-Verbindungen mit der Datenbank hergestellt werden, können Sie sitzungsbasierte Protokolldateien nicht verwenden.
Die Sitzungstabelle wird aus dem Schema des Benutzers gelöscht, wenn die Sitzung beendet wird. Das heißt, sie muss bei Bedarf wiederhergestellt werden. Aus diesem Grund müssen Benutzer über die Berechtigung zum Erstellen von Tabellen verfügen, damit sitzungsbasierte Protokolldateien verwendet werden können.
Für sitzungsbasierte Protokolldateien erstellte Tabellen
Es werden drei Tabellen erstellt: SDE_LOGFILES, SDE_LOGFILE_DATA und SDE_SESSION <SDE_ID >. "SDE_LOGFILE_DATA" wird in diesem Fall nicht verwendet, aber automatisch erstellt. In der SDE_LOGFILES-Tabelle werden Informationen über den Auswahlsatz und das Sitzungs-Tag "<SDE_ID>" gespeichert, das an den Namen der SDE_SESSION-Tabelle angehängt wird. In der SDE_SESSION-Tabelle werden die Feature-Kennung für den ausgewählten Satz und die Protokolldatei-ID gespeichert.
Die SDE_LOGFILES- und SDE_LOGFILE_DATA-Tabellen verbleiben in der Geodatabase. Die SDE_LOGFILES-Tabelle wird abgeschnitten, wenn die verbindende Anwendung getrennt wird. Die SDE_SESSION<SDE_ID>-Tabelle wird abgeschnitten, sobald die verbindende Anwendung die Protokolldateien löscht. Die Tabelle wird gelöscht, sobald die Sitzung getrennt wird.
Berechtigungen zur Verwendung sitzungsbasierter Protokolldateien
Besitzer der sitzungsbasierten Protokolldateien ist der Benutzer, der die verbindende Sitzung gestartet hat. Das bedeutet, dass andere Benutzer Berechtigungen zum Erstellen der erforderlichen Datenbankobjekte benötigen.
Um sitzungsbasierte Protokolldateien in PostgreSQL verwenden zu können, müssen alle Benutzer die folgenden Berechtigungen haben:
- CONNECT
- AUTHORIZATION-Berechtigungen für das Schema des Benutzers (mit AUTHORIZATION werden automatisch USAGE- und CREATE-Berechtigungen übertragen
Optionale Steuerung für sitzungsbasierte Protokolldateitabellen und Indizes
Zum Schlüsselwort "LOGFILE_DEFAULTS" der Tabelle "sde_dbtune" gehören mehrere Parameter, mit denen Sie steuern können, wie und wo Protokolldateitabellen in der Datenbank gespeichert werden. Zur Verwendung von sitzungsbasierten Protokolldateien müssen diese Parameter nicht festgelegt werden, Sie können sie jedoch verwenden, um die Speichermethode für die SDE_LOGFILES-, SDE_LOGFILE_DATA- und SDE_SESSION-Tabellen sowie für die Indizes in der Datenbank zu ändern.
Für PostgreSQL stehen folgende Parameter zur Verfügung:
- LD_INDEX_ALL
- LD_STORAGE
- LF_INDEX_ID
- LF_INDEX_NAME
- LF_STORAGE
- SESSION_INDEX
- SESSION_STORAGE
Eine Beschreibung dieser Parameter finden Sie unter Konfigurationsparameter in PostgreSQL.
Protokolldatei-Pools, deren Besitzer der SDE-Benutzer ist
Der Geodatabase-Administrator kann einen Pool von sitzungsbasierten Protokolldateien erstellen, die ausgecheckt und von anderen Benutzern verwendet werden können. Gemeinsame Protokolldateien können nicht aus einem Protokolldatei-Pool ausgecheckt werden.
Durch das Verwenden eines Pools von Protokolldateien kann vermieden werden, dass Benutzern die zum Erstellen von Objekten in der Datenbank notwendigen Berechtigungen erteilt werden müssen.
Verwendung von Protokolldatei-Pools
Verwenden Sie einen Protokolldatei-Pool, wenn Sie Benutzern nicht die Möglichkeit geben können, Protokolldateitabellen in ihren eigenen Schemas zu erstellen. Die Benutzer benötigen jedoch trotzdem Berechtigungen zum Erstellen von Sitzungen bzw. zum Herstellen von Datenbankverbindungen.
Wann ist die Verwendung von Protokolldatei-Pools nicht empfehlenswert?
Schlussendlich ist der Wartungsaufwand bei der Verwendung von Protokolldatei-Pools geringfügig höher, da Sie die Anzahl der notwendigen Protokolldateitabellen berechnen müssen, und möglicherweise müssen Sie die Größe des Pools oder die Anzahl der verwendeten Pools anpassen. Beachten Sie, dass durch einen großen Protokolldatei-Pool oder durch eine große Anzahl an Protokolldatei-Pools die Performance negativ beeinflusst werden kann.
Für freigegebene Protokolldatei-Pools erstellte Tabellen
Sie legen die Anzahl der SDE_LOGPOOL_<table_ID>-Tabellen fest, die vom Werkzeug Einstellungen für Protokolldateitabellen ändern im Schema des Benutzers "sde" erstellt werden. Wenn Sie beispielsweise 5 Tabellen festlegen, werden die folgenden Tabellen im Schema "sde" erstellt:
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
In einer zusätzlichen Tabelle im Schema "sde", SDE_LOGFILE_POOL, werden die SDE_ID der Sitzung und eine Tabellen-ID aufgezeichnet. Der Teil "<table_ID>" im Namen der SDE_LOGPOOL-Tabelle entspricht dem Wert der Spalte "table_ID" in der SDE_LOGFILE_POOL-Tabelle.
Jede Sitzung, für die eine Protokolldateitabelle erforderlich ist, fügt der SDE_LOGFILE_POOL-Tabelle einen Datensatz hinzu, und die Sitzung wird einer der SDE_LOGPOOL_<table_ID>-Tabellen zugeordnet. Wenn in derselben Sitzung zusätzliche Protokolldateien erstellt werden, wenn z.B. in einer ArcMap-Sitzung ein zweiter Auswahlsatz mit 300 Datensätzen erstellt wird, werden die neuen Protokolldateien derselben SDE_LOGPOOL-Tabelle hinzugefügt.
Wenn Protokolldateien gelöscht werden, wird die SDE_LOGPOOL-Tabelle, die für die Sitzung ausgecheckt wurde, abgeschnitten. Wenn beispielsweise der zweite Auswahlsatz in der ArcMap-Sitzung gelöscht wird, werden die 300 Datensätze aus der SDE_LOGPOOL-Tabelle entfernt, die Datensätze des ersten Auswahlsatzes bleiben jedoch erhalten. Wenn der erste Auswahlsatz gelöscht wird, werden die Datensätze des ersten Auswahlsatzes aus der SDE_LOGPOOL-Tabelle entfernt.
Wenn eine Protokolldatei (ein Auswahlsatz) gelöscht wird, wird die entsprechende SDE_LOGPOOL-Tabelle abgeschnitten.
Erforderliche Berechtigungen für Protokolldatei-Pools
Um die Protokolldateitabellen im Pool verwenden zu können, müssen Benutzer die Möglichkeit haben, eine Datenbankverbindung herzustellen und die Objekte im Schema des Benutzers "sde" zu verwenden. Insbesondere sind die folgenden Berechtigungen erforderlich:
- CONNECT
- USAGE für das Benutzerschema
Optionale Speichersteuerung für Pools mit Protokolldateien
Zum Schlüsselwort "LOGFILE_DEFAULTS" der Tabelle "sde_dbtune" gehören einige wenige Parameter, mit denen Sie steuern können, wie die SDE_LOGPOOL<SDE_ID>-Tabellen und die zugehörigen Indizes gespeichert werden.
Enterprise-Geodatabases in PostgreSQL verwenden die Parameter LD_STORAGE und LD_INDEX_ALL in der Tabelle "sde_dbtune", um die Speichermethode für die SDE_LOGPOOL<SDE_ID>-Tabellen und die zugehörigen Indizes festzulegen. Mit diesen beiden Parametern wird auch die Speicherung der Tabelle "SDE_LOGFILE_DATA" und der zugehörigen Indizes gesteuert. Eine Beschreibung dieser Parameter finden Sie unter Konfigurationsparameter in PostgreSQL.
Zur Verwendung von Protokolldatei-Pools müssen diese Parameter nicht festgelegt werden, Sie können sie jedoch verwenden, um die Speichermethode für die SDE_LOGPOOL<SDE_ID>-Tabellen sowie für die Indizes in der Datenbank zu ändern.