升级 Db2 中的地理数据库

在 Standard 或 Advanced 许可等级下可用。

升级企业级地理数据库的目标是更新地理数据库系统表、存储过程、类型和函数,以利用新功能和漏洞修复。 如果您使用的数据库版本在所用的 ArcGIS 客户端中不再受支持,则可能还需要对数据库进行升级。

安装新版本的 ArcGIS AllSourceArcGIS Server,或将补丁包、修补程序或热修复程序应用到现有安装并升级地理数据库。

注:

即使不升级地理数据库,您所使用的数据库版本可能在当前的 ArcGIS 软件版本中也不再受支持。 如果数据库版本不再受支持,您可能需要升级地理数据库。 执行升级操作的间隔越长,升级过程所需的操作就越多。

如果使用 ArcGIS AllSource 3.5 升级地理数据库,则已升级的地理数据库版本为 11.5.0.x。

完成下列升级前的必需步骤,然后使用升级地理数据库地理处理工具或 Python 脚本升级地理数据库。

在升级之前

在对任何企业级系统(包括地理数据库)执行升级之前,必须事先进行规划。 在开发或测试服务器上测试新版本,以确保其能够与所有客户端应用程序配合使用。

当您确定新系统可如预期运行时,即可安排升级;请确保有必要员工可以执行升级,并且他们具有完成分配的任务所需的权限。

注意以下事项:

  • 不支持对软件的测试版本或预发行版本进行升级。
  • 如果要升级到的 ArcGIS 版本支持您的数据库版本,则可以直接从 10.7.x、10.8.x、10.9.x 或 11.x 版本的地理数据库进行升级。

    如果 IBM Db2 数据库版本对于当前地理数据库版本而言不支持,则您可能必须多次升级数据库和地理数据库,才能将地理数据库升级到当前版本。 地理数据库升级间隔越长,要达到最新地理数据库版本所需的升级次数越多。

    对于地理数据库的各个中间升级步骤,请按照该地理数据库版本的升级说明操作,并在版本更改后测试地理数据库。 同样,遵循数据库供应商提供的每个数据库版本升级说明,并在版本更改后测试数据库。

  • 不提供将地理数据库降级到先前版本的正式机制。 升级到较新版本后,如果要降级地理数据库,则可以从包含较旧地理数据库版本的备份文件中恢复数据库。

以下是升级地理数据库之前需要完成的步骤清单:

  1. 请确保您要使用的 Db2 和 ArcGIS 版本组合受支持。 有关信息,请参阅针对 ArcGIS 的 IBM Db2 数据库要求

    升级地理数据库之前,必须采用支持的数据库版本且硬件必须符合最低系统要求。

  2. 请参阅客户端与地理数据库兼容性以了解混用 ArcGIS 客户端版本的影响,并确定是否必须单独升级特定的数据集类型。
  3. 确认地理数据库可以升级。 为此,需要在一台计算机上安装要升级至的 ArcGIS 客户端版本。 如果安装 ArcGIS Desktop,可连接至地理数据库并打开数据库属性对话框确定该地理数据库是否可以升级。 如果安装 ArcGIS Server(企业版)或 ArcGIS Engine Geodatabase Update 扩展模块,可使用 ArcPy Describe 函数来确定该地理数据库是否可以升级。 以下示例将创建到地理数据库的连接并检查该地理数据库是否可以升级:
    # Open Python.
    cd /arcgis/server/tools
    ./python
    
    # Import ArcPy.
    import arcpy
    
    # Create a connection to the geodatabase.
    arcpy.CreateDatabaseConnection_management("/tmp/",
                                              "egdb_connection.sde",
                                              "DB2",
                                              "mydbgdb",
                                              "DATABASE_AUTH",
                                              "sde",
                                              "mysdepassword",
                                              "SAVE_USERNAME",
                                              "myconnection")
    
    # Check the geodatabase release.
    isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease
    
    print(isCurrent)

    如果返回 false,则可升级地理数据库。 如果返回 true,则无需升级地理数据库。 请勿继续执行后续步骤。

  4. 创建数据库的备份。
  5. sde 用户必须运行 MON_GET_CONNECTION 函数才能从 PROCESS_INFORMATION 系统表中移除不需要的连接。 因此,将 MON_GET_CONNECTION 函数的 EXECUTE 权限授予 sde 用户。

    GRANT EXECUTE 
     ON MON_GET_CONNECTION 
     TO SDE;

  6. 如果数据库管理员已撤消对 SYSIBM.SYSDUMMY1 目录视图的 SELECT 权限,则管理员必须将该权限授予连接到 Db2 中的地理数据库的所有用户。

    此权限对于数据库的 SQL 查询是必需的。

    如果用户没有对该目录视图的 SELECT 权限,则当其试图连接时会看见以下类似错误:

    SQL0551N  "SASHA" does not have the privilege to perform operation "SELECT" on object "SYSIBM.SYSDUMMY1".  SQLSTATE=42501

    要向 PUBLIC 授予对该视图的 SELECT 权限,请在数据库中以具有 DBADM 权限的用户身份登录时发出以下命令:

    GRANT SELECT 
     ON SYSIBM.SYSDUMMY1 
     TO PUBLIC;
  7. 在数据库中授予 sde 用户 DBADM 权限。

    要升级地理数据库,此操作为必需项,并且可以在升级之后进行撤消。

  8. 移除任何已添加到 ArcGIS 外部的地理数据库系统表中的自定义功能,例如触发器或其他索引。

    升级程序无法兼容对系统表的自定义修改。 如果类似的自定义修改禁止更改系统表方案,升级将失败。

  9. 此时,考虑创建数据库的第二个备份,以保留在之前步骤中所做的更改。
  10. 在能够连接到地理数据库的计算机上安装当前版本的 ArcGIS 客户端(ArcGIS AllSource Desktop StandardDesktop Advanced,或者 ArcGIS Server(企业版))以执行升级。
  11. 确保没有与正在升级的地理数据库的连接。

    查看当前连接到地理数据库的用户列表,请转至 ArcGIS AllSource 中的地理数据库管理对话框。

