Créer la géodatabase d'entreprise (Gestion des données)

Résumé

Crée une base de données, des emplacements de stockage et un utilisateur de base de données pour agir comme administrateur de géodatabase et propriétaire de la géodatabase. Les fonctionnalités varient selon le système de gestion de base de données utilisé. L'outil accorde à l'administrateur de géodatabase les privilèges requis pour créer une géodatabase, puis crée une géodatabase dans la base de données.

Utilisation

  • Le tableau suivant indique les actions possibles de l'outil pour chaque type de système de gestion de base de données (SGBD) :

    FonctionSGBD

    Crée une base de données

    PostgreSQL et Microsoft SQL Server

    Crée un tablespace

    Oracle

    Crée un administrateur de géodatabase dans la base de données

    Oracle, PostgreSQL et SQL Server

    Sachez que l’outil crée un utilisateur dans SQL Server uniquement si vous créez une géodatabase de structure sde.

    Accorde à l'administrateur de la géodatabase les privilèges requis pour créer une géodatabase, la mettre à niveau et mettre fin aux connexions à la base de données.

    Oracle et PostgreSQL

    Accorde à l'administrateur de la géodatabase les privilèges requis pour créer une géodatabase et mettre fin aux connexions à la base de données.

    SQL Server (Si création d’une géodatabase de structure sde)

    Accorde à l’administrateur de géodatabase les privilèges requis pour importer les données à l’aide de Oracle Data Pump.

    Oracle 12c

    Crée une géodatabase dans la base de données spécifiée

    Oracle, PostgreSQL et SQL Server

  • Vous devez avoir ArcGIS Desktop (Standard ou Avancé), ArcGIS Engine avec l’extension Geodatabase Update ou ArcGIS Server installé sur l’ordinateur sur lequel vous allez créer la géodatabase. Si vous utilisez Oracle ou SQL Server, vous devez également installer et configurer un client de système de gestion de bases de données sur l’ordinateur sur lequel le client ArcGIS est installé.

  • Avant de pouvoir créer une géodatabase dans Oracle, vous devez télécharger le fichier DatabaseSupport.zip (Windows) ou DatabaseSupport.tar (Linux) depuis My Esri pour obtenir la bibliothèque st_shapelib (Windows) ou libst_shapelib (Linux). Placez la bibliothèque sur le serveur Oracle. Veillez à copier la bonne bibliothèque pour le système d’exploitation sur lequel Oracle est installé.

  • Avant de pouvoir créer une géodatabase dans PostgreSQL, vous devez télécharger le fichier DatabaseSupport.zip (Windows) ou DatabaseSupport.tar (Linux) depuis My Esri pour obtenir la bibliothèque st_geometry. Placez la bibliothèque dans le répertoire %PostgreSQL%\lib (Windows) ou dans le répertoire $PKGLIBDIR (Linux) sur le serveur PostgreSQL. Veillez à copier la bonne bibliothèque pour la version de PostgreSQL que vous utilisez et le système d’exploitation sur lequel PostgreSQL est installé.

  • Cet outil n’est pas pris en charge avec les services de base de données tels que Amazon Relational Database Service (RDS) for PostgreSQL, Amazon RDS for SQL Server, Amazon Aurora PostgreSQL, Microsoft Azure SQL Database ou Microsoft Azure Database for PostgreSQL.

  • Une fois la géodatabase créée, vous ne pouvez pas renommer la base de données dans laquelle elle est stockée. Le nom de la base de données est stocké dans des tables de système de base de données. Il est utilisé pour qualifier complètement les noms de tables et de classes d’entités. Par conséquent, la modification du nom de la base de données avec les outils de base de données rend vos données de géodatabase inaccessibles.

Syntaxe

arcpy.management.CreateEnterpriseGeodatabase(database_platform, instance_name, {database_name}, {account_authentication}, {database_admin}, {database_admin_password}, {sde_schema}, {gdb_admin_name}, {gdb_admin_password}, {tablespace_name}, authorization_file)
ParamètreExplicationType de données
database_platform

Spécifiez le type de système de gestion de bases de données auquel vous allez vous connecter pour créer une géodatabase.

  • OracleConnectez-vous à une instance Oracle.
  • PostgreSQLSe connecter à une grappe de bases de données PostgreSQL
  • SQL_Server Connectez-vous à une instance Microsoft SQL Server.
String
instance_name

Pour SQL Server, fournissez le nom d’instance SQL Server. Les instances SQL Server sensibles à la casse ou de classement binaire ne sont pas prises en charge.

Pour Oracle, fournissez le nom TNS ou la chaîne Connexion facile d’Oracle.

