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

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

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

Если вы создадите базу геоданных из ArcGIS AllSource версии 3.3, версия этой базы геоданных будет 11.3.0.

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

Выполните следующие действия для создания базы геоданных в Db2 на Linux, UNIX или Windows:

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

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

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

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

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

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

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

    У табличного пространства должен быть размер страницы не меньше 8 КБ.

    В следующем примере создается пользовательское временное табличное пространство geospace с размером страницы 8 КБ. Права использования табличного пространства предоставляются группе geodatausers, в которую входят все пользователи базы данных, выполняющие такие операции с базой геоданных, как создание архивов базы геоданных, использование групп объектов и создание больших наборов выборки, которые генерируют таблицы файла журнала в базе геоданных.

    CREATE USER TEMPORARY TABLESPACE geospace PAGESIZE 8 K MANAGED BY AUTOMATIC STORAGE BUFFERPOOL IBMDEFAULTBP;
    
    GRANT USE OF TABLESPACE geospace TO geodatausers WITH GRANT OPTION;

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

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

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

Примечание:

Вам потребуется файл ключей 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. Вы также можете настроить для базы данных разрешение подключений с помощью имени источника данных.

    Инструкции по созданию имени источника данных см. в документации IBM Db2.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы можете запустить скрипт Python с клиентской машины ArcGIS AllSource (Desktop Standard или Desktop Advanced) или ArcGIS Server (уровень Enterprise) для создания базы геоданных в базе данных 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. Запустите скрипт, предоставив специфичные для вашего сайта опции и информацию.

    В следующем примере запуск выполняется с компьютера с Microsoft 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.