Обновление базы геоданных в PostgreSQL

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

Целью обновления многопользовательской базы геоданных является модернизация системных таблиц баз геоданных, процедур хранения, типов и функций для того, чтобы воспользоваться преимуществами новых функциональных возможностей и исправления ошибок. Вам также может потребоваться перейти на более новую версию базы данных, если используемая вами версия больше не поддерживается для используемых вами клиентов ArcGIS.

Установите новую версию ArcGIS Pro или ArcGIS Server или примените пакет обновлений, патч или пакет исправлений к существующей версии и обновите базу геоданных до более поздней версии.

Примечание:

Даже если вы не обновите базу геоданных, используемая вами версия базы данных может больше не поддерживаться текущей версией программного обеспечения ArcGIS. Всегда проверяйте системные требования, чтобы убедиться, что вы по-прежнему используете поддерживаемую версию базы данных. Если версия базы данных больше не поддерживается, возможно, потребуется обновить базу геоданных. Чем больше времени проходит между обновлениями, тем более сложным становится процесс обновления.

Если вы обновите базу геоданных с помощью ArcGIS Pro версии 3.5, версия обновленной базы геоданных будет 11.5.0.x.

Перед обновлением выполните обязательные шаги, указанные ниже, а затем обновите базу геоданных с помощью инструмента геообработки Обновить базу геоданных или скрипта Python.

До начала обновления

Заранее планируйте обновления любых многопользовательских систем, включая базы геоданных. Протестируйте новую версию на сервере для разработки или тестовом сервере, чтобы убедиться, что она работает со всеми вашими клиентскими приложениями.

Когда вы убедитесь, что новая система работает так, как вы ожидали, запланируйте обновление; убедитесь, что необходимый персонал доступен для выполнения обновления и что у них есть права доступа, необходимые для выполнения возложенных на них задач.

Имейте в виду следующее:

  • Обновления с бета-или предварительных версий программного обеспечения не поддерживаются.
  • Вы можете выполнить обновление непосредственно из базы геоданных 10.9.x или 11.x, если версия базы данных PostgreSQL поддерживается текущей версией ArcGIS.

    Если версия базы данных PostgreSQL не поддерживается для текущей версии базы геоданных, то возможно, вам придется обновить базу данных и базу геоданных несколько раз, прежде чем вы сможете обновить базу геоданных до текущей версии. Чем больше времени между обновлениями базы геоданных, тем больше обновлений вам придется сделать, чтобы перейти к последней версии базы геоданных.

    Например, в следующем сценарии вам придется обновить базу данных и базу геоданных дважды:

    Обновление с гораздо более старой версии базы геоданных требует многоэтапного обновления базы геоданных и базы данных.

    При каждом промежуточном обновлении базы геоданных следуйте инструкциям по обновлению для соответствующей версии базы геоданных, проверяя ее работоспособность при каждом переходе от версии к версии. Аналогично, следуйте инструкциям по обновлению от производителя базы данных для каждой версии базы данных и проверяйте их по мере перехода от версии к версии.

  • Не существует формального механизма для перехода на более раннюю версию базы геоданных. Если после обновления на более новую версию вы хотите вернуться на старую версию базы геоданных, вы можете восстановить базу данных из файла резервной копии, которая содержит предыдущую версию базы геоданных.
  • При обновлении базы геоданных версии 11.2.0, использующей пространственный тип ST_Geometry, в процессе обновления будут удалены и заново созданы пространственные индексы, определенные вами в столбцах ST_Geometry.

