Erstellen einer Geodatabase in Db2

Mit der Standard- oder Advanced-Lizenz verfügbar.

Installieren und konfigurieren Sie IBM Db2 und einen ArcGIS-Client, und verwenden Sie das Geoverarbeitungswerkzeug Enterprise-Geodatabase aktivieren oder ein Python-Skript zum Erstellen einer Geodatabase in einer Db2-Datenbank.

Wenn Sie eine Enterprise-Geodatabase mit ArcGIS Pro 3.4 erstellen, lautet die Geodatabase-Version 11.4.0x.

Voraussetzungen

Führen Sie vor Erstellen einer Geodatabase in Db2 unter Linux, UNIX oder Windows die folgenden Schritte aus:

  • Prüfen Sie, ob die gewünschten ArcGIS-, Db2- und Betriebssystemversionen kompatibel sind.
  • Laden Sie den Db2-Client herunter, der zum Herstellen einer Verbindung mit der Db2-Version erforderlich ist, die Sie zum Speichern der Geodatabase verwenden möchten.
  • Rufen Sie eine ArcGIS Server-Keycodes-Datei ab, welche beim Autorisieren von ArcGIS Server erstellt wird. Legen Sie sie an einem Speicherort ab, auf den Sie über den ArcGIS-Client zugreifen können, den Sie zum Erstellen der Geodatabase verwenden möchten.
  • Installieren und konfigurieren Sie Db2.

Installieren und Konfigurieren von Db2

Bevor Sie das Geoverarbeitungswerkzeug Enterprise-Geodatabase aktivieren oder das Skript zum Erstellen einer Geodatabase in Db2 ausführen können, müssen Sie (oder Ihre IT-Abteilung oder Ihr Datenbankadministrator) das Db2-Datenbankmanagementsystem installieren und konfigurieren.

Befolgen Sie zum Installieren und Konfigurieren der Db2-Instanz zuerst die von IBM bereitgestellten Anweisungen. Führen Sie dann die folgenden Schritte aus, um eine Datenbank zu konfigurieren, und melden Sie sich an, um Ihre Geodatabase zu verwenden:

  1. Erstellen Sie auf dem Db2-Server den Anmeldenamen "sde" für das Betriebssystem.

    Sie stellen eine Verbindung mit der Datenbank mit der SDE-Anmeldung her, um eine Geodatabase zu erstellen.

  2. Erstellen Sie eine Db2-Datenbank, und registrieren Sie diese bei dem Modul "Spatial Extender".
  3. Gewähren Sie dem SDE-Benutzer die Berechtigung "DBADM" in der Datenbank.
  4. Erstellen Sie einen temporären Tablespace, und gewähren Sie dem Geodatabase-Benutzern Zugriff auf den Tablespace.

    Der temporäre Tablespace muss mindestens eine Seitengröße von 8 K aufweisen.

    Im folgenden Beispiel wird ein temporärer Benutzer-Tablespace namens "geospace" mit einer Seitengröße von 8 K erstellt. Die Verwendung des Tablespace wird einer Gruppe namens "geodatausers" gewährt. Diese enthält alle Datenbankbenutzer, die Geodatabase-Operationen durchführen, z. B. Anlegen von Geodatabase-Archiven, Verwenden von Feature-Bins und Erstellen großer Auswahlsätze, durch die Protokolldateitabellen in der Geodatabase generiert werden.

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

Konfigurieren Sie als Nächstes einen ArcGIS-Client, über den Sie eine Verbindung herstellen und eine Geodatabase in der Db2-Datenbank erstellen.

Konfigurieren von Clients

Sie können in ArcGIS Pro (Desktop Standard oder Desktop Advanced) oder ArcGIS Server (Enterprise Edition) ein Python-Skript ausführen, um eine Geodatabase zu erstellen. Verwenden Sie ArcGIS Pro, wenn Sie das Geoverarbeitungswerkzeug Enterprise-Geodatabase aktivieren anstelle eines Skripts ausführen möchten.

Hinweis:

Sie benötigen eine ArcGIS Server-Schlüsselcodedatei (Enterprise), um Ihre Geodatabase im nächsten Abschnitt zu autorisieren. Auch wenn Sie zum Erstellen der Geodatabase kein Python-Skript von einem ArcGIS Server-Computer ausführen, müssen Sie ArcGIS Server installieren und autorisieren, um die Schlüsselcodedatei abzurufen. Möglicherweise müssen Sie die Schlüsselcodedatei vom ArcGIS Server-Computer an einen Speicherort kopieren, auf den das Geoverarbeitungswerkzeug oder Python-Skript zugreifen kann.

  1. Installieren Sie den ArcGIS-Client, mit dem Sie die Geodatabase erstellen.

    Befolgen Sie die Anleitungen, die in den Installationsanweisungen der Software bereitgestellt werden.

  2. In den meisten Fällen wird der ArcGIS-Client auf einem anderen Computer als dem Db2-Server installiert. Daher müssen Sie einen Db2-Client auf dem ArcGIS-Client-Computer installieren und konfigurieren.

    Sie können den IBM Data Server Runtime Client für Db2 von My Esri herunterladen, oder Sie können Ihre eigene Installation des Db2-Clients verwenden. Anweisungen zum Installieren finden Sie in der Db2-Dokumentation. Wenn Sie den Db2-Client unter einem 64-Bit-Betriebssystem installieren, führen Sie die ausführbare 64-Bit-Datei aus. Dabei werden sowohl die 32- als auch die 64-Dateien installiert, wodurch Verbindungen mit 32- und 64-Bit-ArcGIS-Clients hergestellt werden können.

  3. Optional können Sie die Datenbank katalogisieren, damit die Verbindungsherstellung über Datenquellennamen möglich ist.

    Weitere Anweisungen zum Erstellen eines Datenquellennamens finden Sie in der IBM Db2-Dokumentation.

    Für die Verbindung zwischen ArcGIS und einer Db2-Datenbank ist kein Datenquellenname erforderlich. Stattdessen können Sie eine so genannte DSNless-Verbindungszeichenfolge verwenden.

