ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

Перестроение индексов системной таблицы.

Доступно с лицензией Standard или Advanced.

  • Использование инструмента Перестроить индексы
  • Запланируйте запуск скрипта Python

База данных использует индексы для быстрого нахождения строк, удовлетворяющих фильтру предиката запроса. У большинства системных таблиц базы геоданных есть индексы. Но в версионной многопользовательской базе геоданных есть таблицы, которые изменяются с наибольшей частотой. Для таких таблиц требуется наиболее частая перестройка индекса. Это следующие системные таблицы: states, state_lineages и mv_tables_modified. Как администратор базы геоданных, вы можете перестроить индексы в этих таблицах баз геоданных в IBM DB2, Microsoft SQL Server, Oracle или PostgreSQL используя инструмент геообработки Перестроить индексы.

В активно редактируемой версионной базе геоданных вы можете обновлять индексы в таблицах states, state_lineages и mv_tables_modified в ночное время. Для этого создайте автономный скрипт Python, вызывающий инструмент Перестроить индексы и планирующий его запуск с использованием Планировщика задач Windows или задания cron.

Подсказка:

Инструмент Перестроить индексы также может использоваться владельцами данных для построения атрибутивных и пространственных индексов в их данных. Для получения дополнительной информации см. Перестроение индексов в наборе данных.

Использование инструмента Перестроить индексы

Чтобы перестроить индексы в системных таблицах базы геоданных states, state_lineages и mv_tables_modified с помощью инструмента Перестроить индексы, необходимо сделать следующее:

  1. Запустите ArcGIS Desktop и подключитесь к базе геоданных как ее администратор.
  2. Откройте инструмент геообработки Перестроить индексы.

    Этот инструмент вы найдете в группе инструментов Администрирование баз геоданных набора Управление данными.

  3. Используйте подключение, созданное в шаге 1, в поле Входное подключение к базе данных.
  4. Отметьте опцию Включить системные таблицы.
  5. Снимите отметку Перестроить только таблицы различий.
  6. Щелкните OK (ArcMap) или Запустить (ArcGIS Pro).

Запланируйте запуск скрипта Python

Для запуска скрипта необходимо подключиться к базе геоданных с правами доступа администратора базы геоданных. Существует два способа: создать файл подключения (.sde) и указать этот файл в скрипте, или непосредственно в скрипте ввести инструкцию для подключения. Далее установите расписание для запуска скрипта с помощью Назначенных заданий Windows или Linux cron daemon.

  1. Скопируйте один из следующих скриптов на компьютер, где установлены Python и один из следующих продуктов ArcGIS:
    • ArcGIS Desktop (Desktop Standard или Desktop Advanced)
    • Ядро базы геоданных ArcGIS Engine с дополнительным модулем Geodatabase Update
    • ArcGIS Server

    Измените скрипты, внеся в них информацию о вашем сайте.

    В приведенном образце скрипта содержится информация, необходимая для подключения к базе данных Oracle, для обновления индексов системных таблиц states, state_lineages и 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")
    

    В приведенном образце скрипта содержатся инструкции для подключения авторизованного dbo-пользователя операционной системы к SQL Server и обновления индексов системных таблиц sde_states, sde_state_lineages и 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")
    

    В следующем примере sde-пользователь подключается к базе данных 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")
    

    В следующем примере sde-пользователь подключается к базе данных 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. После занесения в скрипт информации о подключении, запланируйте запуск скрипта в определенный час в ночное время.
    • В Windows откройте утилиту Назначенные задания из Панели управления и используйте мастер для добавления запланированного задания. На запрос указать программу, которую нужно запускать, укажите свой скрипт Python.
    • В Linux создайте текстовый файл cron, в котором указывается день и время, в которые необходимо запускать скрипт и загрузите файл в cron с помощью программы crontab.

      Например, для запуска скрипта Python (с именем rsysidxdb2.py) каждую среду в 22:00 необходимо ввести следующую информацию.:

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

      Для получения сведений по использованию cron, см. справочные страницы Linux, поставляемые вместе с операционной системой.

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS Platform

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

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2019 Esri. | Конфиденциальность | Правовая информация