Pour PostgreSQL, renseignez le nom du serveur sur lequel PostgreSQL est installé.

String
database_name
(Facultatif)

Ce paramètre est valide pour PostgreSQL et SQL Server. Vous pouvez saisir le nom d’une base de données préconfigurée existante ou un nom d’une base de données que l’outil va créer.

Si l’outil crée la base de données dans SQL Server, les formats de fichier sont identiques à ceux définis pour la base de données modèle SQL Server ou 500 Mo pour le fichier MDF et 125 Mo pour le fichier LDF, selon le format le plus élevé. Les fichiers MDF et LDF sont créés dans l’emplacement SQL Server par défaut sur le serveur de base de données.

Si l’outil crée la base de données dans PostgreSQL, il utilise la base de données template1 comme modèle pour votre base de données. Si vous avez besoin d’un autre modèle, par exemple, vous avez besoin d’un modèle activé pour un PostGIS, vous devez créer la base de données avant d’exécuter cet outil et fournir le nom de la base de données existante. Utilisez toujours les caractères en minuscule pour le nom de base de données. Si vous mettez des majuscules, l’outil les convertit en minuscules.

String
account_authentication
(Facultatif)

Précisez le type d’authentification à utiliser pour la connexion à la base de données.

  • OPERATING_SYSTEM_AUTHUtilisez l'authentification du système d'exploitation. Les informations de connexion que vous fournissez pour l’ordinateur sur lequel vous utilisez l’outil est l’identifiant utilisé pour authentifier la connexion à la base de données. Si votre système de gestion de base de données n’est pas configuré de manière à permettre l’authentification du système d’exploitation, l’authentification est un échec.
  • DATABASE_AUTHUtilisez l’option Authentification de la base de données. Vous devez fournir un nom d'utilisateur et un mot de passe valides pour l'authentification dans la base de données. Il s’agit de l’option par défaut. Si votre système de gestion de base de données n’est pas configuré de manière à permettre l’authentification de base de données, l’authentification est un échec.
Boolean
database_admin
(Facultatif)

Si vous utilisez l'authentification de base de données, spécifiez un administrateur de base de données. Pour Oracle, utilisez l’utilisateur sys. Pour PostgreSQL, précisez un utilisateur avec un statut de super utilisateur. Pour SQL Server, précisez un membre du rôle de serveur fixe sysadmin.

String
database_admin_password
(Facultatif)

Si vous utilisez l'authentification de base de données, saisissez le mot de passe de l'administrateur de base de données.

Encrypted String
sde_schema
(Facultatif)

Ce paramètre est pertinent uniquement pour SQL Server et indique si la géodatabase est créée dans la structure d’un utilisateur intitulé sde ou dans la structure dbo de la base de données. En cas de création d’une géodatabase de structure dbo, connectez-vous comme utilisateur dbo dans l’instance SQL Server.

  • SDE_SCHEMALe référentiel de géodatabase est détenu par et stocké dans la structure d'un utilisateur nommé sde. Il s’agit de l’option par défaut.
  • DBO_SCHEMALe référentiel de géodatabase est stocké dans le schéma dbo de la base de données.
Boolean
gdb_admin_name
(Facultatif)

Si vous utilisez PostgreSQL, cette valeur doit être sde. Si le rôle de connexion sde n'existe pas, cet outil le crée et lui accorde le statut d'utilisateur avancé dans la grappe de bases de données. Si le rôle de connexion sde existe, cet outil lui accorde le statut d'utilisateur avancé s'il ne le détient pas déjà. L'outil crée également une structure sde dans la base de données et accorde des privilèges d'utilisation sur la structure au groupe public.

Si vous utilisez Oracle, cette valeur est sde. Si l’utilisateur sde n’existe pas dans la base de données Oracle, l’outil Créer une géodatabase d’entreprise le crée et lui accorde les privilèges requis pour créer et mettre à niveau une géodatabase et déconnecter les utilisateurs de la base de données. Si vous exécutez cet outil dans une base de données Oracle 12c ou 18c, l’outil accorde également des privilèges pour autoriser les importations de données avec Oracle Data Pump. Si l’utilisateur sde existe déjà, l’outil accorde ces mêmes privilèges à l’utilisateur existant.

Remarque :

À partir de ArcGIS 10.7 et ArcGIS Pro 2.3, vous ne pouvez pas créer de géodatabases de structure utilisateur dans Oracle.

Si vous utilisez SQL Server et si vous avez spécifié une géodatabase de structure sde, cette valeur doit être sde. L’outil crée un identifiant sde, un utilisateur de base de données et une structure et lui accorde les privilèges pour créer une géodatabase et interrompt les connexions vers l’instance SQL Server. Si vous avez spécifié un schéma dbo, n'indiquez aucune valeur pour ce paramètre.

