将 IBM Db2 for z/OS 用作 AWS SCT 的源 - AWS Schema Conversion Tool

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 IBM Db2 for z/OS 用作 AWS SCT 的源

您可以使用 AWS SCT 将架构、代码对象和应用程序代码从 IBM Db2 for z/OS 转换到以下目标:

  • Amazon RDS for MySQL

  • Amazon Aurora MySQL 兼容版

  • Amazon RDS for PostgreSQL

  • Amazon Aurora PostgreSQL 兼容版

将 Db2 for z/OS 用作源数据库的先决条件

IBM Db2 for z/OS 版本 12 函数级别 100 数据库版本不支持 IBM Db2 for z/OS 版本 12 的大多数新功能。此数据库版本支持回退到 Db2 版本 11 以及与 Db2 版本 11 的数据共享。为避免转换 Db2 版本 11 中不支持的功能,建议您使用 IBM Db2 for z/OS 数据库函数级别 500 或更高版本作为 AWS SCT 源。

您可以使用以下代码示例检查源 IBM Db2 for z/OS 数据库的版本。

SELECT GETVARIABLE('SYSIBM.VERSION') as version FROM SYSIBM.SYSDUMMY1;

请确保此代码返回版本 DSN12015 或更高版本。

您可以使用以下代码示例检查源 IBM Db2 for z/OS 数据库中 APPLICATION COMPATIBILITY 特殊寄存器的值。

SELECT CURRENT APPLICATION COMPATIBILITY as version FROM SYSIBM.SYSDUMMY1;

请确保此代码返回版本 V12R1M500 或更高版本。

将 Db2 for z/OS 用作源数据库的权限

连接到 Db2 for z/OS 数据库以及读取系统目录和表所需的权限如下:

  • SELECT ON SYSIBM.LOCATIONS

  • SELECT ON SYSIBM.SYSCHECKS

  • SELECT ON SYSIBM.SYSCOLUMNS

  • SELECT ON SYSIBM.SYSDATABASE

  • SELECT ON SYSIBM.SYSDATATYPES

  • SELECT ON SYSIBM.SYSDUMMY1

  • SELECT ON SYSIBM.SYSFOREIGNKEYS

  • SELECT ON SYSIBM.SYSINDEXES

  • SELECT ON SYSIBM.SYSKEYCOLUSE

  • SELECT ON SYSIBM.SYSKEYS

  • SELECT ON SYSIBM.SYSKEYTARGETS

  • SELECT ON SYSIBM.SYSJAROBJECTS

  • SELECT ON SYSIBM.SYSPACKAGE

  • SELECT ON SYSIBM.SYSPARMS

  • SELECT ON SYSIBM.SYSRELS

  • SELECT ON SYSIBM.SYSROUTINES

  • SELECT ON SYSIBM.SYSSEQUENCES

  • SELECT ON SYSIBM.SYSSEQUENCESDEP

  • SELECT ON SYSIBM.SYSSYNONYMS

  • SELECT ON SYSIBM.SYSTABCONST

  • SELECT ON SYSIBM.SYSTABLES

  • SELECT ON SYSIBM.SYSTABLESPACE

  • SELECT ON SYSIBM.SYSTRIGGERS

  • SELECT ON SYSIBM.SYSVARIABLES

  • SELECT ON SYSIBM.SYSVIEWS

要将 Db2 for z/OS 表转换为 PostgreSQL 分区表,请使用 RUNSTATS 实用程序收集数据库中表空间和表的统计信息,如下所示。

LISTDEF YOURLIST INCLUDE TABLESPACES DATABASE YOURDB RUNSTATS TABLESPACE LIST YOURLIST TABLE (ALL) INDEX (ALL KEYCARD) UPDATE ALL REPORT YES SHRLEVEL REFERENCE

在上述示例中,将 YOURDB 占位符替换为源数据库的名称。

连接到作为源的 Db2 for z/OS

使用 AWS SCT 按照以下过程连接到 Db2 for z/OS 源数据库。

