ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

在 z/OS 的 Db2 中创建地理数据库

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

  • 配置客户端
  • 配置 ZPARM
  • 创建 sde 用户和组
  • 创建数据库
  • 授予权限
  • 自定义 dbtune.sde
  • 创建地理数据库

要在 z 操作系统 (z/OS) 的 IBM Db2 中创建地理数据库,您需要执行以下操作:

  • 安装并配置 ArcGIS 和 Db2 客户端。
  • 在 Db2 上配置 ZPARM。
  • 在 z/OS 上创建 sde 用户和组。
  • 创建至少两个数据库。
  • 向 sde 用户和组授予权限。
  • 自定义 dbtune.sde 文件以指定系统表存储。
  • 创建地理数据库并使用 ArcGIS Server 密钥代码文件对其进行授权。

配置客户端

您必须安装 ArcGIS 客户端才能获得 Db2 数据库设置所必需的文件,并运行工具或脚本以创建地理数据库。

可以从 ArcGIS Desktop (Desktop Standard 或 Desktop Advanced)、ArcGIS Engine Geodatabase Update、或 ArcGIS Server(企业版)中运行 Python 脚本,来创建地理数据库。如果您想要运行启用企业级地理数据库地理处理工具,而并非脚本,则使用 ArcGIS Desktop。

注:

您需要一个 ArcGIS Server(企业版)密钥代码文件,以便在下一部分中授权地理数据库。即使不在 ArcGIS Server 计算机上运行 Python 脚本来创建地理数据库,也必须安装和授权 ArcGIS Server 才能获取密钥代码文件。可能需要将 ArcGIS Server 计算机中的文件复制到可使用地理处理工具或 Python 脚本访问的位置。

  1. 安装要用于创建地理数据库的 ArcGIS 客户端。

    遵循软件安装指南中提供的说明。

  2. 在大多数情况下,ArcGIS 客户端将在与 Db2 服务器不同的计算机上安装;因此,请在 ArcGIS 客户端计算机上安装和配置 Db2 客户端。

    可从 My Esri 下载 IBM Data Server Runtime Client for Db2,或使用自己的 Db2 客户端安装程序。有关安装的说明,请参阅 Db2 文档。如果要在 64 位操作系统上安装 Db2 客户端,请运行 64 位可执行文件;该文件将同时安装 32 位和 64 位文件,以供从 32 位和 64 位 ArcGIS 客户端进行连接。

  3. 可使用非 DSN 连接字符串从 ArcGIS 连接至 Db2 数据库。但是,如果要使用数据源名称进行连接,则必须将数据库编入目录,从而配置数据源名称。有关创建数据源名称的说明,请参阅 IBM Db2 文档。

接下来,配置 Db2 系统。

配置 ZPARM

要启用 ArcGIS 以将其作为 z/OS 上 IBM Db2 的分布式客户端运行,必须启动分布式数据工具 (DDF)。 强烈建议使用以下 DB2 ZPARM 值来优化 ArcGIS 和其他客户端的地理数据库性能:

  1. 在 z/OS 上以管理员身份登录 Db2。
  2. 在 DSNTIJUZ 的 DSN6FAC 部分中设置以下值:

    • CMTSTAT=INACTIVE
    • IDTHTOIN=3600
    • TCPKPALV=120

  3. 在 DSNTIJUZ 的 DSN6SYSP 部分中设置以下参数:

    • CONDBAT=10000
    • EXTSEC=YES
    • IMPDSDEF=YES
    • IXQTY=0
    • MAXDBAT=1000
    • TSQTY=0
    • XMLVALA=204800
    • XMLVALS=10240

  4. 您还需要在 DSNTIJUZ 的 DSN6SPRM 部分的 WLMENV 中设置正确的默认 WLM 环境。 如下所示:

    • CACHEDYN=YES
    • EDMDBDC=102400
    • EDMPOOL=32000
    • EDMSTMTC=102400
    • EDM_SKELETON_POOL=102400

    注:

    请确保 EDM 缓冲区足够大以允许将 EDMDBDC 设置为 102400。

  5. 更改上述 ZPARM 值后,您还需要确保作业步骤 DSNTIZL 中的 SYSLMOD 指向正确的数据集名称,以便 Db2 在启动时加载正确的 ZPARM 模块。
  6. 使用 SET SYSPARM 命令停止并启动 Db2 以在线反映这些更改。

