Доступно с лицензией Standard или Advanced.
Целью обновления многопользовательской базы геоданных является модернизация системных таблиц баз геоданных, процедур хранения, типов и функций для того, чтобы воспользоваться преимуществами новых функциональных возможностей и исправления ошибок.
Установите новую версию клиента ArcGIS или примените пакет обновлений, патч или пакет исправлений к существующей инсталляции и обновите базу геоданных.
До начала обновления
При обновлении любой многопользовательской системы, включая базу геоданных, необходимо сначала все спланировать. Протестируйте новую версию на сервере для разработки или тестовом сервере, чтобы убедиться, что она работает со всеми вашими клиентскими приложениями.
Когда вы определили, что новая система работает ожидаемым образом, запланируйте обновление; убедитесь, что необходимые сотрудники доступны для проведения обновления, и что они имеют необходимые права для выполнения назначенных им задач.
Имейте в виду следующее:
- Начиная с версии ArcGIS 10.3, сервер приложений ArcSDE для Oracle более не доступен. Вы должны перенести все подключения сервера приложений, используемые в картах или сервисах, для использования прямых подключений до того, как вы сможете обновить базу геоданных до версии 10.3.
- Вам необходимо обновить основную базу геоданных sde прежде, чем вы сможете обновить любую базу геоданных в пользовательской схеме.
- Обновление с бета-версий программного обеспечения не поддерживается.
- Если поддерживается версия вашей базы данных, то база геоданных может быть сразу обновлена с версии 9.3.1, 10, 10.1, 10.2, 10.2.1 или 10.2.2 до версии базы геоданных 10.3.
- Если ваша база геоданных версии 9.3 или ранее, необходимо сначала произвести обновление до поддерживаемой версии и затем – до версии 10.3.
- Когда база геоданных будет обновлена, предыдущие версии ArcGIS не смогут подключиться к ней, так как некоторые предыдущие версии ArcGIS не могут работать с более новыми версиями баз геоданных. Версии программы до ArcGIS 10 не могут подключиться к базе геоданных версии 10.3. Клиенты ArcGIS 10 могут подключиться к базе геоданных версии 10.3.
- Невозможно произвести переход с более поздней версии базы геоданных на более раннюю версию. Если после обновления до более новой версии вы хотите вернуться к старой версии базы геоданных, необходимо восстановить старую базу данных из резервной копии.
Ниже приводится перечень необходимых шагов перед обновлением базы геоданных:
- Убедитесь, что версия Oracle, которую вы хотите использовать, поддерживается ArcGIS 10.3. Более подробные сведения см. в Требования базы данных Oracle для ArcGIS.
- Проверьте, может ли быть обновлена ваша база геоданных. Чтобы сделать это, установите версию клиента ArcGIS, на которую вы хотите перейти, на одной машине. Если вы устанавливаете ArcGIS for Desktop, то вы можете подключиться к базе геоданных и открыть диалоговое окно Свойства базы данных чтобы определить, возможно ли обновление базы геоданных. Если вы устанавливаете ArcGIS for Server или ArcGIS Engine с дополнительным модулем Geodatabase Update, вы можете использовать функцию ArcPy Describe для определения, возможно ли обновление базы геоданных.
# Open Python. cd /arcgis/server/tools ./python # Create a connection to the geodatabase. arcpy.CreateDatabaseConnection_management("/tmp/", "egdb_connection.sde", "ORACLE", "myogdb", "DATABASE_AUTH", "sde", "mysdepassword", "SAVE_USERNAME") # Import ArcPy and check the geodatabase release. import arcpy isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease print isCurrent
Если возвращается значение false, базу геоданных можно обновить. Если возвращается true, обновлять базу геоданных не нужно. Не приступайте к последующим шагам.
- Убедитесь, что установлен компонент Oracle Text.
Компонент Text установлен в Oracle по умолчанию; однако, если вы не производили установку по умолчанию, компонент Text может быть не установлен.
Чтобы увидеть, установлен ли он, выполните следующее SQL-выражение, войдя в систему под именем SYSTEM или из-под пользователя с правами DBA в базе данных.
Если не будет возвращено ни одной записи, значит, компонент Text не установлен. Запустите файл установки Oracle, чтобы установить компонент Text.SELECT owner, object_name FROM all_objects WHERE object_type = 'PACKAGE' AND object_name = 'CTX_DDL';
- Создайте резервную копию базы данных.
- Удалите все пользовательские функции, которые вы могли добавить в системные таблицы базы геоданных за пределами ArcGIS, например, триггеры или дополнительные индексы.
Процедура обновления не может учитывать модификации, которые вы произвели в системных таблицах. Если эти модификации помешают изменению схемы системной таблицы, обновление будет остановлено с ошибкой.
- Предоставьте администратору базы геоданных права, необходимые для обновления базы данных.
Список необходимых прав находится в разделе Права доступа для баз геоданных в Oracle.
- Если вы обращаетесь к данным непосредственно из SQL, замените существующую библиотеку st_shapelib на сервере Oracle библиотекой новой версии. Новый файл st_shapelib можно найти в папке DatabaseSupport в директории установки клиента ArcGIS.
Убедитесь, что вы скопировали библиотеку, соответствующую операционной системе вашего сервера Oracle.
Если вы разместили библиотеку на сервере Oracle в другой папке, необходимо перенастроить extproc и указать местоположение новой библиотеки, после чего перезапустить прослушиватель Oracle listener. Более подробную информацию см. в статье Настройка Oracle extproc для доступа к базе геоданных из SQL.
- Если вы используете в базе геоданных тип хранения ST_Raster, замените существующий файл libst_raster_ora на сервере Oracle новой версией библиотеки. Новый файл libst_raster_ora можно найти в папке DatabaseSupport в директории установки клиента ArcGIS.
Убедитесь, что вы скопировали библиотеку, соответствующую операционной системе вашего сервера Oracle.
- Убедитесь, что во время обновления ни один из пользователей не подключен к базе геоданных. Если вы обновляете главную базу геоданных sde, убедитесь также, что никто не подключен к базам геоданных пользовательской схемы в базе данных Oracle.
Вы можете увидеть список пользователей, подключенных к базе геоданных в настоящее время, открыв закладку Подключенные пользователи диалогового окна Администрирование базы геоданных в ArcGIS for Desktop.
Теперь вы можете обновить вашу базу геоданных.
Обновление базы геоданных
Для обновления вашей базы геоданных можно использовать инструмент Обновить базу геоданных в ArcGIS for Desktop или скрипт Python на компьютере, где установлен клиент ArcGIS.
Используйте инструмент Обновить базу геоданных.
Вы можете открыть инструмент Обновить базу геоданных из диалогового окна Свойства базы данных посредством нажатия кнопки Обновить базу геоданных на закладке Общие или открыть инструмент напрямую. Текстовое поле Входная база геоданных будет предварительно заполнено информацией о подключении базы геоданных, если инструмент был запущен с помощью кнопки Обновить базу геоданных.
Esri рекомендует оставить выбранными обе опции: Проверка требований и Обновить базу геоданных. В этом случае перед продолжением обновления базы геоданных приложение будет проверять, выполнены ли предварительные условия для обновления.
Проверка предварительных условий определяет наличие других активных подключений к базе геоданных, имеет ли подключенный пользователь права, достаточные для обновления базы геоданных и может ли база данных поддерживать работу с XML-столбцами. Такая проверка также позволяет убедиться, что все наборы данных могут быть открыты, и что используемые база данных и библиотеки одинаковой версии. Если какое-либо из предварительных условий не выполнено, работа инструмента завершается. Перед повторным запуском процедуры обновления вы должны исправить все проблемы.
Результаты этой проверки отображаются в диалоговом окне инструмента геообработки. Если проверка (или обновление) заканчивается сбоем, то результаты также записываются в файл GDBUpgrade.log, который расположен в c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.
Если все этапы проверки будут пройдены успешно, инструмент запустит процесс обновления. Статус проверки предварительных условий и обновления отображается в диалоговом окне инструмента геообработки. Если обновление заканчивается сбоем, то информация об этом записывается в файл журнала GDBUpgrade.log. Дополнительная информация записывается в файл sdesetup.log, находящийся в системной директории TEMP.
Запустите скрипт
Для обновления базы геоданных скопируйте один из этих примеров скриптов в текстовой редактор. Измените значения переменных, чтобы они соответствовали информации на вашем сайте.
- Если у вас есть файл существующего подключения к базе данных, который использует прямое подключение и подключается в качестве пользователя sde, скопируйте скрипт для вашей операционной системы, вставьте его в текстовый редактор, измените его для использования специфичной для вашего сайта информации, сохраните и закройте файл, затем запустите его:
# Name: upgradesdegdb_example.py # Description: Connect from a Windows computer # with an existing database connection file # and upgrade an enterprise geodatabase # Author: Esri # 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: Connect from a Linux or UNIX computer # with an existing database connection file # and upgrade an enterprise geodatabase # Author: Esri # 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")
- Если у вас нет файла подключения к базе данных на компьютере, на котором создается скрипт обновления, то вы можете скопировать следующий скрипт и предоставить специфичную для вашего сайта информацию в командной строке:Например, если вы сохранили текстовый файл как gdbupgrade, ваша база данных называется myogdb, и вы обновляете основную базу геоданных sde, введите в командной строке следующее:
""" Name: upgrade_gdb.py Description: Provide connection information to an Enterprise geodatabase and upgrade the geodatabase Type upgrade_gdb.py -h or upgrade_gdb.py --help for usage Author: Esri """ # Import system modules import arcpy, os, optparse, sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS',''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, or POSTGRESQL.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-u", dest="User", type="string", default="", help="Geodatabase administrator user name") parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase administrator password") parser.add_option ("--upgrade", dest="Upgrade", type="choice", choices=['TRUE', 'FALSE'], default="FALSE", help="Upgrade Options (case-sensitive): TRUE=Perform Pre-requisite check and upgrade geodatabase, FALSE=Perform Pre-requisite check only. Default=FALSE") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print "%s: error: %s\n" % (sys.argv[0], "No command options given") parser.print_help() sys.exit(3) #Usage parameters for spatial database connection to upgrade account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password do_upgrade = options.Upgrade database = options.Database.lower() database_type = options.Database_type.upper() instance = options.Instance if (database_type == ""): print "\nDatabase type must be specified!\n" parser.print_help() sys.exit(3) if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level to upgrade if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enterprise geodatabase upgrade requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license." sys.exit("Re-authorize ArcGIS before upgrading.") else: print "\n" + product_license + " license available! Continuing to upgrade..." arcpy.AddMessage("+++++++++") # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + database + "_" + username if os.environ.get("TEMP") == None: temp = "c:\\temp" else: temp = os.environ.get("TEMP") if os.environ.get("TMP") == None: temp = "/usr/tmp" else: temp = os.environ.get("TMP") Connection_File_Name = Conn_File_NameT + ".sde" Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) print "\nCreating Database Connection File...\n" # Process: Create Database Connection File... # Usage: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true) arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=username, password=password, save_user_pass="TRUE") for i in range(arcpy.GetMessageCount()): if "000565" in arcpy.GetMessage(i): #Check if database connection was successful arcpy.AddReturnMessage(i) arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++\n") sys.exit(3) else: arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") # Check whether geodatabase needs upgrade isCurrent = arcpy.Describe(Connection_File_Name_full_path).currentRelease if isCurrent == True: print "The geodatabase is already at the current release and cannot be upgraded!" sys.exit("Upgrade did not run.") # Process: Upgrade geodatabase... try: if do_upgrade.lower() == "true": print "Upgrading Geodatabase...\n" arcpy.UpgradeGDB_management(input_workspace=Connection_File_Name_full_path, input_prerequisite_check="PREREQUISITE_CHECK", input_upgradegdb_check="UPGRADE") for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") else: print "Running Pre-Requisite Check...\n" arcpy.UpgradeGDB_management(input_workspace=Connection_File_Name_full_path, input_prerequisite_check="PREREQUISITE_CHECK", input_upgradegdb_check="NO_UPGRADE") for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print "\n" parser.print_help() parser.exit(2)
gdbupgrade --DBMS ORACLE -i myogdb --auth DATABASE_AUTH -u sde -p mysdepassword --upgrade TRUE