创建 Db2 Data Gate 实例
在 IBM Cloud Pak for Data 4.7 版本支持结束之前,升级到 IBM Software Hub 5.1 版本。 更多信息,请参阅 IBM Software Hub 版本 5.1 文档中的升级 IBM Software Hub。
Db2 Data Gate 实例是描述服务器处理资源,数据库和数据库表的集合的概要文件。 要使表中的数据可供连接目标应用程序访问,必须首先创建 Db2 Data Gate 实例。
准备工作
- 创建 IBM® Db2 或 IBM Db2 Warehouse 实例
- 必须存在 IBM Db2 或 IBM Db2 Warehouse 数据库,因为您必须将目标数据库与 Db2 Data Gate 实例相关联。
- 配置网络访问
- 如果您(或您的网络管理员)尚未配置 Db2 for z/OS® 和 Db2 Data
Gate 实例之间的网络访问,请按照 Db2 Data Gate 和 IBM Z 之间的网络访问配置中指定的流程操作。
- 对于 IBM Z®上的配置,请记录此 Db2 Data
Gate 实例的主机名和端口号。 您还需要此实例的 IP 地址,该地址可使用
ping命令确定。 - 如果在创建此 Db2 Data
Gate 实例时指定了非缺省端口 443 的端口,请配置 iptables 规则以将访问从指定端口重定向到 OpenShift® 路径中使用的端口:
- 使用 ssh 登录到 Cloud Pak for Data 机器。
- 如果尚未对此 IBM Cloud Pak for Data 系统上的任何其他 Db2 Data
Gate 实例运行此命令,请发出以下命令:
iptables -t nat -A POSTROUTING -j MASQUERADE - 通过发出以下命令来配置此 Db2 Data
Gate 实例的 iptables 规则,其中 PortNum 是创建实例时指定的端口:
iptables -t nat -A PREROUTING -p tcp --dport PortNum -j REDIRECT --to-port 443
注: 请考虑使 iptables 配置具有持久性,因为如果 OpenShift 环境重新引导,那么可以重置该配置。 下列命令(使用 SSH 发出)显示一种以持久方式配置 iptable 的方法:yum install iptables-services chkconfig iptables on iptables -t nat -A PREROUTING -p tcp --dport PortNum -j REDIRECT --to-port 443 service iptables save
- 对于 IBM Z®上的配置,请记录此 Db2 Data
Gate 实例的主机名和端口号。 您还需要此实例的 IP 地址,该地址可使用
过程
目标数据库:
计算资源:
名称空间:
存储器:
路径:
在标题 源数据库下的部分中,指定应该用作 Db2 Data Gate 实例的数据源的 Db2 子系统或数据共享组的详细信息。
在下一部分中,输入与日志阅读器相关的信息。 日志阅读器通过网络访问已连接的源数据库 (Db2 子系统或数据共享组) 的日志。
现在,您有权访问已连接的 Db2 子系统或数据共享组中的表。 下一步是选择 Db2 Data Gate的部分或全部这些表。 然后,所选表的副本将放置在 Db2 Data Gate 服务器上,并可用于连接应用程序。
- 通常,目标数据库中的表是 Unicode 表。 即,如果选择不同格式的 Db2 for z/OS 表,那么要在目标数据库中创建的表将转换为 Unicode。 在转换期间,将考虑列宽方面的不同要求。 在许多情况下,转换后的 (Unicode) 表需要比 EBCDIC 编码的表更宽的列,以避免值被截断。 Unicode 列的列长度是根据以下公式计算的:
MIN(max. column width, MAX(column width + fixed buffer, column width * buffer factor))假设在 EBCDIC 表中有 VARCHAR 列。 在转换为 Unicode 期间,按如下所示确定列宽:
- 确定 Unicode VARCHAR 列的最大长度。
- 计算以下两个值中的较大者:
- EBCDIC 列的长度加上 10 个字节的缓冲区。
- EBCDIC 列的长度乘以缓冲区因子。 但是,此缓冲区因子仅应用于宽度大于 10 个字符的列。
- 最后,将 Unicode VARCHAR 列的最大长度与先前计算的最大长度进行比较,并将这两个值中较小的值用作 Unicode 列长度。 转换后产生的长度可以明显大于原来的长度。
但是,如果在步骤 10中选择了 将此 Db2 Data Gate 实例用于查询路由 ,那么不会转换表。 在这种情况下,将保留 Db2 for z/OS 表的原始编码。 例如,如果原始 Db2 for z/OS 表的列以 EBCDIC 编码,那么目标 Db2 Warehouse 数据库中相应表的列也将以 EBCDIC 编码。
- 这些表必须具有唯一约束(主键或主索引)。 如果在表中不存在或无法确定这样的键,您必须重新定义该表,并指定一个这样的键。 您为该键选择的列必须包含唯一的值,或者在组合后形成这样的值。
- 如果通过运行 LOAD 实用程序来更新 Db2 for z/OS 表,那么必须为 LOAD 实用程序设置以下关键字:
SHRLEVEL CHANGELOG YES
- 在 Db2 for z/OS中应用 ALTER TABLE 或 ALTER TABLESPACE 语句之后,可能必须从 Db2 Data Gate 重新装入或甚至除去表。
- Db2 Data
Gate 副本的 Db2 源表具有名为 DATA CAPTURE 的属性。 属性可以包含值 Y 或 N (缺省值) ,对于 yes 或 no。 对表启用同步时,该表的 DATA CAPTURE 属性将设置为值 Y。 设置后,此属性值将持续存在,即使稍后禁用表也是如此。 请记住这一点,尤其是在您运行使用 DATA CAPTURE 属性的应用程序时。
DATA CAPTURE 属性由 ALTER TABLE 语句设置,该语句作为 SYSPROC.ACCEL_SET_TABLES_REPLICATION 存储过程的一部分来运行。 但是,仅当运行该存储过程的用户的标识具有 ALTER TABLE 权限时,才能成功设置该属性。 如果情况并非如此,那么数据库管理员必须设置所有表的属性 Db2 for z/OS。
结果
- Db2 注册表变量已更新:
Db2 Db2 Warehouse DB2_WORKLOAD=ANALYTICS_ACCELERATORDB2_SELECTIVITY=ALLDB2_APPENDERS_PER_PAGE=1DB2LOCK_TO_RB=STATEMENT
DB2_WORKLOAD=ANALYTICS_ACCELERATORDB2CODEPAGE=1208DB2_RUNTIME_DEBUG_FLAGS=SECTION_LEVEL_LOBDB2_SECTION_SCRATCH_BUFFER_SIZE=512KDB2LOCK_TO_RB=STATEMENTDB2_SELECTIVITY=ALL,AJSELDB2COMPOPT=CDE_NEQN_ENABLEDB2_ATM_CMD_LINE_ARGS="-include-manual-tables -low-priority-update-systables"DB2_OBJECT_TABLE_ENTRIES=65532DB2_EXT_TABLE_SETTINGS=COMM_BUFFER_SIZE:1113840DB2_CDE_DICTIONARY_CACHE_CLEANUP_SCAN_LIST_INTERVAL=30DB2_CDE_DICTIONARY_CACHE_CLEANUP_INTERVAL=60DB2_APPENDERS_PER_PAGE=1DB2_EXTENDED_OPTIMIZATION="COL_RTABLE_UD_THR 0,XGBPART ON FULL NONHDIR,ENABLE_OLAP2AGG ON,NI2NE_WITH_NULLS OUTER"DB2_REDUCED_OPTIMIZATION=DB2_CDE_DATA_SETTINGS=VECTORIZED_INSERT:YESDB2_WLM_SETTINGS=DB2_CDE_AUTO_REORG_RECOMPRESS=DB2_CDE_COMPRESSION_SETTINGS="ENABLE_VECT_ADC:YES"DB2_CDE_DCC=noDB2_STATISTICS="USCC:0;DISCOVER:ON;CGS_SAMPLE_RATE_ADJUST:0"DB2_TCG_DEFAULT_OPTIONS="set percentile_cont_spill on"DB2_CORRELATED_PREDICATES="CGS_CARD_BOUND ON"DB2_SQB_EXTENTMOVEMENT_BUFFER_SIZE=16384
- 对于 Db2 Warehouse,将设置或更改以下数据库管理器配置参数:
DIAGSIZE 500START_STOP_TIME 5MAX_QUERYDEGREE 6
- 对于目标数据库,配置更改为如下所示:
LOGARCHMETH1设置为OFF。 这将禁用 Db2 或 Db2 Warehouse 实例的归档日志记录,以便数据库以循环日志记录方式运行。 这可以提高同步性能,但在某些情况下,您可能必须重新启用归档日志记录。 考虑:- 您的目标数据库还包含不受 Db2 Data
Gate管理的表。 只能使用备份和归档日志来恢复这些日志。
相反,可以通过简单地重新装入 Db2 Data Gate 表来从 Db2 for z/OS 中恢复这些表。
- 其他复制工具可以使用目标数据库作为源,并将更改复制到新目标 (如复制链中)。 此类工具要求启用归档日志记录。
提示: 要避免在升级后 Db2 目标数据库处于 BACKUP PENDING 状态,请在升级前完成以下步骤:- 确定目标数据库实例的
Db2ucluster CR名称并对其进行编辑。 为此,请在以下样本命令中将${PROJECT_CPD_INST_OPERANDS}替换为项目名称。 然后运行该命令。oc get db2ucluster -n ${PROJECT_CPD_INST_OPERANDS} DB2UCLUSTER_ID=<db2ucluster_cr_name> oc edit db2ucluster ${DB2UCLUSTER_ID} -n ${PROJECT_CPD_INST_OPERANDS} - 数据库配置 (YAML 文件) 现在处于编辑方式。 数据库配置参数将添加到
spec.environment.databases.dbConfig下。 浏览到此部分并添加或更改LOGARCHMETH1值,如以下示例中所示:spec: environment: databases: name: BLUDB dbConfig: LOGARCHMETH1: "OFF" - 保存并退出 YAML 文件。 然后退出容器。
- 您的目标数据库还包含不受 Db2 Data
Gate管理的表。 只能使用备份和归档日志来恢复这些日志。
- 其他更改特定于您使用的目标数据库的类型:
Db2 Db2 Warehouse PAGE_AGE_TRGT_MCR 1
MAXLOCKS 10PCKCACHESZ 65536LOGARCHMETH2 OFFSECTION_ACTUALS NONEAUTO_MAINT ONAUTO_TBL_MAINT ONAUTO_REORG ONAUTO_STMT_STATS ONAUTO_RUNSTATS ONEXTBL_LOCATION /AUTO_SAMPLING ONMON_LOCKTIMEOUT HIST_AND_VALUESMON_LOCKWAIT NONEAUTO_CG_STATS ONAUTO_DEL_REC_OBJ ONNUM_DB_BACKUPS 16REC_HIS_RETENTN 91TRACKMOD YESMON_LCK_MSG_LVL 3WLM_AGENT_LOAD_TRGT 24
- 该数据库实例会重新启动,以使更改生效。
- 以下 SQL 语句会安装一个内存表函数:
CALL SYSINSTALLOBJECTS('ANACC','C','','') - 添加以下标记文件:
/mnt/blumeta0/home/db2inst1/dg_config_done.XXX其中,
XXX是目标数据库的实例标识。
打开主菜单。
菜单图标。 单击该图标以显示选项,然后选择