创建 sde 用户和组

在可以访问分时选择程序 (TSO) 的 z/OS 上的 RACF 中创建一级授权 ID(默认为 sde)。 有关通过 RACF 创建用户的信息,请参阅 z/OS 管理手册。

IBM 建议使用二级授权 ID(z/OS 上 RACF 中的用户组)以简化用户授权管理。 您需要在 z/OS 上启用二级授权 ID。 有关启用二级授权的信息,请参阅 z/OS 手册。

只有负责管理 GIS 数据和地理数据库的用户才应以 sde 用户身份登录。 其他 ArcGIS 用户应使用除 sde 以外的帐户进行连接。

  1. 使用 RACF 在系统中创建名为 sde 的独立用户帐户。
  2. 使用 RACF 在 z/OS 上创建用户组,例如 GISUSERS。 要完成此操作,在 VM14 上将组名称提交到 EC。
  3. 使用 RACF 将 sde 用户添加到 GISUSERS 组。

要以 sde 用户身份从已安装 ArcGIS 客户端的 Windows 客户端计算机连接到地理数据库,在客户端计算机上必须存在名称与为服务器连接指定的名称 (sde) 相同的本地 Windows 用户。 此用户不需要任何特殊权限。 要创建本地 Windows 用户,请参阅 Microsoft Windows 文档。

创建数据库

空间上启用的数据库子系统中必须至少有两个 Db2 数据库来存储地理数据库:一个用于存储地理数据库资料档案库,另一个用于存储用户数据。 包含地理数据库资料档案库的数据库与包含用户数据的一个或多个数据库一起组成一个地理数据库。 因此,必须先创建这些数据库,然后才能创建地理数据库。

附带的 JCL 脚本 ESRIUDFI 用于为创建地理数据库创建数据库和 UDF。 该脚本安装在 ArcGIS 客户端安装目录的 DatabaseSupport\DB2zOS 文件夹中。 必须使用特定于您的实现的信息自定义 ESRIUDFI 脚本,然后在 z/OS 中上传并运行该脚本。 脚本自身包含用于创建两个数据库的说明。

要自定义 ESRIUDFI,请参阅 JCL 脚本中的说明并仔细检查以下内容:

  1. 在 ESRIUDFI 的正文中,有几个字符串需要替换为对应的用户环境参数。 在 ESRIUDFI 脚本顶部介绍了每个字符串含义的详细信息及其替换方法。
  2. JCL 脚本的步骤 ESRIS1 用于创建两个数据库和设置排序规则。 要使用这几行,必须取消它们的注释并为数据库提供名称和排序规则。 此操作的示例如下:
    CREATE DATABASE SDEDBR00 CCSID UNICODE;
    CREATE DATABASE SDEDBU00 CCSID UNICODE;
    

    注:

    存储地理数据库的数据库的名称不能包含特殊字符。

  3. 或者,也可创建存储组以便更高效地管理地理数据库数据。 因为需要先创建存储组,所以必须将一个附加行添加到 ESRIUDFI 脚本(如下例所示):
    CREATE STOGROUP GEODATA VOLUMES (VOL1, VOL2, …) VCAT SDECAT;
    CREATE DATABASE SDEDBR00 CCSID UNICODE STOGROUP ARCGIS;
    CREATE DATABASE SDEDBU00 CCSID UNICODE STOGROUP ARCGIS;
    

    注:

    如果使用存储组,则需要授予附加的用户权限。 有关详细信息,请参阅下一部分。

  4. 完成 ESRIUDFI 脚本的自定义后,需要在目标计算机上将其提交。

    完成 ESRI UDF 安装作业后,您会注意到,在最后一步的执行过程中 SDE.SDE_UPDT_LMOD 步骤的包绑定和创建都是成功的,但出现警告。 这些警告表示尚未在数据库中创建地理数据库系统表。 可以忽略这些警告,因为在运行启用企业级地理数据库工具时将创建这些表,而包对象在被该工具引用时也会自动完成绑定。

  5. 从空间上启用数据库子系统。 有关说明,请参阅 Db2 z/OS 文档。

授予权限

