Disponible con una licencia Standard o Advanced.
El objetivo de actualizar una geodatabase corporativa es actualizar las tablas del sistema de geodatabase, los procedimientos almacenados, los tipos y las funciones para aprovechar las funcionalidades y correcciones de errores nuevas.
Instale una nueva versión del cliente de ArcGIS o aplique un service pack, parche o corrección urgente a la instalación existente y actualice la geodatabase.
Complete los pasos necesarios antes de la actualización y, a continuación, actualice la geodatabase utilizando la herramienta de geoprocesamiento Actualizar geodatabase o un script de Python.
Antes de actualizar
Cuando actualice un sistema corporativo, incluida una geodatabase, planifique de antemano. Pruebe la versión nueva en un servidor de desarrollo o de prueba para asegurarse de que funciona con todas las aplicaciones cliente.
Cuando haya determinado que el sistema nuevo funciona como se espera, programe la actualización; asegúrese de que el personal necesario esté disponible para realizar la actualización y cuente con los permisos necesarios para completar las tareas asignadas.
Tenga en cuenta lo siguiente:
- Las actualizaciones desde las versiones beta o preliminares del software no están admitidas.
- Puede actualizar directamente desde una geodatabase 10.6.1, 10.7.x, 10.8.x o 10.9.x si la base de datos PostgreSQL tiene una versión compatible.
- No existe un método estándar para volver a una versión anterior de la geodatabase. Si desea volver a la versión anterior de una geodatabase después de actualizarla a una versión más actualizada, puede restaurar la base de datos desde un archivo de copia de seguridad que contenga la versión anterior de la geodatabase.
A continuación, se ofrece la lista de pasos que debe realizar antes de actualizar la geodatabase:
- Consulte los Requisitos de ArcGIS para PostgreSQL para comprobar que Esri admita la combinación de versiones de PostgreSQL y ArcGIS que desea utilizar.
Si necesita actualizar la base de datos PostgreSQL, consulte la documentación de PostgreSQL para obtener información sobre las nuevas funciones del sistema de administración de base de datos y el modo de actualizarla. Recuerde que las bases de datos actualizadas deben tener el mismo nombre y propietario que tenían. Asimismo, establezca la variable search_path para la base de datos en "$user", public y sde.
- Confirme que la geodatabase se puede actualizar.
Para ello, instale la versión de cliente de ArcGIS a la que desee cambiar en un equipo. Si instala ArcGIS Pro, puede conectarse a la geodatabase y abrir el cuadro de diálogo Propiedades de base de datos para determinar si es posible actualizar una geodatabase. Si instala ArcGIS Server (enterprise edition), puede utilizar la función ArcPy Describe para determinar si la geodatabase se puede actualizar, como se muestra a continuación.
# 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 aparece el texto False, puede actualizar la geodatabase. Si aparece el texto True, no necesita actualizar la geodatabase. No continúe con los siguientes pasos.
- Cree una copia de seguridad de la base de datos.
- Elimine cualquier funcionalidad personalizada que pueda haber agregado a las tablas del sistema de la geodatabase fuera de ArcGIS, como desencadenadores o índices adicionales.
El procedimiento de actualización no admite las personalizaciones que realiza en las tablas del sistema. Si tales personalizaciones previenen la alteración de un esquema de una tabla del sistema, la actualización fallará.
- Otorgue al usuario sde los privilegios necesarios para actualizar la geodatabase.
Consulte los privilegios específicos en Privilegios para geodatabases en PostgreSQL.
- Confirme que no haya conexiones a la geodatabase que está actualizando.
Para ver una lista de quién está conectado actualmente a la geodatabase, vaya al cuadro de diálogo Administración de geodatabase en ArcGIS Pro.
- Si la geodatabase usa el tipo ST_Geometry, complete el siguiente paso. Si no es así, puede continuar con la actualización de la geodatabase.
Si no está seguro de si la geodatabase utiliza el tipo ST_Geometry, conéctese a la base de datos desde un cliente SQL como usuario sde o como superusuario y compruebe la presencia de funciones ST_Geometry en el esquema del usuario sde.
- Descargue el archivo st_geometry desde My Esri y colóquelo en el directorio %PostgreSQL%\lib (Microsoft Windows) o en el directorio PostgreSQL lib (Linux) en el servidor de PostgreSQL.
Puede determinar la ubicación exacta del directorio lib para la instalación de PostgreSQL en Linux si ejecuta la utilidad pg_config como usuario de postgres. La ubicación de lib está indicada por el parámetro PGPKGLIBDIR.
Asegúrese de utilizar la biblioteca adecuada a su sistema operativo del servidor y la versión de PostgreSQL. Las carpetas se etiquetan con la versión de la biblioteca de PostgreSQL.
- Si su servidor PostgreSQL ejecuta Linux, inicie sesión como usuario raíz del servidor y utilice el FTP para transferir el archivo st_geometry.so al directorio PostgreSQL lib.
- Si el servidor PostgreSQL ejecuta Windows, copie el archivo st_geometry.dll a la carpeta lib del directorio de instalación PostgreSQL.
A continuación, puede actualizar la geodatabase.
Actualizar la geodatabase
Puede utilizar la herramienta Actualizar geodatabase de ArcGIS Desktop o un script de Python que se ejecute en el equipo cliente de ArcGIS para actualizar la geodatabase.
Utilizar la herramienta Actualizar geodatabase
Abra la herramienta de geoprocesamiento Actualizar geodatabase desde uno de los siguientes puntos:
- El conjunto de herramientas Administración de geodatabase de la caja de herramientas Administración de datos
- El botón Ejecutar actualización en la pestaña General del cuadro de diálogo Propiedades de la base de datos en ArcGIS Pro
Si abre la herramienta desde Propiedades de base de datos, el cuadro de texto Geodatabase de entrada ya cuenta con la información de conexión de la geodatabase.
Esri recomienda que deje las opciones Comprobación de requisitos previos y Actualizar geodatabase activadas. De esta manera, la herramienta confirma que los requisitos previos de la actualización se cumplan antes de continuar con la actualización de la geodatabase.
La comprobación de requisitos previos detecta otras conexiones activas en la geodatabase, determina si el usuario conectado posee los suficientes privilegios para actualizar la geodatabase, se asegura de que la base de datos admita columnas XML, de que todos los datasets se puedan abrir y confirma que la base de datos y las bibliotecas sean de la misma versión. Si no se cumple algún requisito previo, la herramienta finaliza. Debe corregir cualquier problema antes de ejecutar el procedimiento de actualización nuevamente.
Los resultados de esta comprobación se indican en el cuadro de diálogo de la herramienta de geoprocesamiento. Si la comprobación (o actualización) falla, los resultados también se escribirán en el archivo GDBUpgrade.log de la carpeta c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.
Si se superan todas las comprobaciones, la herramienta procede con la actualización. El estado de la comprobación de requisitos previos y de la actualización se muestra en el cuadro de diálogo de progreso de la herramienta de geoprocesamiento. Si se produce un error durante la actualización, la información se registra en el archivo GDBUpgrade.log. Se escribe información adicional en el archivo sde_setup.log del directorio TEMP del sistema.
Ejecutar una secuencia de comandos
Para actualizar la geodatabase, copie una de estas secuencias de comandos de ejemplo en un editor de texto. Modifique cualquier valor de variable para que coincidan con la información del sitio.
- Si tiene un archivo de conexión de base de datos existente que se conecta como usuario sde, copie el script que aplica a su sistema operativo cliente, péguelo en un editor de texto, modifíquelo para que utilice la información específica de su sitio, guarde y cierre el archivo y, a continuación, ejecute el script:
# 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 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 no tiene un archivo de conexión de base de datos en el equipo desde el cual programa la actualización, puede copiar la siguiente secuencia de comandos y proporcionar información específica de su sitio en la línea de comandos:
Por ejemplo, si guardó el archivo de texto como gdbupgrade, su clúster de base de datos es mypgdbcluster y su base de datos es mypgdb, escriba lo siguiente en una ventana de comando:""" 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 """ # Import system modules import arcpy import os import optparse import sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 2.0; valid for 10.1 only") #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 Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS 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