Créer une géodatabase dans Db2

Disponible avec une licence Standard ou Advanced.

Installez et configurez IBM Db2 et un client ArcGIS, puis utilisez l’outil de géotraitement Activer une géodatabase d’entreprise ou un script Python pour créer une géodatabase dans une base de données Db2.

Conditions préalables

Avant de créer une géodatabase dans Db2, vous devez procéder comme suit :

Installer et configurer Db2

Avant d’exécuter l’outil Activer une géodatabase d’entreprise ou un script permettant de créer une géodatabase dans Db2, vous (ou votre service informatique ou votre administrateur de base de données) devez installer et configurer le système de gestion de base de données Db2.

Suivez les instructions fournies par IBM pour installer et configurer votre instance Db2. Suivez ensuite les étapes ci-dessous pour configurer une base de données et un identifiant de connexion à utiliser avec votre géodatabase.

  1. Créez un identifiant de connexion au système d’exploitation intitulé sde sur le serveur Db2.

    Vous allez vous connecter à la base de données avec l'identifiant de connexion sde pour créer une géodatabase.

  2. Créez une base de données Db2 et enregistrez-la avec le module Spatial Extender.
  3. Accordez à l'utilisateur sde l'autorité DBADM dans la base de données.

Ensuite, configurez un client ArcGIS à partir duquel vous allez vous connecter et créer une géodatabase dans la base de données Db2.

Configurer les clients

Vous pouvez exécuter un script Python à partir d'ArcGIS Desktop (Desktop Standard ou Desktop Advanced), ArcGIS Engine Geodatabase Update ou ArcGIS Server (édition Enterprise), pour créer une géodatabase. Pour exécuter l'outil de géotraitement Activer une géodatabase d'entreprise plutôt qu'un script, utilisez ArcGIS Desktop.

Remarque :

Vous avez besoin d'un fichier de codes clés ArcGIS Server (édition Enterprise) pour autoriser votre géodatabase dans la section suivante. Même si vous n'exécutez pas de script Python à partir d'un ordinateur ArcGIS Server pour créer la géodatabase, vous devez installer et autoriser ArcGIS Server pour obtenir le fichier de codes clés. Vous devrez peut-être copier le fichier de l'ordinateur ArcGIS Server vers un emplacement auquel l'outil de géotraitement ou le script Python peuvent accéder.

  1. Installez le client ArcGIS à utiliser pour créer la géodatabase.

    Suivez les instructions des guides d'installation du logiciel.

  2. Dans la plupart des cas, votre client ArcGIS est installé sur un ordinateur autre que le serveur Db2. Par conséquent, installez et configurez un client Db2 sur l’ordinateur client ArcGIS.

    Vous pouvez télécharger IBM Data Server Runtime Client pour Db2 depuis My Esri, ou vous pouvez utiliser votre propre installation du client Db2. Consultez la documentation Db2 pour en savoir plus sur l’installation. Si vous installez le client Db2 sur un système d’exploitation 64 bits, exécutez le fichier exécutable 64 bits qui installera à la fois les fichiers 32 bits et 64 bits, vous permettant ainsi de vous connecter aux clients ArcGIS 32 bits et 64 bits.

  3. Vous pouvez vous connecter depuis ArcGIS à une base de données Db2 avec une chaîne de connexion DSNless. Toutefois, pour vous connecter à l'aide d'un nom de source de données, vous devez cataloguer la base de données, ce qui permettra de configurer le nom de la source de données. Consultez la documentation Db2 d’IBM pour en savoir plus sur la création d’un nom de source de données.

Vous pouvez maintenant créer une géodatabase.

Créer une géodatabase

Utilisez une des méthodes suivantes pour créer une géodatabase dans votre base de données Db2 :

Utilisez l'outil Activer une géodatabase d'entreprise.

Si vous avez installé et configuré ArcGIS Desktop pour vous connecter à votre base de données Db2, vous pouvez exécuter l’outil Activer une géodatabase d’entreprise.

Procédez comme suit pour créer une géodatabase dans ArcGIS Pro :

  1. Démarrez ArcGIS Pro.
  2. Connexion à la base de données Db2. Connectez-vous avec l'identifiant de connexion sde.

    N'oubliez pas d'enregistrer le mot de passe de l'utilisateur sde dans la boîte de dialogue Connexion à la base de données.

  3. Ouvrez l'outil Activer une géodatabase d'entreprise.
  4. Ajoutez le fichier de connexion à votre base de données Db2 à la zone de texte Input Database (Base de données entrante).
  5. Accédez au fichier de codes clés ArcGIS Server que vous avez créé lorsque vous avez autorisé ArcGIS Server et ajoutez-le à la zone de texte Fichier d'autorisation.

    Lorsque vous utilisez l'assistant d'autorisation d'ArcGIS Server, un fichier de codes clés est écrit sur l'ordinateur où le logiciel est installé. Si vous avez autorisé ArcGIS Server sur un système Linux, le fichier a été créé dans /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen. Si vous l'avez autorisé sur un serveur Windows, le fichier a été créé dans Program Files\ESRI\License<release>\sysgen. Copiez ce fichier dans un emplacement accessible avec l'outil Activer une géodatabase d'entreprise. Si vous ne l'avez pas déjà fait, autorisez ArcGIS Server à créer ce fichier.

  6. Cliquez sur Run (Exécuter).

    Le fichier sde_setup.log contient des messages relatifs à la création de la géodatabase, qui est créé dans le répertoire spécifié pour votre variable %TEMP% sur l'ordinateur sur lequel l'outil est exécuté. Si vous rencontrez un problème lors de la création d'une géodatabase, consultez ce fichier pour le résoudre.

Une géodatabase est créée dans votre base de données Db2.

Créez ensuite des utilisateurs pour charger les données dans la géodatabase. Consultez le Centre d’informations IBM Db2 pour en savoir plus sur la création d’utilisateurs.

Utiliser un script Python

Vous pouvez exécuter un script Python depuis une machine cliente ArcGIS Desktop (Desktop Standard ou Desktop Advanced), ArcGIS Server (édition d’entreprise) ou ArcGIS Engine Geodatabase Update pour créer une géodatabase dans une base de données Db2.

Pour exécuter un script Python permettant de créer une géodatabase dans une base de données Db2, procédez comme suit :

  1. Créez un fichier texte sur l'ordinateur du client ArcGIS, puis copiez-y le script suivant.

    """
    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. Enregistrez le fichier avec l'extension .py.
  3. Exécutez le script en indiquant les options et informations propres à votre site.

    Dans l'exemple suivant, exécuté sur un ordinateur Windows, le fichier enable_gdb.py est exécuté pour la base de données spdata sur l'instance db2prod. La connexion est établie avec l'identifiant de connexion sde et le mot de passe Tgdbst@rtsh3r3. Un fichier de codes clés se trouvant dans l'emplacement par défaut d'ArcGIS Server permet d'autoriser la géodatabase.

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

    Voici un exemple d'exécution du script sur un ordinateur 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'
    Astuce :

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

    Le fichier sde_setup.log contient les messages associés à la création de la géodatabase, qui est créé dans le répertoire spécifié pour votre variable TEMP ou TMP sur l'ordinateur sur lequel le script Python est exécuté. Si vous rencontrez un problème lors de la création d'une géodatabase, consultez ce fichier pour le résoudre.

Une géodatabase est créée dans votre base de données Db2.

Créez ensuite des utilisateurs pour charger les données dans la géodatabase. Consultez le Centre d’informations IBM Db2 pour en savoir plus sur la création d’utilisateurs et l’octroi des privilèges pour charger les données.