Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » 使用 MobiLink 服务器技术 » MobiLink 统一数据库

 

IBM DB2 主机统一数据库

将 DB2 主机设置为统一数据库

要设置 DB2 主机用作 MobiLink 统一数据库,必须运行设置过程,此过程将添加 MobiLink 同步所需的 MobiLink 系统表、存储过程、触发器和视图。可以使用 SQL 或 JCL 方法执行此任务。

注意

运行安装脚本的数据库用户是具有更改 MobiLink 系统表权限的唯一用户,这是配置 MobiLink 应用程序所必需的。请参见所需权限

MobiLink 服务器用于连接统一数据库的 RDBMS 用户必须能够使用 MobiLink 系统表、过程等,但不能使用任何限定符(例如,SELECT * from ml_user)。请参见MobiLink 服务器系统表

♦  设置 DB2 主机环境的通用步骤
  1. 为 MobiLink 模式创建缓冲池,其页面大小不小于 8K 且具有行级锁定功能。需要行级锁定来处理相同表的并发同步。对于本示例,将缓冲池命名为 BP8K

  2. 为 MobiLink 模式创建一个名为 MLTB8K 的表空间,其缓冲池的页面大小为 8 KB。例如:

    create tablespace MLTB8K in IANY bufferpool BP8K locksize row 
    grant use of tablespace IANY.MLTB8K to public
    
  3. 如果还没有表空间,可为 MobiLink 模式过程创建 "负载管理器" 环境,其名称类似于 MLWLM

  4. 使用随附于 DB2 数据库的 ODBC 驱动程序为 DB2 主机统一数据库设置 ODBC DSN。请参见:

♦  使用 SQL 创建 MobiLink 系统表
注意

SQL 方法需要有使用 DSNTPSMP 创建存储过程的能力。如果您尚未启用 SQL 存储过程,则使用 JCL 方法。

  1. 使用在将 DB2 主机设置为统一数据库中列举的通用步骤设置 DB2 主机环境。

  2. 修改 syncd2m.sql 安装脚本,它位于 install-dir\MobiLink\setup 中。

    注意

    确保继续操作之前保存了原始 syncd2m.sql 文件的备份副本。

    syncd2m.sql 文件中,

    • 使用表空间名 MLTB8K 替换 {MLTABLESPACE} 的所有实例。

    • 使用 [负载管理器] MLWLM 替换 {WLMENV}。

  3. 使用以下命令行运行 syncd2m.sql 安装脚本:

    dbisql -c "uid=user-id;pwd=password;DSN=dsn-name" -nogui syncd2m.sql

    将生成消息日志文件 syncd2m.txt

  4. 打开 syncd2m.txt 以验证 DSNTPSMP 调用成功。