创建数据库和 UDF 之后,必须向 sde 用户和 ArcGIS 用户组授予权限和数据库权限。

  1. 以包含 SYSADM 角色的帐户身份登录 Db2,从而向创建的 ArcGIS 用户组以及 sde 用户授予必要的权限。 在这些示例 GRANT 语句中,该组名为 GISUSERS。
    GRANT SELECT ON SYSIBM.SYSTABAUTH TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSDBAUTH TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSROUTINES TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSTABCONST TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSINDEXES TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSKEYS TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSCOLUMNS TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSCHECKS TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSSCHEMAAUTH TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSTABLES TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSSEQUENCES TO GISUSERS;
    GRANT SELECT ON SYSIBM.SYSDUMMY1 TO GISUSERS;
    
  2. 向 sde 用户授予以下附加权限:
    GRANT BINDADD TO SDE;
    GRANT CREATE ON COLLECTION SDE TO SDE;
    GRANT DBADM ON DATABASE <repository_database_name> TO SDE;
    GRANT DBADM ON DATABASE <user_data_database_name> TO SDE;
    
  3. 向 PUBLIC 角色授予以下权限:
    GRANT EXECUTE ON PACKAGE SYSPROC.* TO PUBLIC;
    
  4. 如果使用存储组,则需要以下语句。 在本示例中,存储组名为 ARCGIS。
    GRANT USE OF STOGROUP ARCGIS to SDE;
    

自定义 dbtune.sde

更改 <ArcGIS client installation directory>\DatabaseSupport\DB2zOS 中找到的 dbtune.sde 文件以指向数据库子系统。

dbtune.sde 文件通过用于控制数据库中表的物理存储的配置关键字、参数和值来填充 DBTUNE 地理数据库系统表。 对于 z/OS 上的 Db2 数据库,必须在运行启用企业级地理数据库地理处理工具之前编辑该文件,以指定将在哪个数据库中创建特定表。

  1. 在文本编辑器中打开 dbtune.sde 文件。
  2. 取消注释并更改 DATA_DICTIONARY 关键字下的这些配置字符串值,以指示要在哪个数据库中创建特定的地理数据库系统表。 以下是建议的设置。 名为 SDEDBR00 的数据库是将用于存储地理数据库资料档案库表的数据库。

    B_STORAGE "IN DATABASE SDEDBR00"
    MVTABLES_MODIFIED_TABLE "IN DATABASE SDEDBR00"
    STATES_TABLE "IN DATABASE SDEDBR00"
    STATE_LINEAGES_TABLE "IN DATABASE SDEDBR00"
    VERSIONS_TABLE "IN DATABASE SDEDBR00"
    XML_INDEX_TAGS_TABLE "IN DATABASE SDEDBR00"

  3. 确保 DEFAULTS 关键字下的 BLOB_OPTION 和 CLOB_OPTION 参数设置为空字符串。
  4. 取消注释并更改 DEFAULTS 关键字下的这些配置字符串值,以指示要在哪个数据库中创建与用户定义的数据相关的特定对象。

    以下是建议的设置。 名为 SDEDBU00 的数据库是将用于在数据库子系统内存储用户定义的数据的数据库。

     AUX_STORAGE "IN DATABASE SDEDBU00"
     A_STORAGE "IN DATABASE SDEDBU00"
     BLK_STORAGE "IN DATABASE SDEDBU00"
     BND_STORAGE "IN DATABASE SDEDBU00"
     B_STORAGE "IN DATABASE SDEDBU00"
     D_STORAGE "IN DATABASE SDEDBU00"
     RAS_STORAGE "IN DATABASE SDEDBU00"
    

  5. 取消注释并更改 LOGFILE_DEFAULTS 关键字下的这些配置字符串值,以指示要在哪个数据库中创建日志文件表。

     LD_STORAGE "IN DATABASE SDEDBU00"
     LF_STORAGE "IN DATABASE SDEDBU00"
     SESSION_STORAGE "IN DATABASE SDEDBU00"
    

  6. 保存并关闭 dbtune.sde 文件。

现在,可在 Db2 子系统中创建地理数据库。

创建地理数据库

使用以下方法之一在 z/OS 的 Db2 中创建地理数据库。

注:

您在上一部分中更改的 dbtune.sde 文件必须位于在其中运行地理处理工具或 Python 脚本的计算机的客户端安装目录中。

使用启用企业级地理数据库工具