Ниже приводится перечень необходимых шагов перед обновлением базы геоданных:

  1. Прочитайте Требования ArcGIS для PostgreSQL, чтобы убедиться, что Esri поддерживает PostgreSQL и комбинацию версий ArcGIS, которые вы хотите использовать.

    Если вам необходимо обновить базу данных PostgreSQL, см. документацию PostgreSQL для получения информации о новых функциях в системе управления базами данных и о том, как ее обновить. Помните, что обновленные базы данных имеют те же имена и владельцев, что и раньше. Кроме того, задайте переменную search_path в создаваемой базе данных "$user", public и sde.

  2. Прочтите раздел Совместимость клиента и базы геоданных, чтобы понять последствия использования разных версий клиента ArcGIS и определить, необходимо ли обновлять определенные типы наборов данных отдельно.
  3. Создайте подключение к базе данных, которое пройдет аутентификацию пользователя sde.
  4. Убедитесь, что база геоданных может быть обновлена.

    Чтобы сделать это, установите версию клиента ArcGIS, на которую вы хотите перейти, на одной машине. Если вы установите ArcGIS Pro, используйте подключение, созданное на предыдущем шаге, чтобы подключиться к базе геоданных, и откройте диалоговое окно Свойства базы данных, чтобы определить, возможно ли обновление этой базы геоданных. Если вы установите ArcGIS Server (многопользовательская версия), вы можете использовать файл подключения, созданный на предыдущем шаге, и функцию ArcPy Describe, чтобы определить, можно ли обновить базу геоданных, как показано ниже.

    # Open Python.
    cd /arcgis/server/tools
    ./python
    
    # Import ArcPy.
    import arcpy
    
    # Create a connection to the geodatabase.
    arcpy.CreateDatabaseConnection_management("/tmp/",
                                              "egdb_connection.sde",
                                              "POSTGRESQL",
                                              "mypgdbcluster",
                                              "DATABASE_AUTH",
                                              "sde",
                                              "mysdepassword",
                                              "SAVE_USERNAME",
                                              "mypgdb")
    
    # Check the geodatabase release.
    isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease
    
    print(isCurrent)

    Если возвращается значение False, базу геоданных можно обновить. Если возвращается True, обновлять базу геоданных не нужно. Не приступайте к последующим шагам.

  5. Создайте резервную копию базы данных.
  6. Удалите все пользовательские функции, которые вы добавили в системные таблицы базы геоданных за пределами ArcGIS, такие как триггеры или дополнительные индексы.

    Процедура обновления не сможет использовать настройки, которые вы произвели в системных таблицах. Если эти модификации помешают изменению схемы системной таблицы, обновление будет остановлено с ошибкой.

  7. Администратор базы данных должен предоставить пользователю sde права доступа, необходимые для обновления базы геоданных.

    Необходимые права см. в разделе Права доступа к базам геоданных в PostgreSQL.

  8. Убедитесь, что во время обновления никто не подключен к базе геоданных.

    Чтобы увидеть список пользователей, подключенных к базе геоданных, откройте диалоговое окно Администрирование базы геоданных в ArcGIS Pro.

  9. Если в базе геоданных используется тип ST_Geometry, выполните следующий шаг. Если этот тип не используется, вы можете продолжить обновление базы геоданных.

    Если вы не уверены, использует ли база геоданных тип ST_Geometry, подключитесь к базе данных из клиента SQL как пользователь sde или суперпользователь и проверьте наличие функций ST_Geometry в схеме пользователя sde.

  10. Загрузите файл st_geometry с My Esri и поместите его в директорию %PostgreSQL%\lib (Microsoft Windows) или директорию PostgreSQL lib (Linux) на сервере PostgreSQL.

    Можно задать точное местоположение папки lib вашей установки PostgreSQL на Linux, запустив утилиту pg_config от имени пользователя postgres. Местоположение lib обозначается параметром PGPKGLIBDIR.

    Используйте библиотеку, которая соответствует версии PostgreSQL и операционной системе сервера. Папки обозначены версиями библиотек PostgreSQL.

    • Если сервер PostgreSQL работает на Linux, войдите на сервер как пользователь root и используйте FTP для передачи файла st_geometry.so в директорию PostgreSQL lib.
    • Если сервер PostgreSQL работает на Windows, скопируйте файл st_geometry.dll в папку lib директории установки PostgreSQL.

