ArcGIS Enterprise
Logfile tabel opties voor geodatabases in Oracle
Enterprise geodatabases gebruiken logfile tabellen om lijsten van geselecteerde records bij te houden. Records worden weggeschreven naar deze tabellen om later gebruikt te kunnen worden door de applicatie in de volgende situaties:
- Als jij (of een tool of een ander proces dat gebruikt wordt) een selectieset maakt van een specifieke omvang: meer dan 100 records in ArcMap, meer dan 1000 records in ArcGIS Pro en meer dan 1000 records als er ObjectID’s bevraagd worden van een feature service.
- Als er een reconcile of post naar een versioned geodatabase plaatsvindt.
- Als een client applicatie data uitcheckt voor disconnected editing.
Logfile tabellen slaan ID’s van de geselecteerde features op, zodat deze opnieuw getoond kunnen worden. Dit zorgt ervoor dat analyses en dataprocessing sneller gaan. Er zijn drie logfile opties: Shared, session-based en pools van session-based logfiles. Deze opties zullen hieronder beschreven worden.
Geodatabases in Oracle maken standaard gebruik van shared logfiles. Als de gebruikte user geen rechten heeft om tabellen of sequences te creëren in de database, dan zal de logfile tabel gemaakt worden als een tijdelijke tabel waarvan de geodatabase administrator de eigenaar is. Dit is voldoende voor de meeste deployments, maar je kunt de instellingen van de logfile tabel aanpassen door gebruik te maken van de Configure Geodatabase Logfile Tables geoprocessing tool.
Shared logfiles
Shared logfiles worden gedeeld door alle sessies die onder dezelfde user een connectie maken. Als er meerdere users een connectie maken met hetzelfde user account, dan plaatsen of verwijderen al deze sessies records in dezelfde logfile data tabel.
Wanneer gebruik je shared logfiles?
Gebruik shared logfiles als elke client en user connectie maken met een ander database user account.
Wanneer kun je shared logfile beter niet gebruiken?
Misschien is het beter om shared logfiles niet te gebruiken als er meerdere connecties gemaakt worden met dezelfde login, bijvoorbeeld als er feature services gepubliceerd worden, die meerdere connecties genereren met dezelfde login. Als meerdere users attribute queries gebruiken op dezelfde feature service, dan kan dit resulteren in conflicten en langere wachttijden voor de SDE_LOGFILE_DATA tabel. In deze gevallen is het beter te kiezen voor session-based logfiles.
Tabellen die gemaakt worden voor shared logfiles
De logfile tabellen die gebruikt worden in deze opties zijn SDE_LOGFILES en SDE_LOGFILE_DATA. Ze worden gemaakt in het schema van de user die de connectie maakt bij de eerste keer dat de user een selectie maakt die de selectiegrens overschrijdt.
SDE_LOGFILES slaat informatie op over elke selectieset (logfile) die gemaakt wordt. De logfile_name en logfile_id kolommen in deze tabel identificeren de naam van de logfile en de logfile_id kolom legt een link van de logfile record naar de SDE_LOGFILE_DATA tabel. De SDE_LOGFILE_DATA tabel bevat de logfile_data_id en de feature identifier voor de geselecteerde records.
Alle records worden verwijderd op het moment dat de selectieset opgeruimd wordt om te voorkomen dat de SDE_LOGFILE_DATA tabel te groot wordt. Op de SDE_LOGFILES tabel vindt een truncate plaats op het moment dat de sessie stopt. Zowel de SDE_LOGFILE_DATA als de SDE_LOGFILES blijven in het schema van de user bestaan.
Permissies die nodig zijn vor shared logfiles
Aangezien de logfile tabellen de user die de connectie maakt als eigenaar hebben, moeten users privileges krijgen waarmee ze de benodigde data objecten kunnen creëren, zoals tabellen. Dit is nodig, ook al heeft de user read-only toegang op de geodatabase. Als de privileges niet gegeven zijn, ontvangt de user een foutmelding bij de eerste keer dat er een selectieset gemaakt wordt die groter is dan de selectiegrens voor de specifieke client applicatie. Let wel: op het moment dat de SDE_LOGFILES en SDE_LOGFILE_DATA tabellen aangemaakt zijn voor de user, kan de geodatabase administrator de privileges intrekken.
De volgende permissies zijn nodig om gebruik te maken van de shared logfiles tabellen in Oracle:
- CREATE SESSION
- CREATE TABLE
- CREATE SEQUENCE
Het CREATE SESSION privilege hebben alle users standaard al. Het is dus alleen nodig om deze toe te wijzen als deze teruggetrokken is vanuit PUBLIC.
Optionele opslagcontrole voor shared logfiles
In Oracle worden de volgende parameters gebruikt voor Beheer van de opslag voor shared logfile tabellen en indexen:
- LD_INDEX_DATA_ID
- LD_INDEX_ROW_ID
- LD _STORAGE
- LF_INDEXES
- LF_STORAGE
Voor meer informatie over deze parameters, zie Oracle configuration parameters.
Session-based logfiles
Session-based logfile data tabellen worden toegewezen aan een enkele sessie en kan verschillende selectiesets bevatten (logfiles). Elke sessie die inlogt heeft een set tabellen nodig voor selecties.
Wanneer gebruik je session-based logfiles?
Session-based logfiles worden gebruikt als er verschillende concurrent connecties gemaakt worden naar de geodatabase met dezelfde login. Bijvoorbeeld, als er veel services zijn die de data bevragen in de geodatabase.
Wanneer kun je de session-based logfiles beter niet gebruiken?
Als je read-only users hebt die connectie maken met de database, dan kunnen session-based logfiles beter niet gebruikt worden. De sessie tabel wordt verwijderd van het user schema als de sessie stopt. Dat houdt in dat deze opnieuw gemaakt moet worden als deze nodig is. De users hebben permissie nodig om tabellen te creëren om gebruik te maken van session-based logfile tabellen.
Tabellen die gemaakt worden voor session-based logfiles
Drie tabellen worden aangemaakt: SDE_LOGFILES, SDE_LOGFILE_DATA en SDE_SESSION. SDE_LOGFILE_DATA wordt eigenlijk niet gebruikt in dit geval, maar deze wordt automatisch aangemaakt. De SDE_LOGFILES tabel slaat informatie op over de selectie plus een sessie tag die toegevoegd wordt aan de naam van de SDE_SESSION tabel. De SDE_SESSION tabel slaat de feature identifier op van de geselecteerde set en de logfile ID.
De SDE_LOGFILES en SDE_LOGFILE_DATA tabellen blijven in de geodatabase. Op de SDE_LOGFILES tabel vindt een truncate plaats wanneer de verbinding verbroken wordt van de verbonden applicatie. Op de SDE_SESSION tabel vindt een truncate plaats wanneer de verbonden applicatie de logfiles verwijderd en de tabel wordt verwijderd als de verbinding van de sessie verbroken wordt.
Permissies die nodig zijn voor session-based logfiles
Session-based logfiles hebben de user die de connectiesessie begon als eigenaar. Dit houdt in dat users privileges moeten hebben om de benodigde database objects te creëren.
Alle users hebben de volgende permissies nodig om session-based logfile tabellen te kunnen gebruiken in Oracle:
- CREATE SESSION
- CREATE TABLE
- CREATE SEQUENCE
Het CREATE SESSION privilege hebben alle users standaard al. Het is dus alleen nodig om deze toe te wijzen als deze teruggetrokken is vanuit PUBLIC.
Optionele opslagcontrole voor session-based logfile tabellen en indexen
Er zijn verschillende parameters onder het LOGFILE_DEFAULTS keyword van de DBTUNE tabel die bepaalt hoe of waar logfile tabellen opgeslagen worden in de database. Deze hoeft niet ingesteld te worden om session-based logfiles te gebruiken, maar kan wel ingesteld worden als aangepast moet worden hoe de SDE_LOGFILES, SDE_LOGFILE_DATA en SDE_SESSION tabellen en indexen opgeslagen worden in de database. In Oracle worden de volgende parameters gebruikt voor beheer van de opslag voor session-based logfile tabellen en indexen:
- LD_INDEX_DATA_ID
- LD_INDEX_ROW_ID
- LD _STORAGE
- LF_INDEXES
- LF_STORAGE
- SESSION_INDEX
- SESSION_STORAGE
Voor meer informatie over deze parameters, zie Oracle configuration parameters.
Logfile pools
De geodatabase administrator heeft de mogelijkheid om een pool van session-based logfiles te maken, die via een checkout gebruikt kan worden door andere users. Shared logfiles kunnen niet via een checkout gebruikt worden vanuit een logfile pool.
Wanneer gebruik je logfile pools?
Je gebruikt een pool van logfiles als je de users niet de mogelijkheid kunt geven om logfile tabellen te creëren in hun eigen schema. Users hebben wel nog steeds permissies nodig om een sessie te creëren of te verbinden met de database.
Wanneer kun je de logfile pools beter niet gebruiken?
In het algemeen kost het gebruik van logfile pools meer onderhoud, omdat er ingeschat moet worden hoeveel logfile tabellen er nodig zijn en het kan zijn dat je bezig bent met het aanpassen van de omvang van de pool of het aantal pools die gebruikt worden.
Tabellen die gemaakt worden voor logfile pools
Het aantal SDE_LOGPOOL_ tabellen die de Configure Geodatabase Logfile Tables tool aanmaakt wordt gespecificeerd in het schema van de geodatabase administrator. Als je bijvoorbeeld 5 tabellen specificeert, dan worden de volgende tabellen aangemaakt in het schema van de geodatabase administrator:
- SDE_LOGPOOL_1
- SDE_LOGPOOL_2
- SDE_LOGPOOL_3
- SDE_LOGPOOL_4
- SDE_LOGPOOL_5
Een extra tabel in het schema van de geodatabase administrator, de SDE_LOGFILE_POOL tabel, is er voor het SDE_ID van de sessie en een tabel ID. De in de naam van de SDE_LOGPOOL tabel correspondeert met de waarde in de table_ID kolom in de SDE_LOGFILE_POOL tabel.
Iedere sessie die een logfile tabel nodig heeft voegt een record toe aan de SDE_LOGFILE_POOL tabel en de sessie wordt toegewezen aan een van de SDE_LOGPOOL_ tabellen. Als er extra logfiles aangemaakt worden door dezelfde sessie, bijvoorbeeld een tweede selectie van 300 records in ArcMap, dan worden de nieuwe logfiles (selectie set) toegevoegd aan dezelfde SDE_LOGPOOL tabel.
Wanneer de logfiles opgeschoond worden, zal er een truncate plaatsvinden van de SDE_LOGPOOL tabel die via een checkout voor de sessie gebruikt is. Voorbeeld: als de tweede selectieset in ArcMap opgeschoond wordt, dan worden de 300 records verwijderd uit de SDE_LOGPOOL tabel, maar de records van de eerste selectie blijven aanwezig. Op het moment dat de eerste selectie opgeruimd wordt, dan worden ook deze records verwijderd uit de SDE_LOGPOOL tabel.
Als een logfile (selectie set) opgeruimd wordt, dan zal er een truncate plaatsvinden van de overeenkomende SDE_LOGPOOL tabel.
Permissies die nodig zijn voor logfile pools
Om de logfile tabellen in de pool te kunnen gebruiken hebben users alleen de mogelijkheid om een databaseconnectie te maken en de objecten in het schema van de geodatabase administrator nodig. De enige permissie die nodig is om gebruik te maken van pools van logfile tabellen is de CREATE SESSION permissie.
Deze wordt standaard toegewezen aan alle users. Het is dus alleen nodig om deze toe te wijzen als deze teruggetrokken is vanuit PUBLIC.
Optionele opslagcontrole voor logfile pools
Er zijn een paar parameters onder het LOGFILE_DEFAULTS keyword die bepalen hoe de SDE_LOGPOOL tabellen en de indexen in geodatabases in Oracle opgeslagen worden:
- LD_STORAGE
- LD_INDEX_ROWID
- LD_INDEX_DATA_ID DBTUNE
Deze drie parameters bepalen ook de opslag van de SDE_LOGFILE_DATA tabel en de indexen.
Voor meer informatie over deze parameters, zie Oracle configuration parameters.
Je hoeft deze niet in te stellen om pools van logfile tabellen te gebruiken, maar je kunt deze wel instellen als je aan wilt passen hoe de SDE_LOGPOOL tabellen en indexen opgeslagen worden in de database.