Создание базы геоданных в Db2

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

Установите и настройте IBM Db2 и клиент ArcGIS, и используйте инструмент геообработки Включить многопользовательскую базу геоданных или скрипт Python для создания базы геоданных в базе данных Db2.

Предварительные условия

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

  • Убедитесь, что комбинация версий ArcGIS, Db2 и ОС является совместимой.
  • Загрузите клиент Db2, требующийся для подключения к версии Db2, которую вы будете использовать для хранения базы геоданных.
  • Получите файл ключей ArcGIS Server и поместите его в такое место, где он будет доступен для клиента ArcGIS, который будет использоваться для создания базы геоданных.
  • Установите и настройте Db2.

Установите и настройте Db2

Перед тем как запустить инструмент Включить многопользовательскую базу геоданных или скрипт для создания базы геоданных в Db2, вам (или вашему IT-отделу или администратору базы данных) необходимо установить и настроить систему управления базами данных Db2.

Вам необходимо следовать инструкциям IBM по установке и настройке вашего экземпляра Db2. Далее следуйте данным шагам для настройки базы данных и учетной записи для использования вашей базы геоданных.

  1. В операционной системе на сервере Db2 создайте пользователя с именем sde.

    Вам следует подключиться к базе данных с учетной записью sde, чтобы создать базу геоданных.

  2. Создайте базу данных Db2 и зарегистрируйте ее с помощью модуля Spatial Extender.
  3. Предоставьте пользователю sde права DBADM в базе данных.

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

Настройка клиентов

Вы можете запустить скрипт Python из ArcGIS Desktop (Desktop Standard или Desktop Advanced), ArcGIS Engine Geodatabase Update или ArcGIS Server (уровень Enterprise) для создания базы геоданных. Если вы хотите запустить инструмент геообработки Включить многопользовательскую базу геоданных вместо скрипта, то используйте ArcGIS Desktop.

Примечание:

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

  1. Установите клиент ArcGIS, который собираетесь использовать для создания базы геоданных.

    Следуйте инструкциям руководств по установке программного обеспечения.

  2. В большинстве случаев ваш клиент ArcGIS будет установлен на компьютере, отличном от сервера Db2; поэтому, установите и настройте клиент Db2 на компьютере с клиентом ArcGIS.

    Вы можете скачать IBM Data Server Runtime Client для Db2 из My Esri или вы можете использовать собственную установку клиента Db2. Для получения инструкций по установке обратитесь к документации Db2. Если вы устанавливаете клиент Db2 на 64-разрядную операционную систему, запустите 64-разрядный исполняемый файл; будут установлены 32- и 64-разрядные файлы, что позволит вам подключаться как из 32-разрядных клиентов, так и из 64-разрядных клиентов ArcGIS.

  3. Вы можете подключиться непосредственно из ArcGIS к базе данных Db2 с использованием строки подключения DSNless. Однако, если вместо этого вы хотите использовать имя источника данных для подключения, то вам необходимо каталогизировать базу данных, тем самым настроив имя источника данных. Инструкции по созданию имени источника данных смотри в документации по IBM Db2.

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

Создание базы геоданных

Используйте один из следующих методов для создания базы геоданных в вашей базе данных Db2:

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

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

Выполните эти шаги для создания базы геоданных в ArcGIS Pro:

  1. Запустите ArcGIS Pro.
  2. Подключение к базе данных Db2. Подключитесь с учетной записью sde.

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

  3. Откройте инструмент Включить многопользовательскую базу геоданных.
  4. Добавьте файл подключения к базе данных для базы Db2 в текстовом окне Входная база данных.
  5. Перейдите к файлу ключей ArcGIS Server, который был создан при авторизации ArcGIS Server, и добавьте его в текстовое поле Файл авторизации.

    При использовании мастера для авторизации ArcGIS Server файл ключей записывается на машину, где установлено программное обеспечение. Если вы авторизовали ArcGIS Server на компьютере с Linux, то файл был создан в /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen. Если вы авторизовали на сервере Windows, то файл был создан в Program Files\ESRI\License<release>\sysgen. Скопируйте этот файл в местоположение, к которому у вас доступ из инструмента Включить многопользовательскую базу геоданных. Если данная процедура еще не выполнена, авторизуйте ArcGIS Server для создания этого файла.

  6. Щёлкните Запустить.

    Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в каталоге, указанном для переменной %TEMP%, на том компьютере, где запущен инструмент. При наличии проблем с созданием базы геоданных изучите этот файл журнала для их устранения.

