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 su 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:
- El servidor de aplicaciones de ArcSDE no está disponible para ArcGIS 10.3 y versiones posteriores. Debe migrar todas las conexiones de un servidor de aplicaciones usadas en mapas o servicios para conectar directamente a la base de datos antes de actualizar su geodatabase.
- Debe actualizar la geodatabase sde maestra antes de actualizar cualquier geodatabase de esquema de usuario.
- Las actualizaciones desde las versiones beta del software no están admitidas.
- Puede actualizar directamente desde una geodatabase 10.1, 10.2.x, 10.3.x, 10.4.x, 10.5.x si la base de datos tiene una versión compatible.
- Si la geodatabase es de la versión 10 o de una versión anterior, primero deberá actualizarla a una versión de geodatabase compatible para poder actualizar a la versión actual de ArcGIS.
- Una vez que la geodatabase se haya actualizado a la versión actual, ArcGIS 10 y los clientes más antiguos no podrán conectarse a ella.
- 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, deberá restaurar la base de datos anterior desde un archivo de copia de seguridad.
- Si su geodatabase se encuentra en una versión 11.x o 12.1.0.1 de Oracle y desea utilizar el versionado en rama, debe cambiar a una versión de Oracle que admita el versionado en rama antes de actualizar la geodatabase. Así, se crearán tablas de sistema versionadas en rama en la geodatabase.
A continuación se ofrece la lista de pasos que debe realizar antes de actualizar la geodatabase:
- Consulte los Requisitos de la base de datos de Oracle para ArcGIS para comprobar que Esri admite la combinación de las versiones de Oracle y ArcGIS que desea utilizar.
- Compruebe si su 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 Desktop, puede conectarse a una geodatabase y abrir el cuadro de diálogo Propiedades de base de datos para saber si es posible actualizar una geodatabase. Si instala ArcGIS Server (enterprise edition) o la extensión ArcGIS Engine Geodatabase Update, puede utilizar la función Describe de ArcPy para determinar si se puede actualizar la geodatabase.
# Open Python. cd /arcgis/server/tools ./python # Create a connection to the geodatabase. arcpy.CreateDatabaseConnection_management("/tmp/", "egdb_connection.sde", "ORACLE", "myogdb", "DATABASE_AUTH", "sde", "mysdepassword", "SAVE_USERNAME") # 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.
- Asegúrese de que el componente de texto de Oracle esté instalado.
El componente de Texto se instala de forma predetermina en Oracle; sin embargo, si no realizó una instalación predeterminada, este componente puede no estar instalado.
Para ver si está instalado, ejecute la siguiente declaración SQL mientras esté conectado como SYSTEM o como usuario con privilegios DBA en la base de datos:
Si no se muestra ningún registro, significa que el componente Text no está instalado. Ejecute la instalación de Oracle para instalar el componente de Texto.SELECT owner, object_name FROM all_objects WHERE object_type = 'PACKAGE' AND object_name = 'CTX_DDL';
- Convierta cualquier conexión al servidor de aplicaciones que se utilice en los mapas o servicios existentes en conexiones directas.
- 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 puede detectar personalizaciones que realiza a 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 administrador de la geodatabase los permisos necesarios para actualizarla.
Consulte la lista de los privilegios necesarios en Privilegios para geodatabases en Oracle.
- Si obtiene acceso a datos directamente desde SQL, sustituya st_shapelib existente en el servidor de Oracle con la nueva versión de la biblioteca. Puede copiar el nuevo archivo st_shapelib de la carpeta DatabaseSupport de una instalación de 10.5.1 ArcMap o ArcGIS Server.
Asegúrese de utilizar la biblioteca apropiada para el sistema operativo del servidor de Oracle.
Si coloca la biblioteca en un directorio diferente en el servidor de Oracle en el que estaba anteriormente, deberá volver a configurar el extproc para que apunte a la nueva ubicación de biblioteca y reiniciar Oracle listener. Consulte Configurar Oracle extproc para acceder a la geodatabase con SQL para obtener más información.
- Si utiliza el tipo de almacenamiento ST_Raster en su geodatabase, sustituya el archivo libst_raster_ora existente en el servidor de Oracle con la nueva versión de la biblioteca. Puede copiar el nuevo archivo libst_raster_ora de la carpeta DatabaseSupport de una instalación de ArcMap o ArcGIS Server.
Asegúrese de utilizar la biblioteca apropiada para el sistema operativo del servidor de Oracle.
- Asegúrese de que no haya usuarios conectados a la geodatabase que está actualizando. Si está actualizando la geodatabase maestra sde, también asegúrese de que no haya nadie conectado a ninguna de las geodatabases de esquema de usuario de la base de datos de Oracle.
Para ver una lista de los usuarios que están conectados actualmente a su geodatabase, vaya al cuadro de diálogo Administración de geodatabase en un cliente de ArcGIS Desktop.
A continuación, puede actualizar la geodatabase.
Actualizar la geodatabase
Puede utilizar la herramienta Actualizar geodatabase de ArcMap o ArcGIS Pro, o utilizar un script de Python que se ejecute en el equipo cliente de ArcGIS para actualizar la geodatabase.
Utilizar la herramienta Actualizar geodatabase
Puede abrir la herramienta de geoprocesamiento Actualizar geodatabase desde
- El conjunto de herramientas Administración de geodatabase de la caja de herramientas Administración de datos
- El botón Actualizar geodatabase en la pestaña General del cuadro de diálogo Propiedades de la base de datos en ArcMap o ArcCatalog
- 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
Esri recomienda que deje las opciones Comprobación de requisitos previos y Actualizar geodatabase activadas. De esta manera, la herramienta comprueba si los requisitos previos de la actualización se cumplieron 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 se cerciora de 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, que se encuentra en c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.
Si se cumplen 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, que se encuentra en el directorio TEMP del sistema.
Ejecutar un script
Para actualizar la geodatabase, copie una de estas scripts 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 utiliza una conexión directa y se conecta como usuario sde, copie el script aplicable a su sistema operativo, péguela en un editor de texto, modifíquela para que use la información específica de su sitio, guarde y cierre el archivo y, a continuación, ejecútelo:
# Name: upgradesdegdb_example.py # Description: Connect from a Windows computer # with an existing database connection file # and upgrade an enterprise geodatabase # 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 # 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 script 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 base de datos es myogdb y actualiza la geodatabase sde maestra, 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 ORACLE -i myogdb --auth DATABASE_AUTH -u sde -p mysdepassword --upgrade TRUE
Versiones de Oracle y versiones en rama
Las tablas de sistema versionadas en rama se crean únicamente si crea o actualiza su geodatabase a una versión de Oracle en la que ArcGIS admita el versionado en rama. Significa que, si su geodatabase está en una versión de Oracle en la que no se admite el versionado en rama, no puede utilizar el versionado en rama.
Incluso si la versión de la geodatabase admite el versionado en rama, pero la geodatabase se encuentra en una base de datos de Oracle 11.x o 12.1.0.1 (por ejemplo, tiene una geodatabase 10.5.x en Oracle 11.x), actualizar Oracle o restaurar su geodatabase a una versión compatible de Oracle no implementará el versionado en rama. Debe actualizar la geodatabase después de cambiar a una versión de Oracle compatible más reciente.