ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Aide
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plateforme cartographique de votre organisation

ArcGIS Desktop

Un SIG professionnel complet

ArcGIS Enterprise

SIG dans votre entreprise

ArcGIS for Developers

Outils de création d'applications de localisation

ArcGIS Solutions

Modèles d'applications et de cartes gratuits pour votre secteur d'activité

ArcGIS Marketplace

Téléchargez des applications et des données pour votre organisation.

  • Documentation
  • Support
Esri
  • Se connecter
user
  • Mon profil
  • Déconnexion

ArcMap

  • Accueil
  • Commencer
  • Carte
  • Analyser
  • Gérer les données
  • Outils
  • Extensions

Recréer les index des tables système

Disponible avec une licence Standard ou Advanced.

  • Utiliser l'outil Recréer les index
  • Planifier un script Python

La base de données utilise des index pour identifier rapidement les lignes qui correspondent au filtre de prédicat d'une requête. La plupart des tables système de géodatabase possèdent des index, mais les tables qui ont tendance à avoir la plus grande quantité de modifications dans une géodatabase d'entreprise versionnée et, par conséquent, qui nécessitent la recréation la plus fréquente des index sont les tables système states, state_lineages et mv_tables_modified. En tant qu’administrateur de géodatabase, vous pouvez recréer les index sur ces tables des géodatabases dans IBM Db2, Microsoft SQL Server, Oracle ou PostgreSQL, à l’aide de l’outil de géotraitement Recréer les index.

Dans une géodatabase versionnée fortement modifiée (traditionnelle), vous pouvez mettre à jour pendant la nuit les index sur les tables states, state_lineages et mv_tables_modified. Pour cela, créez un script Python autonome qui appelle l'outil Recréer les index et planifiez son exécution à l'aide de l'application Tâches planifiées de Windows ou d'une tâche cron.

Astuce:

Les propriétaires de données peuvent également utiliser l'outil Recréer les index pour recréer les index attributaires et spatiaux sur leurs données. Reportez-vous à la rubrique Recréer des index de jeu de données pour plus d'informations.

Utiliser l'outil Recréer les index

Pour recréer les index sur les tables système de géodatabase states, state_lineages et mv_tables_modified à l'aide de l'outil Recréer les index, procédez comme suit :

  1. Démarrez un client ArcGIS Desktop et connectez-vous à la géodatabase en tant qu’administrateur de géodatabase.
  2. Ouvrez l'outil de géotraitement Recréer les index.

    Cet outil se trouve dans le jeu d'outils Geodatabase Administration de la boîte à outils Gestion des données.

  3. Utilisez la connexion que vous avez créée à l'étape 1 comme Connexion à la géodatabase en entrée.
  4. Cochez la case Inclure les tables du système.
  5. Décochez la case Recréer les tables de deltas uniquement.
  6. Cliquez sur OK (ArcMap) ou sur Exécuter (ArcGIS Pro).

Planifier un script Python