В базе данных Db2 создается база геоданных.

Затем создайте пользователей для загрузки данных в базу геоданных. Инструкции по созданию пользователей смотри в IBM Db2 Information Center.

Использование скрипта Python

Вы можете запустить скрипт Python из ArcGIS Desktop (Desktop Standard или Desktop Advanced), ArcGIS Server (уровень Enterprise) или компьютера клиента ArcGIS Engine Geodatabase Update для создания базы геоданных в базе данных Db2.

Выполните следующие действия, чтобы запустить скрипт Python для создания базы геоданных в базе данных Db2:

  1. Создайте текстовый файл на клиентском компьютере ArcGIS и скопируйте следующий скрипт в файл.

    """
    Name: enable_enterprise_gdb.py
    Description: Provide connection information to an enterprise database
    and enable enterprise geodatabase.
    Type enable_enterprise_gdb.py -h or enable_enterprise_gdb.py --help for usage
    """
    
    # 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=['SQL_SERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.")
    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 ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
    parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file")
    
    
    # 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
    	database_type = options.Database_type.upper()
    	instance = options.Instance
    	account_authentication = options.account_authentication.upper()
    	username = options.User.lower() 
    	password = options.Password	
    	database = options.Database.lower()
    	license = options.Authorization_file
    
    
    	if( database_type ==""):	
    		print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")
    		parser.print_help()
    		sys.exit(3)		
    		
    	if (license == ""):
    		print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
    		parser.print_help()
    		sys.exit(3)
    
    		
    	# Get the current product license
    	product_license=arcpy.ProductInfo()
    	
    	if (license == ""):
    		print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
    		parser.print_help()
    		sys.exit(3)
    	
    	# Checks required license level
    	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
    		print "\n" + product_license + " license found!" + "  Enabling enterprise geodatabase functionality requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license."
    		sys.exit("Re-authorize ArcGIS before enabling an enterprise geodatabase.")
    	else:
    		print "\n" + product_license + " license available!  Continuing to enable..."
    		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")
    	
    	
    	# Process: Enable geodatabase...
    	try:
    		print "Enabling Enterprise Geodatabase...\n"
    		arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, authorization_file=license)
    		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)

  2. Сохраните файл с расширением .py.
  3. Запустите скрипт, предоставив специфичные для вашего сайта опции и информацию.

    В следующем примере запуск выполняется с компьютера с Windows, файл enable_gdb.py запускается для базы данных spdata на экземпляре db2prod. Подключение выполняется для учётной записи sde с паролем Tgdbst@rtsh3r3. Для авторизации базы геоданных в местоположении для ArcGIS Server по умолчанию задаётся файл ключей.

    enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '\\Program Files\ESRI\License\sysgen\keycodes'

    Это пример запуска скрипта на компьютере с Linux:

    /enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes'
    Подсказка:

    Type -h or --help at the command prompt to get syntax help.

    Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в каталоге, указанном для переменной TEMP или TMP, на том компьютере, где запущен скрипт Python. При наличии проблем с созданием базы геоданных изучите этот файл журнала для их устранения.

В базе данных Db2 создается база геоданных.

Затем создайте пользователей для загрузки данных в базу геоданных. Инструкции по созданию пользователей и предоставлению прав для загрузки данных смотри в IBM Db2 Information Center.