String
gdb_admin_password
(Facultatif)

Mot de passe pour l’utilisateur administrateur de géodatabase. Si l’utilisateur administrateur de géodatabase existe déjà dans le système de gestion de bases de données, le mot de passe que vous fournissez doit correspondre au mot de passe existant. Si l'administrateur de géodatabase n'existe pas encore, entrez un mot de passe de base de données valide pour le nouvel utilisateur. Le mot de passe doit répondre à la règle des mots de passe appliquée par votre base de données.

Ce mot de passe est une chaîne chiffrée.

Encrypted String
tablespace_name
(Facultatif)

Ce paramètre est valide uniquement pour les types DBMS Oracle et PostgreSQL. Pour Oracle, effectuez une des actions suivantes :

  • Indiquez le nom d'un espace disque logique existant. Il sera utilisé comme espace disque logique par défaut de l'administrateur de géodatabase.
  • Attribuez un nom valide au nouvel espace disque logique. L’outil crée un tablespace de 400 Mo dans l’emplacement de stockage par défaut Oracle et le définit comme le tablespace par défaut de l’administrateur de géodatabase.
  • Laissez le tablespace vide et l’outil va générer un tablespace de 400 Mo intitulé SDE_TBS dans l’emplacement de stockage par défaut Oracle. L'espace disque logique SDE_TBS est défini comme espace disque logique par défaut de l'administrateur de géodatabase.

Cet outil ne crée pas de tablespace dans PostgreSQL. Vous devez spécifier le nom d'un espace disque logique à utiliser comme espace disque logique par défaut de la base de données ou laisser ce paramètre vierge. Si vous laissez le paramètre vierge, l'outil crée une base de données dans l'espace disque logique pg_default.

String
authorization_file

Chemin et nom de fichier du fichier des codes clé créé lors de l’autorisation de ArcGIS Server. Ce fichier figure dans le dossier \\Program Files\ESRI\License<release#>\sysgen sur le répertoire Windows ou /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen sur Linux. Si vous ne l'avez pas déjà fait, autorisez ArcGIS Server à créer ce fichier.

Vous devrez peut-être copier le fichier de codes clés de l'ordinateur ArcGIS Server vers un emplacement accessible à l'outil.

File

Sortie dérivée

NomExplicationType de données
out_result

Précise si la géodatabase d’entreprise a été créée avec succès.

Booléen

Exemple de code

Exemple 1 de CreateGeodatabase (fenêtre Python)

Le script suivant crée une géodatabase dans une base de données Oracle. Il crée un utilisateur sde et un tablespace par défaut, sdetbs, pour l'utilisateur sde. Le fichier de codes clés figure sur un serveur Linux distant.

import arcpy
arcpy.CreateEnterpriseGeodatabase_management(
    "ORACLE", "ora11g:1521/elf", "", "DATABASE_AUTH", "sys", 
    "manager", "", "sde", "supersecret", "sdetbs", 
    "//myserver/mymounteddrive/myaccessibledirectory/keycodes")
Exemple 2 de CreateGeodatabase (fenêtre Python)

Ce script se connecte à une instance SQL Server (tor\ssinstance), pour créer une base de données intitulée sp_data et une géodatabase de structure sde à l’intérieur. La connexion s'établit à l'aide de l'authentification du système d'exploitation. Le fichier de codes clés figure sur un serveur Windows distant.

import arcpy
arcpy.CreateEnterpriseGeodatabase_management(
    "SQL_SERVER", "tor\ssinstance1", "sp_data", "OPERATING_SYSTEM_AUTH", "", "", 
    "SDE_SCHEMA", "sde", "sde", "", "//myserver/myaccessibledirectory/keycodes")
Exemple 3 de CreateGeodatabase (fenêtre Python)

Ce script se connecte à un cluster de base de données PostgreSQL sur un serveur intitulé feldspar. Un utilisateur sde est créé tout comme une base de données, pggdb, dans le tablespace existant, gdbspace. Le fichier de codes clés figure sur le serveur Linux local.

import arcpy arcpy.CreateEnterpriseGeodatabase_management(    "POSTGRESQL", "feldspar", "pggdb", "DATABASE_AUTH", "postgres", "averturis",     "", "sde", "nomira", "gdbspace", 
    "//arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes")
4ème exemple d'utilisation de l'outil Créer une géodatabase (script autonome)

Le script Python autonome suivant vous permet de fournir des informations spécifiques à votre site à l'aide d'options.