Jetzt können Sie eine Geodatabase erstellen.

Erstellen einer Geodatabase

Verwenden Sie eine der folgenden Methoden, um eine Geodatabase in der Db2-Datenbank zu erstellen:

Verwenden Sie das Werkzeug Enterprise-Geodatabase aktivieren.

Wenn Sie ArcGIS Pro installiert und für die Verbindung mit Ihrer Db2-Datenbank konfiguriert haben, können Sie das Werkzeug Enterprise-Geodatabase aktivieren ausführen.

Führen Sie die folgenden Schritte aus, um eine File-Geodatabase in ArcGIS Pro zu erstellen:

  1. Starten Sie ArcGIS Pro.
  2. Stellen Sie eine Verbindung mit der Db2-Datenbank mit der SDE-Anmeldung her.

    Speichern Sie das Kennwort des SDE-Benutzers im Dialogfeld Datenbankverbindung. Andernfalls kann die Verbindungsdatei nicht mit dem Werkzeug Enterprise-Geodatabase aktivieren verwendet werden.

  3. Öffnen Sie dass Werkzeug Enterprise-Geodatabase aktivieren.
  4. Fügen Sie dem Textfeld Eingabe-Database die Datenbankverbindungsdatei für die Db2-Datenbank hinzu.
  5. Navigieren Sie zu der ArcGIS Server-Keycodes-Datei, die bei der Autorisierung von ArcGIS Server erstellt wurde, und fügen Sie sie dem Feld Autorisierungsdatei hinzu.

    Wenn Sie zum Autorisieren von ArcGIS Server den Assistenten verwenden, wird eine Schlüsselcodedatei auf dem Computer erzeugt, auf dem die Software installiert ist. Autorisieren Sie ggf. ArcGIS Server, um diese Datei zu erstellen. Wenn die Autorisierung von ArcGIS Server auf einem Linux-Computer erfolgte, wurde die Datei unter /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen erstellt. Wenn die Autorisierung auf einem Microsoft Windows-Server erfolgte, wurde die Datei unter Program Files\ESRI\License<release>\sysgen erstellt. Kopieren Sie diese Datei an einen Speicherort, auf den Sie mit dem Werkzeug Enterprise-Geodatabase aktivieren zugreifen können.

  6. Klicken Sie auf Ausführen.

    Meldungen im Zusammenhang mit der Geodatabase-Erstellung werden in der Datei sde_setup.log gespeichert, die in dem Verzeichnis erstellt wurde, das für die Variable "%TEMP%" auf dem Computer angegeben wurde, auf dem das Werkzeug ausgeführt wird. Falls Sie Probleme beim Erstellen einer Geodatabase haben, überprüfen Sie diese Datei, um das Problem zu beheben.

Es wird eine Geodatabase in der Db2-Datenbank erstellt.

Als Nächstes erstellen Sie Benutzer, um Daten in die Geodatabase zu laden. Weitere Anweisungen zum Erstellen von Benutzern finden Sie im IBM Db2 Information Center.

Verwenden eines Python-Skripts

Sie können ein Python-Skript über einen Client-Computer mit ArcGIS Pro (Desktop Standard oder Desktop Advanced) oder ArcGIS Server (Enterprise Edition) ausführen, um eine Geodatabase in einer Db2-Datenbank zu erstellen.

Führen Sie die folgenden Schritte aus, um ein Python-Skript zum Erstellen einer Geodatabase in einer Db2-Datenbank auszuführen:

  1. Erstellen Sie eine Textdatei auf einem ArcGIS-Client-Computer, und kopieren Sie das folgende Skript in die Datei:

    """
    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. Speichern Sie die Datei mit der Erweiterung .py.
  3. Führen Sie das Skript aus, indem Sie für Ihre Site spezifische Optionen und Informationen bereitstellen.

    In der folgenden Beispielausführung von einem Microsoft Windows-Computer wird die Datei enable_gdb.py für die Datenbank "spdata" auf der Instanz "db2prod" ausgeführt. Die Verbindung wird als SDE-Anmeldung mit dem Kennwort "Tgdbst@rtsh3r3" hergestellt. Im Standardverzeichnis von ArcGIS Server wird eine Schlüsselcodedatei angegeben, um die Geodatabase zu autorisieren.

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

    Dies ist ein Beispiel für die Ausführung des Skripts auf einem Linux-Computer:

    /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'
    Tipp:

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

    Meldungen im Zusammenhang mit der Geodatabase-Erstellung werden in der Datei sde_setup.log gespeichert, die in dem Verzeichnis erstellt wurde, das für die Variable "TEMP" oder "TMP" auf dem Computer angegeben wurde, auf dem das Python-Skript ausgeführt wird. Falls Sie Probleme beim Erstellen einer Geodatabase haben, überprüfen Sie diese Datei, um das Problem zu beheben.

Es wird eine Geodatabase in Ihrer Db2-Datenbank erstellt.

Als Nächstes erstellen Sie Benutzer, um Daten in die Geodatabase zu laden. Weitere Anweisungen zum Erstellen von Benutzern und Gewähren von Berechtigungen zum Laden von Daten finden Sie im IBM IBM Db2 Information Center.