Aktualisieren einer Geodatabase in Oracle

Mit der Standard- oder Advanced-Lizenz verfügbar.

Ziel der Aktualisierung einer Enterprise-Geodatabase ist die Aktualisierung der Geodatabase-Systemtabellen, gespeicherter Prozeduren, Typen und Funktionen, um die neuen Funktionen und Korrekturen nutzen zu können.

Installieren Sie eine neue Version des ArcGIS-Clients, oder wenden Sie ein Service Pack, Patch oder einen Hotfix auf eine vorhandene Installation an, und aktualisieren Sie die Geodatabase.

Führen Sie die Schritte durch, die vor der Aktualisierung erforderlich sind, und aktualisieren Sie dann die Geodatabase mit dem Geoverarbeitungswerkzeug Geodatabase aktualisieren oder einem Python-Skript.

Bevor Sie die Aktualisierung ausführen

Bei der Aktualisierung eines Enterprise-Systems, einschließlich einer Geodatabase, empfiehlt es sich, vorauszuplanen. Testen Sie die neue Version auf einem Entwicklungs- oder Testserver, um sicherzustellen, dass sie mit allen Client-Anwendungen funktioniert.

Wenn Sie getestet haben, dass das neue System wie erwartet läuft, planen Sie die Aktualisierung. Stellen Sie sicher, dass die für die Aktualisierung erforderlichen Mitarbeiter verfügbar sind und dass diese für die ihnen zugewiesenen Aufgaben über die erforderlichen Berechtigungen verfügen.

Folgende Punkte sind zu beachten:

  • Upgrades von Benutzerschema-Geodatabases werden nicht mehr unterstützt. Derzeit ist es möglich, die SDE-Geodatabase zu aktualisieren, nicht jedoch die Benutzerschema-Geodatabases. Sie können weiterhin eine Verbindung zu den Benutzerschema-Geodatabases herstellen, für diese jedoch keine Upgrades durchführen.
  • Upgrades von Beta- oder Pre-Release-Versionen der Software werden nicht unterstützt.
  • Von einer Geodatabase der Versionen 10.4.x, 10.5.x, 10.6.x, 10.7.x, 10.8.x oder 10.9.x können Sie direkt eine Aktualisierung durchführen, sofern Ihr Datenbank-Release für die ArcGIS-Version, auf die Sie ein Upgrade durchführen möchten, unterstützt wird.
  • Es gibt kein offizielles Verfahren für das Herunterstufen einer Geodatabase auf eine frühere Version. Wenn Sie die Geodatabase nach der Aktualisierung auf eine neuere Version herunterstufen möchten, können Sie die Datenbank aus einer Sicherungsdatei, die die ältere Geodatabase-Version enthält, wiederherstellen.
  • Wenn Sie eine Geodatabase der Version 10.4.x aktualisieren möchten, entfernen Sie vor der Aktualisierung alle Locators aus der Geodatabase.
  • Der Speichertyp "ST_Raster" wird nicht mehr unterstützt. Sie müssen vor der Aktualisierung vorhandene Daten vom Typ "ST_Raster" in ein anderes Format konvertieren.
  • Stellen Sie sicher, dass der Oracle-Parameter "OPEN_CURSORS" auf einen hohen Wert, z. B. 2000, festgelegt ist und dass die Einstellung mit der Geodatabase synchronisiert wird.
  • Sobald Sie die Geodatabase auf die aktuelle Version aktualisieren, verwendet die Geodatabase nur globale temporäre Tabellen für Protokolldateitabellen.
  • Wenn die Geodatabase eine Oracle 12.1.0.1-Datenbank ist und Sie die Verzweigungsversionierung verwenden möchten, müssen Sie zu einer Oracle-Version wechseln, für die die Verzweigungsversionierung unterstützt wird, bevor Sie die Geodatabase aktualisieren. Sofern Sie zu einer unterstützten Oracle-Version wechseln und dann aktualisieren, werden Systemtabellen der Verzweigungsversionierung in der Geodatabase erstellt.

