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.
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 para DB2 ya no está disponible a partir de la versión de ArcGIS 10.3. Debe migrar todas las conexiones de un servidor de aplicaciones usadas en mapas o servicios para utilizar conexiones directas antes de actualizar la versión de su geodatabase a 10.3.
- Las actualizaciones desde las versiones beta del software no están admitidas.
- Puede actualizar directamente una geodatabase 9.3.1, 10, 10.1, 10.2 o 10.2.1 a 10.3 si la base de datos se encuentra en una versión compatible.
- Si la geodatabase es 9.3 o de una versión anterior, primero deberá actualizarla a una versión compatible y luego actualizarla a 10.3.
- Una vez que se actualiza la geodatabase, las versiones anteriores de ArcGIS no podrán conectarla ya que algunas versiones anteriores de ArcGIS no pueden leer las versiones más recientes de la geodatabase. Versiones anteriores a ArcGIS 10 no podrán conectarse a una geodatabase 10.3. Los clientes de ArcGIS 10 podrán conectarse a la geodatabase 10.3.
- No existe un método estándar para volver a una versión anterior de la geodatabase. Si después de actualizarla a una versión más reciente desea volver a una versión anterior de la geodatabase, debe restaurar la base de datos anterior desde la copia de seguridad.
A continuación se ofrece la lista de pasos que debe realizar antes de actualizar la geodatabase:
- Asegúrese de que la versión de DB2 que desea usar es compatible con ArcGIS 10.3. Consulte Requisitos de base de datos IBM DB2 para ArcGIS para obtener información.
La base de datos debe tener una versión compatible y el hardware debe cumplir con al menos los requisitos mínimos del sistema antes de actualizar la geodatabase.
- 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 for 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. Asimismo, si instala ArcGIS for Server o ArcGIS Engine con la extensión Geodatabase Update, puede usar la función Describe de ArcPy para determinar si puede actualizarse la geodatabase.
# Open Python. cd /arcgis/server/tools ./python # Create a connection to the geodatabase. arcpy.CreateDatabaseConnection_management("/tmp/", "egdb_connection.sde", "DB2", "mydbgdb", "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.
- Cree una copia de seguridad de la base de datos.
- El usuario sde necesita ejecutar la función MON_GET_CONNECTION para eliminar las conexiones innecesarias de la tabla del sistema PROCESS_INFORMATION. Por consiguiente, debe otorgar privilegios EXECUTE sobre MON_GET_CONNECTION al usuario sde.
- Si el administrador de la base de datos revocó los privilegios SELECT en la vista del catálogo SYSIBM.SYSDUMMY1, él mismo deberá volver a otorgar el privilegio a PUBLIC o a todos los usuarios que se conecten a la geodatabase en DB2. Este privilegio es necesario para realizar las consultas de SQL a la base de datos.
Si los usuarios no cuentan con privilegios SELECT en esta vista de catálogo, al intentar conectarse verán un error parecido al siguiente:
SQL0551N "ANYA" does not have the privilege to perform operation "SELECT" on object "SYSIBM.SYSDUMMY1". SQLSTATE=42501
Para otorgar los privilegios SELECT en esta vista a PUBLIC, ejecute el siguiente comando mientras esté conectado como un usuario con permiso DBADM:
GRANT SELECT ON SYSIBM.SYSDUMMY1 TO PUBLIC;
- Otorgue autoridad DBADM al usuario sde en la base de datos. Esto se requiere para actualizar una geodatabase.
- Elimine cualquier funcionalidad personalizada que pueda haber agregado a las tablas del sistema de 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á.
- En esta etapa, es posible que desee crear una segunda copia de seguridad de la base de datos para preservar los cambios que realizó en los pasos anteriores.
- Instale la versión de cliente de ArcGIS actual (ArcGIS for Desktop Standard o Advanced, ArcGIS Engine con la extensión Geodatabase Update o ArcGIS for Server Enterprise Standard o Advanced) en un equipo que pueda conectarse de manera directa a la geodatabase para realizar la actualización.
- Asegúrese de que no haya conexiones a la geodatabase que está actualizando.
Para ver una lista de los usuarios que están conectados actualmente a su geodatabase abriendo la pestaña Usuarios conectados del cuadro de diálogo Administración de geodatabase en ArcGIS for Desktop.
A continuación, puede actualizar la geodatabase.
Actualizar la geodatabase
Puede utilizar la herramienta Actualizar geodatabase de ArcGIS for Desktop o una secuencia de comandos de Python que se ejecute en el equipo cliente de ArcGIS para actualizar la geodatabase.
Utilizar la herramienta Actualizar geodatabase
Puede abrir Actualizar geodatabase desde el cuadro de diálogo Propiedades de base de datos haciendo clic en el botón Actualizar geodatabase de la pestaña General o abrir la herramienta directamente. Si abre la herramienta desde Propiedades de base de datos, el cuadro de texto Geodatabase de entrada ya cuenta con la información de la 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 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. El archivo sdesetup.log, que también se encuentra en el directorio TEMP del sistema, contiene información adicional.
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 utiliza una conexión directa y se conecta como usuario sde, copie la secuencia de comandos 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 # Author: Esri # 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 # Author: Esri # 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 y su base de datos catalogada 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 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 DB2 -i mydbgdb --auth DATABASE_AUTH -u sde -p mysdepassword --upgrade TRUE