"""
Name: create_enterprise_gdb.py
Description: Provide connection information to a DBMS instance and create an enterprise geodatabase.
Type  create_enterprise_gdb.py -h or create_enterprise_gdb.py --help for usage
"""

# Import system modules
import arcpy
import os
import optparse
import 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', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, ORACLE, or POSTGRESQL.")                   
parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Do not specify for Oracle")
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="Dbms_admin", type="string", default="", help="DBMS administrator user")
parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password")
parser.add_option ("--schema", dest="Schema_type", type="choice", choices=['SDE_SCHEMA', 'DBO_SCHEMA'], default="SDE_SCHEMA", help="Schema type  applies to geodatabases in SQL Server only. Type SDE_SCHEMA to create geodatabase in SDE schema or type DBO_SCHEMA to create geodatabase in DBO schema. Default=SDE_SCHEMA")
parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name; Must always be sde for PostgreSQL, sde-schema geodatabases in SQL Server, and sde geodatabase in Oracle")
parser.add_option ("-p", dest="Gdb_admin_pwd", type="string", default="", help="Geodatabase administrator password")
parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name; For PostgreSQL, type name of existing tablespace in which to store database. If no tablespace name specified, pg_default is used. For Oracle, type name of existing tablespace, or, if tablespace with specified name does not exist, it will be created and set as the default tablespace for the sde user. If no tablespace name is specified, SDE_TBS tablespace is created and set as sde user default. Tablespace name not supported for SQL Server.")
parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file; file created when ArcGIS Server Enterprise authorized, and stored in \\Program Files\ESRI\License<release#>\sysgen on Windows or /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen on Linux")
# 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
	database = options.Database.lower()	
	account_authentication = options.Account_authentication.upper()
	dbms_admin = options.Dbms_admin
	dbms_admin_pwd = options.Dbms_admin_pwd
	schema_type = options.Schema_type.upper()
	gdb_admin = options.Gdb_admin
	gdb_admin_pwd = options.Gdb_admin_pwd	
	tablespace = options.Tablespace
	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)			
	
	if(database_type == "SQL_SERVER"):
		if(schema_type == "SDE_SCHEMA" and gdb_admin.lower() != "sde"):
			print("\n%s: error: %s\n" % (sys.argv[0], "To create SDE schema on SQL Server, geodatabase administrator must be SDE."))
			sys.exit(3)
		if (schema_type == "DBO_SCHEMA" and gdb_admin != ""):
			print("\nWarning: %s\n" % ("Ignoring geodatabase administrator specified when creating DBO schema..."))
		if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""):
			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication"))
			sys.exit(3)
		if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""):
			print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication..."))
	else:
		if (schema_type == "DBO_SCHEMA"):
			print("\nWarning: %s %s, %s\n" % ("Only SDE schema is supported on", database_type, "switching to SDE schema..." ))
			
		if( gdb_admin.lower() == ""):
			print("\n%s: error: %s\n" % (sys.argv[0], "Geodatabase administrator must be specified."))
			sys.exit(3)

		if( gdb_admin.lower() != "sde"):
			if (database_type == "ORACLE"):
				print("\nGeodatabase admin user is not SDE, creating user schema geodatabase on Oracle...\n")
			else:
				print("\n%s: error: %s for %s.\n" % (sys.argv[0], "Geodatabase administrator must be SDE", database_type))
				sys.exit(3)
			
		if( dbms_admin == ""):
			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!"))
			sys.exit(3)

		if (account_authentication == "OPERATING_SYSTEM_AUTH"):
			print("Warning: %s %s, %s\n" % ("Only database authentication is supported on", database_type, "switching to database authentication..." ))

	# Get the current product license
	product_license=arcpy.ProductInfo()
	
	
	# Checks required license level
	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
		print("\n" + product_license + " license found!" + " Creating an enterprise geodatabase requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license.")
		sys.exit("Re-authorize ArcGIS before creating enterprise geodatabase.")
	else:
		print("\n" + product_license + " license available!  Continuing to create...")
		arcpy.AddMessage("+++++++++")
	
	
	try:
		print("Creating enterprise geodatabase...\n")
		arcpy.CreateEnterpriseGeodatabase_management(database_platform=database_type,instance_name=instance, database_name=database, account_authentication=account_authentication, database_admin=dbms_admin, database_admin_password=dbms_admin_pwd, sde_schema=schema_type, gdb_admin_name=gdb_admin, gdb_admin_password=gdb_admin_pwd, tablespace_name=tablespace, 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)
			
#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)

Environnements

Cet outil n'utilise pas d’environnement de géotraitement.

Informations de licence

  • Basic: Non
  • Standard: Oui
  • Advanced: Oui

Rubriques connexes