连接到 IBM Db2 for z/OS 源数据库
  1. 在 AWS Schema Conversion Tool 中,选择添加源

  2. 选择 Db2 for z/OS,然后选择下一步

    此时显示添加源对话框。

  3. 对于连接名称,输入数据库的名称。AWS SCT 会在左侧面板的树中显示此名称。

  4. 使用来自 AWS Secrets Manager 的数据库凭证或手动输入:

    • 要使用 Secrets Manager 中的数据库凭证,请按照以下说明进行操作:

      1. 对于 AWS 密钥,输入密钥名称。

      2. 选择填充可使用 Secrets Manager 中的数据库凭证自动填写数据库连接对话框中的所有值。

      有关使用 Secrets Manager 中的数据库凭证的信息,请参阅使用 AWS Secrets Manager

    • 要手动输入 IBM Db2 for z/OS 源数据库连接信息,请按照以下说明进行操作:

      参数 操作
      服务器名称

      输入源数据库服务器的域名系统(DNS)名称或 IP 地址。

      服务器端口

      输入用于连接到源数据库服务器的端口。

      位置

      输入要访问的 Db2 位置的唯一名称。

      用户名密码

      输入数据库凭证,以便连接到源数据库服务器。

      仅当您选择连接到项目中的数据库时,AWS SCT 才使用密码连接到源数据库。为了避免泄露源数据库的密码,AWS SCT 不会默认存储该密码。如果您关闭了 AWS SCT 项目并重新打开它,系统会根据需要提示您输入用于连接到源数据库的密码。

      使用 SSL

      如果要使用安全套接字层 (SSL) 连接到数据库,请选择此选项。在 SSL 选项卡上提供以下其他信息(如适用):

      • 信任存储:包含证书的信任存储的位置。要使此位置出现在此处,请务必将其添加到全局设置中。

      存储密码

      AWS SCT 将创建一个安全文件库,用于存储 SSL 证书和数据库密码。启用此选项,可存储数据库密码,且无需输入密码可快速连接到数据库。

      Db2 for z/OS 驱动程序路径

      输入用于连接到源数据库的驱动程序的路径。有关更多信息,请参阅下载所需的数据库驱动程序

      如果您将驱动程序路径存储在全局项目设置中,则驱动程序路径不会显示在连接对话框中。有关更多信息,请参阅在全局设置中存储驱动程序路径

  5. 选择测试连接以验证 AWS SCT 是否可以连接到源数据库。

  6. 选择连接以连接到源数据库。

将 MySQL 用作目标数据库的权限

下面列出了将 MySQL 用作目标所需的权限:

  • CREATE ON *.*

  • ALTER ON *.*

  • DROP ON *.*

  • INDEX ON *.*

  • REFERENCES ON *.*

  • SELECT ON *.*

  • CREATE VIEW ON *.*

  • SHOW VIEW ON *.*

  • TRIGGER ON *.*

  • CREATE ROUTINE ON *.*

  • ALTER ROUTINE ON *.*

  • EXECUTE ON *.*

  • SELECT ON mysql.proc

  • INSERT, UPDATE ON AWS_DB2ZOS_EXT.*

  • INSERT, UPDATE, DELETE ON AWS_DB2ZOS_EXT_DATA.*

  • CREATE TEMPORARY TABLES ON AWS_DB2ZOS_EXT_DATA.*

您可以使用以下代码示例创建数据库用户并授予权限。

CREATE USER 'user_name' IDENTIFIED BY 'your_password'; GRANT CREATE ON *.* TO 'user_name'; GRANT ALTER ON *.* TO 'user_name'; GRANT DROP ON *.* TO 'user_name'; GRANT INDEX ON *.* TO 'user_name'; GRANT REFERENCES ON *.* TO 'user_name'; GRANT SELECT ON *.* TO 'user_name'; GRANT CREATE VIEW ON *.* TO 'user_name'; GRANT SHOW VIEW ON *.* TO 'user_name'; GRANT TRIGGER ON *.* TO 'user_name'; GRANT CREATE ROUTINE ON *.* TO 'user_name'; GRANT ALTER ROUTINE ON *.* TO 'user_name'; GRANT EXECUTE ON *.* TO 'user_name'; GRANT SELECT ON mysql.proc TO 'user_name'; GRANT INSERT, UPDATE ON AWS_DB2ZOS_EXT.* TO 'user_name'; GRANT INSERT, UPDATE, DELETE ON AWS_DB2ZOS_EXT_DATA.* TO 'user_name'; GRANT CREATE TEMPORARY TABLES ON AWS_DB2ZOS_EXT_DATA.* TO 'user_name';

在前面的示例中,将 user_name 替换为用户名。然后,将 your_password 替换为安全密码。

要使用 Amazon RDS for MySQL 作为目标,请将 log_bin_trust_function_creators 参数设置为 true,将 character_set_server 设置为 latin1。要配置这些参数,请创建新的数据库参数组或修改现有数据库参数组。