Теперь вы можете обновить базу геоданных.

Обновление базы геоданных

Для обновления вашей базы геоданных можно использовать инструмент Обновить базу геоданных в ArcGIS Pro или скрипт Python на компьютере, где установлен ArcGIS Pro или ArcGIS Server.

Примечание:

Если база геоданных содержит данные сервис-ориентированной версии, могут потребоваться дополнительные действия после обновления. Инструкции см. в разделе Как работает инструмент Обновить базу геоданных.

Используйте инструмент Обновить базу геоданных.

Откройте инструмент геообработки Обновить базу геоданных любым из способов, перечисленных ниже:

  • Группа инструментов Администрирование базы геоданных в наборе Управление данными
  • Кнопка Запуск обновления на вкладке Общие в диалоговом окне Свойства базы данных в ArcGIS Pro

Текстовое поле Входная база геоданных будет предварительно заполнено информацией о подключении базы геоданных, если инструмент был запущен с помощью кнопки Обновить базу геоданных.

Esri рекомендует оставить подключенными и опцию Проверка требований, и опцию Обновить базу геоданных. Таким образом, инструмент подтверждает, что предварительные условия для обновления выполнены, прежде чем продолжить обновление базы геоданных.

Проверка предварительных условий определяет наличие других активных подключений к базе геоданных, имеет ли подключенный пользователь права, достаточные для обновления базы геоданных, и может ли база данных поддерживать работу с XML-столбцами. Такая проверка также позволяет убедиться, что все наборы данных могут быть открыты и что используемые база данных и библиотеки одинаковой версии. Если какое-либо из предварительных условий не выполнено, работа инструмента завершается. Перед повторным запуском процедуры обновления вы должны исправить все проблемы.

Результаты этой проверки отображаются в диалоговом окне инструмента геообработки. Если проверка не удалась, результаты также записываются в файл GDBUpgrade.log в папке c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.

Если все этапы проверки проходят успешно, инструмент запустит процесс обновления. Статус проверки предварительных условий и обновления отображается в диалоговом окне инструмента геообработки. Если обновление заканчивается сбоем, информация об этом записывается в файл GDBUpgrade.log. Дополнительная информация записывается в файл sde_setup.log, который находится в пользовательской директории TEMP. Если у пользователя не настроена временная директория, используется системная директория TEMP.

Запуск скрипта

Чтобы обновить базу геоданных с использованием скрипта Python, скопируйте один из следующих примеров скрипта, вставьте его в текстовый редактор, измените его, чтобы использовать информацию, относящуюся к вашему сайту, сохраните и закройте файл, а затем запустите его.

Подсказка:

Для получения дополнительной информации о запуске Python на компьютере ArcGIS Server см. ArcGIS Server и ArcPy.

В примерах предполагается, что у вас есть существующий файл подключения к базе данных (.sde), который подключается как пользователь sde. Если у вас нет файла подключения, создайте его перед обновлением.

# Name: upgradesdegdb_example.py
# Description: Uses existing database connection file
# on a Windows computer to run prerequisite check
# and upgrade an enterprise geodatabase.

# Import arcpy module
import arcpy
 
# Local variables:
Output_Workspace = "C:\\ArcGIS\connection_files\<Connection file>"
Default_gdb = "C:\\ArcGIS\connection_files\<Connection file>"

# Process: Upgrade Geodatabase
arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
# Name: upgradesdegdb_example.py
# Description: Uses existing database connection file
# on a Linux computer to run prerequisite check
# and upgrade an enterprise geodatabase.

# Import arcpy module
import arcpy
 
# Local variables:
Output_Workspace = "<user>/connections/<Connection_file>"
Default_gdb = "<user>/connections/<Connection_file>"

# Process: Upgrade Geodatabase
arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")