Actualizar una geodatabase en Oracle

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. Es posible que también tenga que actualizar la base de datos si la versión que utiliza ya no es compatible con los clientes de ArcGIS que utiliza.

Instale una nueva versión de ArcGIS AllSource o ArcGIS Server o aplique un service pack, parche o corrección urgente a la instalación existente y actualice la geodatabase.

Nota:

Aunque no actualice la geodatabase, es posible que la versión de la base de datos que utiliza ya no sea compatible con la versión actual del software ArcGIS. Si la versión de la base de datos ya no se admite, es posible que necesite actualizar la geodatabase. Cuanto más tiempo transcurre entre actualizaciones, más complejo resulta el proceso de actualización.

Al actualizar la geodatabase mediante ArcGIS AllSource 3.3, la versión de la geodatabase actualizada es 11.3.0.

Complete los pasos necesarios antes de la actualización y actualice su geodatabase utilizando la herramienta de geoprocesamiento Actualizar geodatabase o un script de Python.

Antes de actualizar

Planifique con antelación la actualización de cualquier sistema corporativo, incluida la geodatabase. Pruebe la versión nueva en un servidor de desarrollo o de prueba para asegurarse de que funciona con todas las aplicaciones cliente.

Cuando determine 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:

  • Ya no se admiten las actualizaciones de geodatabases de esquema de usuario. En este momento, puede actualizar la geodatabase sde, aunque no puede actualizar las geodatabases de esquema de usuario. Aún puede conectarse a las geodatabases de esquema de usuario, aunque no puede actualizarlas.
  • Las actualizaciones desde las versiones beta o preliminares del software no están admitidas.
  • Es posible actualizar directamente desde una geodatabase 10.8.1, 10.9.x u 11.x si la versión de su base de datos se admite en la versión de ArcGIS a la que se desea actualizar.

    Para actualizar desde una versión anterior de la geodatabase, primero tiene que actualizar la geodatabase a la versión 10.8.1, 10.9.x u 11.0. Siga las instrucciones para actualizar a esta versión antes de actualizar a la versión de geodatabase actual.

    Si la base de datos Oracle no tiene una versión compatible con la versión actual de la geodatabase, es posible que tenga que actualizar la base de datos y la geodatabase más de una vez antes de que pueda actualizar la geodatabase a la versión actual.

    Por ejemplo, si tiene una geodatabase de la versión 10.7.1.x en Oracle 11.2.0.4, actualice la base de datos a una versión más reciente que sea compatible con ArcGIS 10.7.1, como Oracle 12.1.02.

    A continuación, actualice la geodatabase a una versión compatible con Oracle 12.1.02 y que admita una versión Oracle que también sea compatible con la versión actual de ArcGIS. Por ejemplo, puede actualizar a la versión 10.9.1 de la geodatabase. A continuación, actualice Oracle a una versión que sea compatible con la versión de ArcGIS actual. Ahora puede actualizar la geodatabase a la versión actual de ArcGIS.

    En cada actualización de geodatabase intermedia, siga las instrucciones de actualización correspondientes a la versión de la geodatabase y pruebe la geodatabase cuando pase de una versión a otra. De forma similar, siga las instrucciones de actualización del proveedor de la base de datos correspondiente a cada versión de esta y pruebe cuando pase de una versión a otra.

  • No puede actualizar una geodatabase en una base de datos de Oracle 12c. Para poder actualizar la geodatabase, primero tiene que actualizarla a una versión de Oracle 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.
  • Verifique que el parámetro OPEN_CURSORS de Oracle está establecido en un valor alto, por ejemplo, 2000, y que la configuración está sincronizada con la geodatabase.
  • Una vez que haya actualizado la geodatabase a la versión actual, esta solo utilizará tablas temporales globales para las tablas de archivos de registro.

A continuación, se ofrece la lista de pasos que debe realizar antes de actualizar la geodatabase:

  1. Consulte los Requisitos de ArcGIS para Oracle para comprobar que Esri admita la combinación de versiones de Oracle y ArcGIS que desea utilizar.
  2. Compruebe si su geodatabase se puede actualizar.

    Para ello, instale la versión cliente de ArcGIS a la que desee cambiar en un equipo. Si instala ArcGIS AllSource, puede conectarse a una geodatabase y abrir el cuadro de diálogo Propiedades de base de datos para averiguar si es posible actualizar una geodatabase. Si instala ArcGIS Server (Enterprise Edition), puede utilizar la función ArcPy Describe 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 se devuelve false, puede actualizar la geodatabase. Si se devuelve true, no necesita actualizar la geodatabase. No continúe con los siguientes pasos.

  3. Asegúrese de que el componente Oracle Text 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 sentencia SQL mientras tenga iniciada una sesión como SYSTEM o como usuario con privilegios DBA en la base de datos:

    SELECT owner, object_name
    FROM all_objects
    WHERE object_type = 'PACKAGE'
      AND object_name = 'CTX_DDL';
    Si no se muestra ningún registro, significa que el componente de Texto no está instalado. Ejecute la instalación de Oracle para instalar el componente Text.

  4. Cree una copia de seguridad de la base de datos.
  5. 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á.

  6. Otorgue al administrador de la geodatabase los permisos necesarios para actualizarla.

    Consulte la lista de los privilegios necesarios en Privilegios para geodatabases en Oracle.

  7. Si obtiene acceso a datos directamente desde SQL, sustituya st_shapelib existente en el servidor de Oracle por la nueva versión de la biblioteca.

    Descargue el nuevo archivo st_shapelib de My Esri.

    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 el agente de escucha de Oracle. Para obtener más información, consulte Configurar el extproc para acceder a ST_Geometry en Oracle.

  8. Asegúrese de que no haya usuarios conectados a la geodatabase que está actualizando. Si la geodatabase contiene geodatabases de esquema de usuario, asegúrese también de que no haya nadie conectado a ninguna de las geodatabases de esquema de usuario.

    Para ver una lista de los usuarios que están conectados actualmente a la geodatabase, abra el cuadro de diálogo Administración de geodatabase en ArcGIS AllSource.

Ahora puede actualizar la geodatabase.

Actualizar la geodatabase

Puede utilizar la herramienta Actualizar geodatabase de ArcGIS AllSource o una secuencia de comandos de Python en un equipo de ArcGIS AllSource o ArcGIS Server para actualizar su geodatabase.

Nota:

Debe utilizar la sintaxis de conexión actual al conectar a la geodatabase para actualizarla. El proceso de actualización fallará si utiliza una sintaxis de conexión antigua. Consulte Conectarse a Oracle desde ArcGIS para obtener información sobre la sintaxis de conexión.

Si la geodatabase contiene datos versionados en rama, pueden ser necesarios pasos adicionales posteriores a la actualización. Consulte Cómo funciona Actualizar geodatabase para obtener instrucciones.

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 AllSource

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 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 de su directorio TEMP de usuario. Si su usuario no tiene configurado ningún directorio temporal, se utilizará el directorio TEMP del sistema.

Ejecutar un script

Para actualizar la geodatabase con una secuencia de comandos de Python, 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 al 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, 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 el siguiente script y proporcionar información específica de su sitio en la línea de comandos:
    """
    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)
    Por ejemplo, si guardó el archivo de texto como gdbupgrade y el nombre de la base de datos es myogdb, escriba lo siguiente en una ventana de comando:

    gdbupgrade --DBMS ORACLE -i myogdb --auth DATABASE_AUTH -u sde -p mysdepassword --upgrade TRUE