您现在可以升级地理数据库。

升级地理数据

可以使用 ArcGIS AllSource 中的升级地理数据库工具或使用在 ArcGIS AllSourceArcGIS Server 计算机上运行的 Python 脚本升级地理数据库。

注:

如果地理数据库包含分支版本化数据,则可能需要附加升级后步骤。 有关说明,请参阅升级地理数据库的工作原理

使用升级地理数据库工具

可通过以下任一方式打开升级地理数据库地理处理工具:

  • 数据管理工具箱中的地理数据库管理工具集
  • ArcGIS AllSource数据库属性对话框内常规选项卡上的运行升级按钮

如果打开了数据库属性中的工具,则将使用地理数据库连接信息预填充输入地理数据库文本框。

Esri 建议选中先行检查升级地理数据库选项。 这样,在继续地理数据库升级之前,该工具将确认是否满足升级的先决条件。

先行检查将检测到地理数据库的其他活动连接、确定连接用户是否具有升级地理数据库所需的足够权限、确保数据库可支持 XML 列、确保所有数据集均可打开,以及确认数据库与库的版本相同。 如果未满足任意先决条件,则工具将终止。 再次运行升级过程之前,必须修正所有问题。

此检查的结果在地理处理工具对话框中报告。 如果检查失败,则其结果还将写入 c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product> 文件夹的 GDBUpgrade.log 文件中。

如果通过了所有检查,该工具将继续进行升级。 先行检查和升级的状态将在地理处理工具进度对话框中显示。 如果升级失败,则信息将写入 GDBUpgrade.log 文件。 其他信息将写入用户 TEMP 目录的 sde_setup.log 文件中。 如果用户未配置临时目录,则将使用系统 TEMP 目录。

运行脚本

要使用 Python 脚本升级地理数据库,请复制以下示例脚本之一,将其粘贴到文本编辑器中,对其进行修改以使用您的站点的特定信息,保存并关闭该文件,然后运行文件。

提示:

有关从 ArcGIS Server 计算机运行 Python 的信息,请参阅 ArcGIS ServerArcPy

这些示例假定您有一个以 sde 用户身份连接的现有数据库连接文件 (.sde)。 如果您没有连接文件,请在升级之前创建一个

# Name: upgradesdegdb_example.py
# Description: Uses existing database connection file
# on a Windows computer to run prerequisite check
# 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: Uses existing database connection file
# on a Linux computer to run prerequisite check
# 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")