Disponible avec une licence Standard ou Advanced.
La mise à niveau d'une géodatabase d'entreprise consiste à mettre à jour les tables système de géodatabase, les procédures stockées, les types et les fonctions pour bénéficier des nouvelles fonctionnalités et des corrections de bogues.
Installez une nouvelle version du client ArcGIS ou appliquez un service pack, un patch ou un correctif à une installation existante, puis mettez à niveau la géodatabase.
Avant de procéder à la mise à niveau
Lorsque vous mettez à niveau un système d'entreprise, y compris une géodatabase, planifiez à l'avance. Testez la nouvelle version sur un serveur de développement ou de test pour vérifier qu'elle fonctionne avec toutes vos applications clientes.
Lorsque vous vous êtes assuré que le nouveau système fonctionne comme attendu, programmez la mise à niveau ; assurez-vous que le personnel nécessaire est disponible pour effectuer la mise à niveau et qu'il dispose des autorisations nécessaires pour effectuer ces tâches.
Vérifiez les éléments suivants :
- Le serveur d'applications ArcSDE pour PostgreSQL n'est pas disponible avec ArcGIS 10.3 et versions ultérieures. Vous devez migrer toutes les connexions au serveur d'applications utilisées dans les cartes ou les services pour vous connecter directement à la base de données avant de mettre à niveau votre géodatabase.
- Les mises à niveau des versions bêta du logiciel ne sont pas prises en charge.
- Vous pouvez effectuer une mise à niveau d'une géodatabase 10.1, 10.2, 10.2.1, 10.2.2, 10.3, 10.3.1, 10.4, 1.0, 1.1 ou 1.2 si la version de votre base de données est prise en charge.
- Si votre géodatabase est de version 10 ou antérieure, vous devez commencer par la mettre à niveau vers une version prise en charge avant d'effectuer la mise à niveau vers la version actuelle d'ArcGIS.
- Une fois la géodatabase mise à niveau, il est possible que les versions précédentes d'ArcGIS ne puissent plus se connecter, car elles sont incapables de lire certaines versions plus récentes de la géodatabase. Les versions antérieures à ArcGIS 10.1 ne peuvent pas se connecter à une géodatabase de version 10.4.1 ou 1.2.
- Il n'existe aucun mécanisme formel permettant de rétrograder une géodatabase vers une version antérieure. Si, après avoir effectué une mise à niveau vers une version plus récente, vous voulez rétrograder la géodatabase, restaurez l'ancienne base de données à partir d'un fichier de sauvegarde.
La liste de contrôle suivante décrit les étapes à suivre avant de mettre à niveau votre géodatabase :
- Prenez connaissance des spécifications de bases de données PostgreSQL pour ArcGIS pour confirmer qu'Esri prend en charge l'association de versions de PostgreSQL et d'ArcGIS que vous souhaitez utiliser.
Si vous devez mettre à niveau votre base de données PostgreSQL, consultez la documentation PostgreSQL pour plus d'informations sur les nouvelles fonctionnalités du SGBD et la procédure de mise à niveau. Gardez à l'esprit que les bases de données mises à niveau doivent avoir les mêmes nom et propriétaire qu'auparavant. En outre, définissez la variable search_path de la base de données sur "$user", public et sde.
- Vérifiez que votre géodatabase peut être mise à niveau. Pour ce faire, installez la version du client ArcGIS que vous souhaitez migrer vers l'autre ordinateur. Si vous installez ArcGIS for Desktop, vous pouvez vous connecter à la géodatabase et ouvrir la boîte de dialogue Propriétés de la base de données pour déterminer si la géodatabase peut être mise à niveau. Si vous installez ArcGIS for Server ou l'extension ArcGIS Engine - Mise à jour géodatabase, vous pouvez utiliser la fonction ArcPy Describe pour déterminer si la géodatabase peut être mise à niveau.
# Open Python. cd /arcgis/server/tools ./python # Create a connection to the geodatabase. arcpy.CreateDatabaseConnection_management("/tmp/", "egdb_connection.sde", "POSTGRESQL", "mypgdbcluster", "DATABASE_AUTH", "sde", "mysdepassword", "SAVE_USERNAME", "mypgdb") # Import ArcPy and check the geodatabase release. import arcpy isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease print isCurrent
Si la valeur False est renvoyée, vous pouvez mettre à niveau votre géodatabase. Si la valeur True est renvoyée, votre géodatabase n'a pas besoin d'être mise à niveau. N'exécutez pas les étapes suivantes.
- Convertissez les connexions au serveur d'applications utilisées dans les cartes ou services existants en connexions directes.
- Créez une sauvegarde de la base de données.
- Supprimez les fonctionnalités personnalisées éventuellement ajoutées aux tables système de géodatabase en dehors d'ArcGIS, telles que des déclencheurs ou des index supplémentaires.
La procédure de mise à niveau ne peut pas tenir compte des personnalisations que vous apportez aux tables système. Si de telles personnalisations empêchent l'altération de la structure d'une table système, la mise à niveau échoue.
- Accordez le statut de superutilisateur à l'utilisateur SDE dans la base de données.
C'est obligatoire pour la mise à niveau d'une géodatabase.
- Vérifiez qu'aucune connexion n'est établie à la géodatabase que vous mettez à niveau.
Pour voir la liste des utilisateurs actuellement connectés à votre géodatabase, ouvrez la boîte de dialogue Administration de géodatabase dans un client ArcGIS for Desktop.
- Copiez le fichier st_geometry (et libst_raster_pg, si vous utilisez le type de stockage ST_Raster dans votre géodatabase) du répertoire DatabaseSupport dans votre installation du client ArcGIS 10.4, puis placez-les dans le répertoire %PostgreSQL%\lib directory (Windows) ou dans le répertoire lib PostgreSQL (Linux) sur le serveur PostgreSQL. Vous pouvez déterminer l'emplacement exact du répertoire lib de votre installation PostgreSQL sur Linux en exécutant l'utilitaire pg_config en tant qu'utilisateur postgres. L'emplacement du répertoire lib est indiqué par le paramètre PGPKGLIBDIR.
Veillez à utiliser la bibliothèque appropriée dans la version de PostgreSQL et le système d'exploitation du serveur. Les étiquettes des dossiers indiquent la version de la bibliothèque PostgreSQL.
- Si votre serveur PostgreSQL exécute Linux, connectez-vous en tant qu'utilisateur racine au serveur et utilisez FTP pour transférer le fichier st_geometry.so (et le fichier libst_raster_pg.so lors de l'utilisation de ST_Raster) vers le répertoire lib de PostgreSQL.
- Si votre serveur PostgreSQL exécute Windows, copiez le fichier st_geometry.dll (et le fichier libst_raster_pg.dll si vous utilisez ST_Raster) dans le dossier lib du répertoire d'installation de PostgreSQL.
Vous pouvez maintenant mettre à niveau votre géodatabase.
Mettre à niveau la géodatabase
Vous pouvez utiliser l'outil Mettre à niveau la géodatabase dans ArcGIS for Desktop ou exécuter un script Python sur l'ordinateur du client ArcGIS pour mettre à niveau votre géodatabase.
Utiliser l'outil Mettre à niveau la géodatabase
Vous pouvez ouvrir l'outil de géotraitement Mettre à niveau la géodatabase depuis
- le jeu d'outils Administration de la géodatabase de la boîte à outils Data Management,
- le bouton Mettre à niveau la géodatabase de l'onglet Général, dans la boîte de dialogue Propriétés de la base de données d'ArcMap ou ArcCatalog.
- le bouton Exécuter la mise à niveau dans l'onglet Général de la boîte de dialogue Propriétés de la base de données d'ArcGIS Pro
Esri conseille de laisser les options Exécuter une recherche de prérequis et Mettre à niveau la géodatabase activées. De cette façon, l'outil vérifie si les conditions préalables à la mise à niveau sont réunies avant la mise à niveau de la géodatabase.
Le contrôle préalable détecte d'autres connexions actives à la géodatabase, détermine si l'utilisateur qui tente d'établir la connexion a des privilèges suffisants pour mettre à niveau la géodatabase, garantit que la base de données peut prendre en charge des colonnes XML, s'assure que tous les jeux de données peuvent être ouverts et que la base de données et bibliothèques sont à la même version. Si les conditions préalables ne sont pas toutes remplies, l'outil s'arrête. Vous devez résoudre tous les problèmes avant d'exécuter à nouveau la mise à niveau.
Les résultats de ce contrôle sont signalés dans la boîte de dialogue de l'outil de géotraitement. Si la vérification (ou la mise à niveau) échoue, les résultats sont également consignés dans le fichier GDBUpgrade.log, qui se trouve dans le répertoire c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.
Si tous les contrôles aboutissent, l'outil poursuit la mise à niveau. L'état du contrôle préalable et de la mise à niveau est indiquée dans la boîte de dialogue de progression de l'outil de géotraitement. Si la mise à niveau échoue, des informations sont consignées dans le fichier GDBUpgrade.log. Des informations complémentaires sont écrites dans le fichier sde_setup.log, qui se trouve dans le répertoire TEMP du système.
Exécuter un script
Pour mettre à niveau la géodatabase, copiez un de ces scripts d'exemple dans un éditeur de texte. Modifiez les valeurs des variables pour qu'elles correspondent aux informations de votre site.
- Si vous avez un fichier de connexion à une base de données qui utilise une connexion directe pour se connecter en tant qu'utilisateur sde, copiez le script correspondant à votre système d'exploitation, collez-le dans un éditeur de texte et modifiez-le pour insérer les informations propres à votre site, puis enregistrez le fichier, fermez-le et exécutez-le :
# Name: upgradesdegdb_example.py # Description: Connect from a Windows computer # with an existing database connection file # and upgrade an enterprise geodatabase in PostgreSQL # Import arcpy module import arcpy # Local variables: Output_Workspace = "C:\\ArcGIS\connection_files\<Connection file>" Default_gdb = "C:\\ArcGIS\connection_files\<Connection file>" # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
# Name: upgradesdegdb_example.py # Description: Connect from a Linux or UNIX computer # with an existing database connection file # and upgrade an enterprise geodatabase in PostgreSQL # Import arcpy module import arcpy # Local variables: Output_Workspace = "<user>/connections/<Connection_file>" Default_gdb = "<user>/connections/<Connection_file>" # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
- Si vous n'avez pas de fichier de connexion à une base de données sur l'ordinateur à partir duquel vous rédigez le script de mise à niveau, vous pouvez copier le script suivant et indiquer les informations propres à votre site sur la ligne de commande :Par exemple, si vous avez enregistré le fichier texte sous le nom gdbupgrade, que votre agrégat de bases de données s'appelle mypgdbcluster et que votre base de données s'appelle myogdb, saisissez les informations suivantes à l'invite de commande :
""" Name: upgrade_gdb.py Description: Provide connection information to an Enterprise geodatabase and upgrade the geodatabase Type upgrade_gdb.py -h or upgrade_gdb.py --help for usage Author: Esri """ # 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=['SQLSERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS',''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, or POSTGRESQL.") 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 ("--upgrade", dest="Upgrade", type="choice", choices=['TRUE', 'FALSE'], default="FALSE", help="Upgrade Options (case-sensitive): TRUE=Perform Pre-requisite check and upgrade geodatabase, FALSE=Perform Pre-requisite check only. Default=FALSE") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") # 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 to upgrade account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password do_upgrade = options.Upgrade database = options.Database.lower() database_type = options.Database_type.upper() instance = options.Instance if (database_type == ""): print "\nDatabase type must be specified!\n" parser.print_help() sys.exit(3) if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level to upgrade if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enterprise geodatabase upgrade requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license." sys.exit("Re-authorize ArcGIS before upgrading.") else: print "\n" + product_license + " license available! Continuing to upgrade..." 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") # Check whether geodatabase needs upgrade isCurrent = arcpy.Describe(Connection_File_Name_full_path).currentRelease if isCurrent == True: print "The geodatabase is already at the current release and cannot be upgraded!" sys.exit("Upgrade did not run.") # Process: Upgrade geodatabase... try: if do_upgrade.lower() == "true": print "Upgrading Geodatabase...\n" arcpy.UpgradeGDB_management(input_workspace=Connection_File_Name_full_path, input_prerequisite_check="PREREQUISITE_CHECK", input_upgradegdb_check="UPGRADE") for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") else: print "Running Pre-Requisite Check...\n" arcpy.UpgradeGDB_management(input_workspace=Connection_File_Name_full_path, input_prerequisite_check="PREREQUISITE_CHECK", input_upgradegdb_check="NO_UPGRADE") 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)
gdbupgrade --DBMS POSTGRESQL -i mypgdbcluster --auth DATABASE_AUTH -u sde -p mysdepassword --upgrade TRUE -D mypgdb