Nachfolgend finden Sie eine Checkliste der Schritte, die vor der Aktualisierung der Geodatabase ausgeführt werden müssen:

  1. Weitere Informationen dazu, ob die Kombination der Versionen von Oracle und ArcGIS, die Sie verwenden möchten, von Esri unterstützt wird, finden Sie unter ArcGIS-Anforderungen für Oracle.
  2. Überprüfen Sie, ob die Geodatabase aktualisiert werden kann.

    Installieren Sie dazu die gewünschte ArcGIS-Clientversion auf einem Computer. Wenn Sie ArcGIS Pro installieren, können Sie eine Verbindung mit der Geodatabase herstellen und das Dialogfeld Datenbankeigenschaften öffnen, um zu ermitteln, ob die Geodatabase aktualisiert werden kann. Wenn Sie ArcGIS Server (Enterprise Edition) installieren, können Sie mithilfe der ArcPy-Funktion Describe ermitteln, ob die Geodatabase aktualisiert werden kann.

    # 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

    Wenn false zurückgegeben wird, können Sie die Geodatabase aktualisieren. Wenn true zurückgegeben wird, muss keine Aktualisierung der Geodatabase durchgeführt werden. Fahren Sie nicht mit den nachfolgenden Schritten fort.

  3. Stellen Sie sicher, dass die Oracle-Textkomponente installiert ist.

    Die Textkomponente wird in Oracle standardmäßig installiert. Wenn Sie keine Standardinstallation ausgeführt haben, wurde die Textkomponente möglicherweise nicht installiert.

    Um zu überprüfen, ob sie installiert wurde, führen Sie die folgende SQL-Anweisung aus, während Sie als SYSTEM oder als Benutzer mit DBA-Berechtigungen bei der Datenbank angemeldet sind:

    SELECT owner, object_name
    FROM all_objects
    WHERE object_type = 'PACKAGE'
      AND object_name = 'CTX_DDL';
    Wenn kein Datensatz zurückgegeben wird, ist die Textkomponente nicht installiert. Führen Sie die Oracle-Installation aus, um die Textkomponente zu installieren.

  4. Erstellen Sie eine Sicherungskopie der Datenbank.
  5. Entfernen Sie alle benutzerdefinierten Funktionen, die Sie den Geodatabase-Systemtabellen außerhalb von ArcGIS unter Umständen hinzugefügt haben, z. B. Trigger oder zusätzliche Indizes.

    Bei der Aktualisierung werden keine Anpassungen unterstützt, die Sie an den Systemtabellen vornehmen. Wenn diese Anpassungen die Änderung des Schemas einer Systemtabelle verhindern, schlägt die Aktualisierung fehl.

  6. Gewähren Sie dem Geodatabase-Administrator die zum Aktualisieren einer Geodatabase erforderlichen Berechtigungen.

    Eine Liste der erforderlichen Berechtigungen finden Sie unter Berechtigungen für Geodatabases in Oracle.

  7. Wenn Sie direkt auf Daten in SQL zugreifen, müssen Sie die vorhandene Bibliothek "st_shapelib" auf dem Oracle-Server durch die neue Version der Bibliothek ersetzen.

    Laden Sie die neue Datei "st_shapelib" von My Esri herunter.

    Stellen Sie sicher, dass die Bibliothek dem Betriebssystem des Oracle-Servers entsprechend verwendet wird.

    Wenn Sie die Bibliothek nicht in das gleiche Verzeichnis des Oracle-Servers platzieren, in dem sie vorher abgelegt war, müssen Sie extproc so neu konfigurieren, dass es auf den neuen Bibliotheksspeicherort zeigt, und den Oracle-Listener neu starten. Weitere Informationen finden Sie unter Konfigurieren von "extproc" für den Zugriff auf "ST_Geometry" in Oracle.

  8. Stellen sie sicher, dass gerade keine Benutzer mit der Geodatabase verbunden sind, die gerade aktualisiert wird. Wenn die Geodatabase Benutzerschema-Geodatenbanken enthält, stellen Sie zudem sicher, dass kein Benutzer mit einer Benutzerschema-Geodatabase verbunden ist.

    Um eine Liste der Benutzer anzuzeigen, die aktuell mit Ihrer Geodatabase verbunden sind, wechseln Sie inArcGIS Pro zum Dialogfeld Geodatabase-Verwaltung.

Sie können die Geodatabase jetzt aktualisieren.

Aktualisieren der Geodatabase

Sie können das Werkzeug Geodatabase aktualisieren in ArcGIS Pro verwenden oder ein Python-Skript auf dem ArcGIS-Client-Computer ausführen, um die Geodatabase zu aktualisieren.

Hinweis:

Sie müssen die aktuelle Verbindungssyntax verwenden, wenn Sie eine Verbindung zu der Geodatabase herstellen, um sie zu aktualisieren. Die Aktualisierung schlägt fehl, wenn Sie die ältere Verbindungssyntax verwenden. Weitere Informationen zur Verbindungssyntax finden Sie unter Herstellen einer Verbindung mit Oracle von ArcGIS.

Verwenden des Werkzeugs "Geodatabase aktualisieren"