Pour exécuter ce script, vous devez être en mesure de vous connecter à la géodatabase en tant qu'administrateur de géodatabase. Vous pouvez créer un fichier de connexion (.sde) et pointer dessus à partir du script, ou saisir directement les informations de connexion dans le script. Ensuite, planifiez l'exécution du script à l'aide des tâches planifiées de Windows ou du démon Linux cron.

  1. Copiez l'un des scripts suivants vers un ordinateur où Python et l'un des produits ArcGIS suivants sont installés :
    • ArcGIS Desktop (Desktop Standard ou Desktop Advanced)
    • ArcGIS Engine avec l'extension Geodatabase Update
    • ArcGIS Server

    Modifiez les scripts avec les informations spécifiques à votre site.

    Cet exemple de script contient les informations nécessaires pour se connecter à une base de données Oracle pour mettre à jour les index sur les tables système states, state_lineages et mv_tables_modified :

    # Name: RSysIdxOracle.py
    # Description: Rebuilds indexes on the states, state_lineages,
    # and mv_tables_modified tables in an enterprise geodatabase
    # in Oracle.
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    platform = ORACLE
    instance = "myserver/orcl"
    account_authentication = OPERATING_SYSTEM_AUTH | DATABASE_AUTH
    #Leave username and password blank if using OPERATING_SYSTEM_AUTH
    username = gdb_admin
    password = gdb_admin_password
    
    
    # Set local variables
    if os.name.lower() == "nt":
       slashsyntax = "\\"
       if os.environ.get("TEMP") == None:
          temp = "c:\\temp"
       else:
          temp = os.environ.get("TEMP")
    else:
       slashsyntax = "/"
       if os.environ.get("TMP") == None:
          temp = "/usr/tmp"
       else:
          temp = os.environ.get("TMP")
    
    Connection_File_Name = temp + slashsyntax + "connection.sde"
    
    # Check for the .sde file and delete it if present
    if os.path.exists(Connection_File_Name):
       os.remove(Connection_File_Name)
    
    #Variable defined within the script; other variable options commented out at the end of the line
    saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME
    
    print ("Creating Database Connection File...")
    # Create Database Connection File
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, username, password, save_user_pass
    arcpy.CreateDatabaseConnectionFile_management(temp, "connection.sde", platform, instance, account_authentication, username, password, saveUserInfo)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print ("Rebuild Complete")
    

    Cet exemple de script contient les informations permettant de se servir d'un utilisateur dbo authentifié par le système d'exploitation pour se connecter à SQL Server et mettre à jour les index sur les tables système sde_states, sde_state_lineages et sde_mv_tables_modified :

    # Name: RSysIdxSqlServer.py
    # Description: Rebuilds indexes on the sde_states, sde_state_lineages,
    # and sde_mv_tables_modified tables in an enterprise geodatabase
    # in SQL Server.
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    platform = SQL_SERVER
    instance = sqlserver_instance_name
    account_authentication = OPERATING_SYSTEM_AUTH
    database = database_name
    
    
    # Set local variables
    if os.name.lower() == "nt":
       slashsyntax = "\\"
       if os.environ.get("TEMP") == None:
          temp = "c:\\temp"
       else:
          temp = os.environ.get("TEMP")
    else:
       slashsyntax = "/"
       if os.environ.get("TMP") == None:
          temp = "/usr/tmp"
       else:
          temp = os.environ.get("TMP")
    
    Connection_File_Name = temp + slashsyntax + "connection.sde"
    
    # Check for the .sde file and delete it if present
    if os.path.exists(Connection_File_Name):
       os.remove(Connection_File_Name)
    
    print ("Creating Database Connection File...")
    # Create Database Connection File
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, database
    arcpy.CreateDatabaseConnectionFile_management(temp, "connection.sde", platform, instance, account_authentication, database)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print ("Rebuild Complete")
    

    Dans cet exemple, l'utilisateur sde se connecte à une base de données PostgreSQL :

    # Name: RSysIdxpg.py
    # Description: Rebuilds indexes on the sde_states, sde_state_lineages,
    # and sde_mv_tables_modified tables in an enterprise geodatabase
    # in PostgreSQL.
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    platform = POSTGRESQL
    instance = pg_cluster
    account_authentication = DATABASE_AUTH
    username = gdb_admin
    password = gdb_admin_password
    database = database_name
    
    
    # Set local variables
    if os.name.lower() == "nt":
       slashsyntax = "\\"
       if os.environ.get("TEMP") == None:
          temp = "c:\\temp"
       else:
          temp = os.environ.get("TEMP")
    else:
       slashsyntax = "/"
       if os.environ.get("TMP") == None:
          temp = "/usr/tmp"
       else:
          temp = os.environ.get("TMP")
    
    Connection_File_Name = temp + slashsyntax + "connection.sde"
    
    # Check for the .sde file and delete it if present
    if os.path.exists(Connection_File_Name):
       os.remove(Connection_File_Name)
    
    #Variable defined within the script; other variable options commented out at the end of the line
    saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME
    
    print ("Creating Database Connection File...")
    # Create Database Connection File
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, username, password, save_user_pass, database
    arcpy.CreateDatabaseConnectionFile_management(temp, "connection.sde", platform, instance, account_authentication, username, password, saveUserInfo, database)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print ("Rebuild Complete")
    

    Dans cet exemple, l'utilisateur sde se connecte à une base de données DB2 :

    # Name: RSysIdxDb2.py
    # Description: Rebuilds indexes on the states, state_lineages,
    # and mv_tables_modified tables in an enterprise geodatabase
    # in DB2.
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    platform = DB2
    instance = db2gdb
    account_authentication = OPERATING_SYSTEM_AUTH | DATABASE_AUTH
    #Leave username and password blank if using OPERATING_SYSTEM_AUTH
    username = sde
    password = gdb_admin_password
    
    
    # Set local variables
    if os.name.lower() == "nt":
       slashsyntax = "\\"
       if os.environ.get("TEMP") == None:
          temp = "c:\\temp"
       else:
          temp = os.environ.get("TEMP")
    else:
       slashsyntax = "/"
       if os.environ.get("TMP") == None:
          temp = "/usr/tmp"
       else:
          temp = os.environ.get("TMP")
    
    Connection_File_Name = temp + slashsyntax + "connection.sde"
    
    # Check for the .sde file and delete it if present
    if os.path.exists(Connection_File_Name):
       os.remove(Connection_File_Name)
    
    #Variable defined within the script; other variable options commented out at the end of the line
    saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME
    
    print ("Creating Database Connection File...")
    # Create Database Connection File
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, username, password, save_user_pass
    arcpy.CreateDatabaseConnectionFile_management(temp, "connection.sde", platform, instance, account_authentication, username, password, saveUserInfo)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print ("Rebuild Complete")
    
  2. Après avoir modifié le script pour qu'il contienne vos informations de connexion, planifiez le script pour qu'il s'exécute à une heure spécifique chaque nuit.
    • Sous Windows, dans le Panneau de configuration, ouvrez Tâches planifiées et utilisez l'Assistant pour ajouter une tâche planifiée. Lorsque vous êtes invité à spécifier le programme à exécuter, parcourez l’arborescence jusqu’à votre script Python.
    • Sous Linux, créez un fichier texte cron contenant des informations sur le jour et l’heure où vous souhaitez exécuter le script, puis chargez le fichier dans cron à l’aide du programme crontab.

      Par exemple, les informations suivantes entraînent l'exécution du script Python (nommé rsysidxdb2.py) chaque mercredi à 22 h 00.:

      0 22 * * 3 /usr/bin/rsysidxdb2.py

      Reportez-vous aux pages de manuel Linux fournies avec votre installation de Linux pour obtenir plus d'informations sur l'utilisation de cron.

ArcGIS Desktop

  • Accueil
  • Documentation
  • Support

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

A propos d'Esri

  • A propos de la société
  • Carrières
  • Blog d’Esri
  • Conférence des utilisateurs
  • Sommet des développeurs
Esri
Donnez-nous votre avis.
Copyright © 2019 Esri. | Confidentialité | Légal