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.
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:
- Der ArcSDE-Anwendungsserver für Oracle ist für ArcGIS 10.3 und höhere Versionen nicht verfügbar. Sie müssen alle in Karten oder Services verwendeten Anwendungsserver migrieren, um direkte Verbindungen mit der Datenbank herstellen zu können, bevor Sie eine Aktualisierung Ihrer Geodatabase durchführen können.
- Sie müssen die Master-SDE-Geodatabase aktualisieren, bevor Sie eine Benutzerschema-Geodatabase aktualisieren können.
- Aktualisierungen von Betaversionen der Software werden nicht unterstützt.
- Von einer 10.1-, 10.2-, 10.2.1-, 10.2.2-, 10.3-, 10.3.1-, 10.4-, 1.0-, 1.1- oder 1.2-Geodatabase können Sie direkt eine Aktualisierung durchführen, sofern die Datenbank unterstützt wird.
- Wenn die Geodatabase Version 10 oder niedriger aufweist, müssen Sie zuerst eine Aktualisierung auf eine unterstützte Geodatabase-Version durchführen, bevor eine Aktualisierung auf die aktuelle ArcGIS-Version möglich ist.
- Nach der Aktualisierung einer Geodatabase können ältere ArcGIS-Versionen möglicherweise nicht mit ihr verbunden werden, da einige ältere Versionen von ArcGIS neuere Versionen der Geodatabase nicht unterstützen. Frühere Versionen als ArcGIS 10.1 können nicht mit einer Geodatabase der Version 10.4.1 oder 1.2 verbunden werden.
- Es gibt kein offizielles Verfahren für das Herunterstufen einer Geodatabase auf eine frühere Version. Falls Sie die Datenbank nach der Aktualisierung auf eine neuere Version herunterstufen möchten, stellen Sie die alte Datenbank aus einer Sicherungskopie wieder her.
Nachfolgend finden Sie eine Checkliste der Schritte, die vor der Aktualisierung der Geodatabase ausgeführt werden müssen.
- Weitere Informationen dazu, ob die Kombination der Versionen Oracle und ArcGIS, die Sie verwenden möchten, von Esri unterstützt wird, finden Sie unter Oracle – Anforderungen für ArcGIS.
- Überprüfen Sie, ob Ihre Geodatabase aktualisiert werden kann. Installieren Sie dazu die gewünschte ArcGIS-Clientversion auf einen Computer. Wenn Sie ArcGIS for Desktop 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 for Server oder die Erweiterung "ArcGIS Engine Geodatabase Update" installieren, können Sie anhand der ArcPy Describe-Funktion 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 Aktualisierung der Geodatabase durchführen. Wenn true zurückgegeben wird, muss keine Aktualisierung der Geodatabase durchgeführt werden. Fahren Sie nicht mit den nachfolgenden Schritten fort.
- 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:
Wenn kein Datensatz zurückgegeben wird, ist die Textkomponente nicht installiert. Führen Sie die Oracle-Installation aus, um die Textkomponente zu installieren.SELECT owner, object_name FROM all_objects WHERE object_type = 'PACKAGE' AND object_name = 'CTX_DDL';
- Konvertieren Sie alle Anwendungsserververbindungen, die in vorhandenen Karten oder Services verwendet werden, in Direktverbindungen.
- Erstellen Sie eine Sicherungskopie der Datenbank.
- 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.
- 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.
- 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. Sie können die neue Datei "st_shapelib" aus dem Ordner "DatabaseSupport" einer 10.4 ArcGIS for Desktop- oder ArcGIS for Server-Installation kopieren.
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 Oracle extproc für den Zugriff auf die Geodatabase mit SQL.
- Wenn Sie den Speichertyp "ST_Raster" in der Geodatabase verwenden, ersetzen Sie die vorhandene Datei "libst_raster_ora" auf dem Oracle-Server mit der neuen Version der Bibliothek. Sie können die neue Datei "libst_raster_ora" aus dem Ordner "DatabaseSupport" einer 10.4 ArcGIS for Desktop- oder ArcGIS for Server-Installation kopieren.
Stellen Sie sicher, dass die Bibliothek dem Betriebssystem des Oracle-Servers entsprechend verwendet wird.
- Beachten Sie, dass gerade keine Benutzer mit der Geodatabase verbunden sind, die gerade aktualisiert wird. Wenn Sie die Master-SDE-Geodatabase aktualisieren, stellen Sie auch sicher, dass kein Benutzer mit einer Benutzerschema-Geodatabase in der Oracle-Datenbank verbunden ist.
Sie können eine Liste der Benutzer anzeigen, die aktuell mit Ihrer Geodatabase verbunden sind, indem Sie im Dialogfeld Geodatabase-Verwaltung die Registerkarte Verbindungen öffnen.
Sie können die Geodatabase jetzt aktualisieren.
Aktualisieren der Geodatabase
Sie können das Werkzeug Geodatabase aktualisieren in ArcMap oder ArcGIS Pro verwenden oder ein Python-Skript auf dem ArcGIS-Client-Computer ausführen, um die Aktualisierung durchzuführen.
Verwenden des Werkzeugs "Geodatabase aktualisieren"
Sie können das Geoverarbeitungswerkzeug Geodatabase aktualisieren über folgende Elemente aufrufen:
- das Toolset "Geodatabase-Verwaltung" in der Toolbox "Data Management"
- die Schaltfläche Geodatabase aktualisieren auf der Registerkarte Allgemein des Dialogfeldes Eigenschaften: Datenbank in ArcMap oder ArcCatalog
- die Schaltfläche Upgrade ausführen auf der Registerkarte Allgemein des Dialogfeldes Eigenschaften: Datenbank in ArcGIS Pro
Esri empfiehlt, die Optionen Überprüfung von Voraussetzungen durchführen und Geodatabase aktualisieren aktiviert zu lassen. Auf diese Weise führt das Werkzeug eine Prüfung aus, um zu ermitteln, ob die Voraussetzungen für die Aktualisierung erfüllt wurden, bevor mit der Aktualisierung der Geodatabase fortgefahren 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 direkte Verbindung verwendet und 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 # 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")
- 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:Wenn Sie die Textdatei beispielsweise als "gdbupgrade" gespeichert haben, Ihre Datenbank "mydbgdb" ist und Sie die SDE-Geodatabase aktualisieren, geben Sie Folgendes in die Befehlszeile ein:
""" 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 ORACLE -i myogdb --auth DATABASE_AUTH -u sde -p mysdepassword --upgrade TRUE