Öffnen Sie das Geoverarbeitungswerkzeug Geodatabase aktualisieren über eines der folgenden Elemente der Benutzeroberfläche:

  • das Toolset "Geodatabase-Verwaltung" in der Toolbox "Data Management"
  • die Schaltfläche Upgrade ausführen auf der Registerkarte Allgemein des Dialogfeldes Eigenschaften: Datenbank in ArcGIS Pro

Wenn Sie das Werkzeug über das Dialogfeld Datenbankeigenschaften öffnen, werden die Geodatabase-Verbindungsinformationen in das Textfeld Eingabe-Geodatabase eingetragen.

Esri empfiehlt, die Optionen Überprüfung von Voraussetzungen durchführen und Geodatabase aktualisieren aktiviert zu lassen. Auf diese Weise überprüft das Werkzeug, ob die Voraussetzungen zum Aktualisieren erfüllt sind, bevor die Geodatabase-Aktualisierung fortgesetzt wird.

Die Voraussetzungsprüfung erkennt andere aktive Verbindungen zur Geodatabase und bestimmt, ob der die Verbindung herstellende Benutzer über ausreichende Berechtigungen zum Aktualisieren der Geodatabase verfügt. Außerdem wird sichergestellt, dass die Master-Datenbank XML-Spalten unterstützt, dass alle Datasets geöffnet werden können, und es wird geprüft, dass die Datenbank und die Bibliotheken die gleiche Version aufweisen. Wenn irgendwelche Voraussetzungen nicht erfüllt werden, wird das Werkzeug beendet. Alle Probleme müssen behoben werden, bevor Sie den Aktualisierungsvorgang erneut ausführen.

Die Ergebnisse dieser Überprüfung werden im Dialogfeld des Geoverarbeitungswerkzeugs erfasst. Wenn die Überprüfung (oder die Aktualisierung) nicht durchgeführt werden kann, werden die Ergebnisse auch in die Datei GDBUpgrade.log geschrieben, die sich im Verzeichnis c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product> befindet.

Wenn alle Prüfungen bestanden wurden, fährt das Werkzeug mit der Aktualisierung fort. Der Status für die Voraussetzungsprüfung und die Aktualisierung wird im Dialogfeld des Geoverarbeitungswerkzeugs angezeigt. Falls die Aktualisierung fehlschlägt, werden die Informationen in die Datei GDBUpgrade.log geschrieben. Weitere Informationen werden in die Datei sde_setup.log geschrieben, die sich ebenfalls im TEMP-Systemverzeichnis befindet.

Ausführen eines Skripts

Zum Aktualisieren der Geodatabase kopieren Sie eines dieser Beispielskripte in einen Texteditor. Ändern Sie die Variablenwerte so, dass sie mit den Informationen Ihrer Site übereinstimmen.

  • Wenn Sie über eine vorhandene Datenbankverbindungsdatei verfügen, die eine Verbindung als SDE-Benutzer herstellt, kopieren Sie das für Ihr Betriebssystem geeignete Skript, fügen Sie es in einen Texteditor ein, ändern Sie es, um für Ihre Site spezifische Informationen zu verwenden, speichern und schließen Sie die Datei, und führen Sie sie anschließend aus:
    # 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")
  • Wenn sich keine Datenbankverbindungsdatei auf dem Computer befindet, von dem Sie das Skript für die Aktualisierung erstellen, können Sie das folgende Skript kopieren und Ihre Site-spezifischen Informationen in der Befehlszeile angeben:
    """
    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)
    Wenn Sie die Textdatei beispielsweise als "gdbupgrade" gespeichert haben und Ihre Datenbank "myogdb" ist, geben Sie Folgendes in der Befehlszeile an:

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

Oracle-Versionen und Verzweigungsversionen

Systemtabellen der Verzweigungsversionen werden nur erstellt, wenn Sie die Geodatabase in einer Oracle-Version erstellen oder aktualisieren, in der ArcGIS Verzweigungsversionen unterstützt werden. Wenn die Geodatabase eine Oracle-Version aufweist, welche die Verzweigungsversionierung nicht unterstützt, können Sie die Verzweigungsversionierung also nicht verwenden.

Wenn die Geodatabase-Version die Verzweigungsversionierung unterstützt, die Geodatabase jedoch eine Oracle 12.1.0.1-Datenbank ist, wird durch ein Upgrade von Oracle oder die Wiederherstellung der Geodatabase in einer unterstützten Version von Oracle die Verzweigungsversionierung nicht implementiert. Sie müssen die Geodatabase nach dem Wechsel zu einer neueren unterstützten Oracle-Version aktualisieren.