要使用 Aurora MySQL 作为目标,请将 log_bin_trust_function_creators 参数设置为 true,将 character_set_server 设置为 latin1。此外,还要将 lower_case_table_names 参数设置为 True。要配置这些参数,请创建新的数据库参数组或修改现有数据库参数组。

将 PostgreSQL 用作目标数据库的权限

要使用 PostgreSQL 作为目标,AWS SCT 需要 CREATE ON DATABASE 权限。请确保为每个目标 PostgreSQL 数据库授予此权限。

要使用 Amazon RDS for PostgreSQL 作为目标,AWS SCT 需要 rds_superuser 权限。

要使用转换后的公共同义词,请将数据库的默认搜索路径更改为 "$user", public_synonyms, public

您可以使用以下代码示例创建数据库用户并授予权限。

CREATE ROLE user_name LOGIN PASSWORD 'your_password'; GRANT CREATE ON DATABASE db_name TO user_name; GRANT rds_superuser TO user_name; ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;

在前面的示例中,将 user_name 替换为用户名。然后,将 db_name 替换为目标数据库名称。最后,将 your_password 替换为安全密码。

在 PostgreSQL 中,只有架构所有者或 superuser 才能删除架构。即使架构的所有者并不拥有架构的某些对象,该所有者也可以删除该架构及其包含的所有对象。

使用不同的用户转换不同的架构并将其应用到目标数据库时,若 AWS SCT 无法删除架构,您可能会收到一条错误消息。要避免出现此错误消息,请使用 superuser 角色。

Db2 for z/OS 到 PostgreSQL 的转换设置

要编辑 Db2 for z/OS 到 PostgreSQL 的转换设置,请选择设置,然后选择转换设置。从上面的列表中选择 Db2 for z/OS,然后选择 Db2 for z/OS – PostgreSQLDb2 for z/OS – Amazon Aurora(兼容 PostgreSQL)。AWS SCT 显示 IBM Db2 for z/OS 到 PostgreSQL 转换的所有可用设置。

AWS SCT 中的 Db2 for z/OS 到 PostgreSQL 转换设置包括以下各项的选项:

  • 限制转换后的代码中操作项的注释数量。

    对于在转换后的代码中为所选严重性级别及更高级别的操作项添加注释,请选择操作项的严重性。AWS SCT 会在转换后的代码中为所选严重性级别及更高级别的操作项添加注释。

    例如,要最大限度地减少转换后的代码中的注释数量,请选择仅错误。要在转换后的代码中包含所有操作项的注释,请选择所有消息

  • 为目标数据库中的约束生成唯一名称。

    在 PostgreSQL 中,您使用的所有约束名称都必须是唯一的。通过在约束名称中添加带有表名的前缀,AWS SCT 可以在转换后的代码中为约束生成唯一的名称。要确保 AWS SCT 为约束生成唯一的名称,请选择为约束生成唯一名称

  • 在转换后的代码中保留 DML 语句中列名、表达式和子句的格式。

    AWS SCT 可以保持 DML 语句中列名、表达式和子句的布局与源代码中的位置和顺序相似。为此,请为保留 DML 语句中列名、表达式和子句的格式设置选择

  • 将表分区排除在转换范围之外。

    AWS SCT 可以在转换过程中跳过源表的所有分区。为此,请选择将表分区排除在转换范围之外

  • 按增长分区的表使用自动分区。

    对于数据迁移,AWS SCT 可以自动对所有大于指定大小的表进行分区。要使用此选项,请选择强制对较大的表进行分区,然后输入以千兆字节为单位的表大小。接下来,输入分区的数量。启用此选项时,AWS SCT 会考虑源数据库的直接访问存储设备(DASD)的大小。

    AWS SCT 可以自动确定分区的数量。为此,请选择按比例增加分区数,然后输入最大分区数。

  • 以 refcursor 数据类型值数组的形式返回动态结果集。

    AWS SCT 可以将返回动态结果集的源过程转换为将打开的引用游标数组作为附加输出参数的过程。为此,请选择使用引用游标数组返回所有动态结果集

  • 指定用于将日期和时间值转换为字符串表示形式的标准。

    AWS SCT 可以使用支持的行业格式之一将日期和时间值转换为字符串表示形式。为此,请选择使用日期值的字符串表示形式使用时间值的字符串表示形式。接下来,请选择下列标准之一。

    • 国际标准组织(ISO)标准

    • IBM 欧洲标准(欧洲)

    • IBM 美国标准(美国)

    • 日本工业标准基督教时代(JIS)