如果安装和配置了 ArcGIS Desktop 来连接 Db2 子系统,则可以运行启用企业级地理数据库工具。

  1. 启动 ArcMap 或 ArcCatalog。
  2. 在目录树中连接到 Db2。 使用 sde 登录帐户进行连接。

    确保将 sde 用户密码保存在数据库连接对话框中。

  3. 右键单击数据库连接,然后单击启用地理数据库。

    随即将打开启用企业级地理数据库工具。

  4. 将数据库连接文件添加到输入数据库文本框中。
  5. 浏览至授权 ArcGIS Server 时创建的 ArcGIS Server 密钥代码文件,并将其添加到授权文件文本框。

    使用向导来授权 ArcGIS Server 之后,密钥代码文件将被写入安装该软件的计算机。如果在 Linux 计算机上授权 ArcGIS Server,则文件在 /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen 中创建。如果在 Windows 服务器上进行授权,则文件在 Program Files\ESRI\License<release>\sysgen 中创建。将该文件复制到可使用启用企业级地理数据库工具访问的位置。如果尚未执行此操作,则请授权 ArcGIS Server 来创建此文件。

  6. 单击确定以运行工具。

    可在 sde_setup.log 文件中查找创建地理数据库的相关消息,该文件是在为运行工具的计算机上的 %TEMP% 变量指定的目录中创建的。如果在创建地理数据库时出现问题,可查看此文件以解决这些问题。

将在 Db2 子系统中创建地理数据库。

现在,创建可创建数据的用户。

使用 Python 脚本

可在 ArcGIS Desktop(Desktop Standard 或 Desktop Advanced)、ArcGIS Server(企业版)或 ArcGIS Engine(具有 Geodatabase Update 扩展模块)客户端计算机中运行 Python 脚本以在 Db2 子系统中创建地理数据库。

按照这些步骤运行 Python 脚本以在 Db2 z/OS 子系统中创建地理数据库:

  1. 在 ArcGIS 客户端计算机上创建文本文件,然后将以下脚本复制到该文件中。

    """
    Name: enable_enterprise_gdb.py
    Description: Provide connection information to an enterprise database
    and enable enterprise geodatabase.
    Type enable_enterprise_gdb.py -h or enable_enterprise_gdb.py --help for usage
    """
    
    # 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=['SQL_SERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.")
    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 ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
    parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file")
    
    
    # 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
    	database_type = options.Database_type.upper()
    	instance = options.Instance
    	account_authentication = options.account_authentication.upper()
    	username = options.User.lower() 
    	password = options.Password	
    	database = options.Database.lower()
    	license = options.Authorization_file
    
    
    	if( database_type ==""):	
    		print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")
    		parser.print_help()
    		sys.exit(3)		
    		
    	if (license == ""):
    		print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
    		parser.print_help()
    		sys.exit(3)
    
    		
    	# Get the current product license
    	product_license=arcpy.ProductInfo()
    	
    	if (license == ""):
    		print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
    		parser.print_help()
    		sys.exit(3)
    	
    	# Checks required license level
    	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
    		print "\n" + product_license + " license found!" + "  Enabling enterprise geodatabase functionality requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license."
    		sys.exit("Re-authorize ArcGIS before enabling an enterprise geodatabase.")
    	else:
    		print "\n" + product_license + " license available!  Continuing to enable..."
    		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")
    	
    	
    	# Process: Enable geodatabase...
    	try:
    		print "Enabling Enterprise Geodatabase...\n"
    		arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, authorization_file=license)
    		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)
    

  2. 以 .py 扩展名保存该文件。
  3. 运行脚本,同时提供特定于您的站点的选项和信息。

    在以下从 Windows 计算机运行的示例中,文件 enable_gdb.py 针对实例 db2prod 上的数据库 spdata 运行。 使用 sde 登录帐户通过密码 Tgdbst@rtsh3r3 进行连接。 默认 ArcGIS Server 位置中指定的密钥代码文件用于授权地理数据库。

    enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '\\Program Files\ESRI\License\sysgen\keycodes'
    

    这是在 Linux 计算机上运行脚本的示例:

    ./enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes'
    
    提示:

    Type -h or --help at the command prompt to get syntax help.

    可在 sde_setup.log 文件中查找创建地理数据库的相关消息,该文件是在为运行 Python 脚本的计算机上的 TEMP 或 TMP 变量指定的目录中创建的。如果在创建地理数据库时出现任何问题,可查看此文件以解决这些问题。

将在 Db2 子系统中创建地理数据库。

现在,创建可加载数据的用户。

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明