♦  使用 JCL 创建 MobiLink 系统表
  1. 使用在将 DB2 主机设置为统一数据库中列举的通用步骤设置 DB2 主机环境。

  2. 修改 syncd2m_jcl.sql 安装脚本,它位于 install-dir\MobiLink\setup 中。

    注意

    确保在继续操作之前保存了原始 syncd2m_jcl.sql 文件的备份副本。

    syncd2m_jcl.sql 文件中,

    • 将所有出现的 {MLTABLESPACE} 替换为您限定的表空间,例如 MYDB.MYTS。

    • 将所有出现的 {WLMENV} 替换为与 DB2 实例相关联的 "负载管理器" 的名称。

  3. 启动 DBISQL 并将它连接到 DB2 主机。

  4. 要在 DB2 主机中创建 Mobilink 表并定义 Mobilink 过程,可运行 syncd2m_jcl.sql 安装脚本经过编辑的副本,它位于 install-dir\MobiLink\setup 中。

  5. %SQLANY%\MobiLink\setup 目录中,通过 FTP 连接到主机并运行以下命令:

    bin
        hash
        cd xmit
        quote site recfm=fb lrecl=80
        quote site cyl
        put d2mload.xmit
        put d2mdbrm.xmit
        quit
  6. 主机上的两个 xmit 文件如下所示:

    • USERID.XMIT.D2MLOAD.XMIT

    • USERID.XMIT.D2MDBRM.XMIT

    USERID 是在通过 FTP 进行连接时您所给出的用户名。

  7. 打开终端会话,然后从 "ISPF 命令 Shell" 运行以下命令:

    RECEIVE INDATASET('USERID.XMIT.D2MLOAD.XMIT')
        RECEIVE INDATASET('USERID.XMIT.D2MDBRM.XMIT')

    输出如下:

    • USERID.ML.LOADLIB

    • USERID.ML.DBRMLIB

  8. 复制 d2mrelod.jcl 文件并按以下方式进行修改:

    • 将 USERID 更改为主机用户 ID。

    • 将 DSNDB0T 更改为您的 DB2 DSN。

  9. 运行 d2mrelod.jcl 脚本经过编辑的副本,它位于 install-dir\MobiLink\setup 中。

  10. 复制 d2mbdpk.jcl 文件并按以下方式进行修改:

    • 将 USERID 更改为主机用户 ID。

    • 将 DB0T 更改为您的 DB2 SSID。

  11. 通过运行 d2mbdpk.jcl 经过编辑的副本将所有 SQL 过程绑定在一起。以下是 SQL 过程到装载模块名称的映射参考。

    过程名称 装载模块名称

    ml_add_user

    mlaub

    ml_delete_user

    mldub

    ml_del_sstate

    mldssb

    ml_reset_sstate

    mlrssb

    ml_del_sstate_b4

    mldssbb

    ml_add_lcs_chk

    mlalcscb

    ml_add_lcs

    mlalcsb

    ml_add_cs

    mlacsb

    ml_add_jcs

    mlajcsb

    ml_add_dcs

    mladcsb

    ml_add_lts_chk

    mlaltscb

    ml_add_lts

    mlaltsb

    ml_add_ts

    mlatsb

    ml_add_jts

    mlajtsb

    ml_add_dts

    mladtsb

    ml_add_property

    mlapb

    ml_add_column

    mlacb

    ml_set_device

    mlsdb

    ml_set_device_nt

    mlsdnb

    ml_set_dev_addr

    mlsdab

    ml_set_dev_addr_int

    mlsdanb

    ml_set_listening

    mlslb

    ml_set_listen_nt

    mlslnb

    ml_set_sis_sstate

    mlssssb

    ml_del_dev_addr

    mlddab

    ml_del_listen

    mldlb

    ml_delete_device

    mlddb

DB2 主机已知问题
  • DB2 主机不能以 [模型] 模式工作   使用 [创建同步模型向导] 时,不能使用 DB2 主机作为统一数据库。

  • SELECT 语句需要 FOR READ ONLY 子句   缺省情况下 DB2 主机中的 SELECT 语句会对更新开放,这意味着数据库预期在 SELECT 语句之后为 UPDATE 语句而获取写锁定。

    为避免该写锁定并增强并发,将 FOR READ ONLY 附加到不在 UPDATE 语句之前的所有 SELECT 语句上。尽可能使用 SELECT 语句中的 FOR READ ONLY,特别是在 download_cursor 和 download_delete_cursor 脚本中。

  • Sysplex 需要时间同步   在 Sysplex 中运行 DB2 主机统一数据库时,Sysplex 中的所有 LPAR 的时钟必须同步。时钟不同步会导致数据库同步过程中数据丢失。

  • 数字近似   近似数字拥有不同的可能值。以下是一个示例表。

    类型 输入值 DB2 主机值 ASA 值

    Real

    123.456

    123.4559936523

    123.4560012817

    Float

    123.456

    123.45599999999999

    123.4560012817

    Double

    123.456

    123.45599999999999

    123.456

    推荐方法是避免双精度和浮点列与 DB2 主机统一数据库同步。

隔离级别

请参见MobiLink 隔离级别