要设置 DB2 主机用作 MobiLink 统一数据库,必须运行设置过程,此过程将添加 MobiLink 同步所需的 MobiLink 系统表、存储过程、触发器和视图。可以使用 SQL 或 JCL 方法执行此任务。
运行安装脚本的数据库用户是具有更改 MobiLink 系统表权限的唯一用户,这是配置 MobiLink 应用程序所必需的。请参见所需权限。
MobiLink 服务器用于连接统一数据库的 RDBMS 用户必须能够使用 MobiLink 系统表、过程等,但不能使用任何限定符(例如,SELECT * from ml_user)。请参见MobiLink 服务器系统表。
为 MobiLink 模式创建缓冲池,其页面大小不小于 8K 且具有行级锁定功能。需要行级锁定来处理相同表的并发同步。对于本示例,将缓冲池命名为 BP8K。
为 MobiLink 模式创建一个名为 MLTB8K 的表空间,其缓冲池的页面大小为 8 KB。例如:
create tablespace MLTB8K in IANY bufferpool BP8K locksize row grant use of tablespace IANY.MLTB8K to public |
如果还没有表空间,可为 MobiLink 模式过程创建 "负载管理器" 环境,其名称类似于 MLWLM。
使用随附于 DB2 数据库的 ODBC 驱动程序为 DB2 主机统一数据库设置 ODBC DSN。请参见:
SQL 方法需要有使用 DSNTPSMP 创建存储过程的能力。如果您尚未启用 SQL 存储过程,则使用 JCL 方法。
使用在将 DB2 主机设置为统一数据库中列举的通用步骤设置 DB2 主机环境。
修改 syncd2m.sql 安装脚本,它位于 install-dir\MobiLink\setup 中。
确保继续操作之前保存了原始 syncd2m.sql 文件的备份副本。
在 syncd2m.sql 文件中,
使用表空间名 MLTB8K 替换 {MLTABLESPACE} 的所有实例。
使用 [负载管理器] MLWLM 替换 {WLMENV}。
使用以下命令行运行 syncd2m.sql 安装脚本:
dbisql -c "uid=user-id;pwd=password;DSN=dsn-name" -nogui syncd2m.sql |
将生成消息日志文件 syncd2m.txt。
打开 syncd2m.txt 以验证 DSNTPSMP 调用成功。
使用在将 DB2 主机设置为统一数据库中列举的通用步骤设置 DB2 主机环境。
修改 syncd2m_jcl.sql 安装脚本,它位于 install-dir\MobiLink\setup 中。
确保在继续操作之前保存了原始 syncd2m_jcl.sql 文件的备份副本。
在 syncd2m_jcl.sql 文件中,
将所有出现的 {MLTABLESPACE} 替换为您限定的表空间,例如 MYDB.MYTS。
将所有出现的 {WLMENV} 替换为与 DB2 实例相关联的 "负载管理器" 的名称。
启动 DBISQL 并将它连接到 DB2 主机。
要在 DB2 主机中创建 Mobilink 表并定义 Mobilink 过程,可运行 syncd2m_jcl.sql 安装脚本经过编辑的副本,它位于 install-dir\MobiLink\setup 中。
从 %SQLANY%\MobiLink\setup 目录中,通过 FTP 连接到主机并运行以下命令:
bin hash cd xmit quote site recfm=fb lrecl=80 quote site cyl put d2mload.xmit put d2mdbrm.xmit quit |
主机上的两个 xmit 文件如下所示:
USERID.XMIT.D2MLOAD.XMIT
USERID.XMIT.D2MDBRM.XMIT
USERID 是在通过 FTP 进行连接时您所给出的用户名。
打开终端会话,然后从 "ISPF 命令 Shell" 运行以下命令:
RECEIVE INDATASET('USERID.XMIT.D2MLOAD.XMIT') RECEIVE INDATASET('USERID.XMIT.D2MDBRM.XMIT') |
输出如下:
USERID.ML.LOADLIB
USERID.ML.DBRMLIB
复制 d2mrelod.jcl 文件并按以下方式进行修改:
将 USERID 更改为主机用户 ID。
将 DSNDB0T 更改为您的 DB2 DSN。
运行 d2mrelod.jcl 脚本经过编辑的副本,它位于 install-dir\MobiLink\setup 中。
复制 d2mbdpk.jcl 文件并按以下方式进行修改:
将 USERID 更改为主机用户 ID。
将 DB0T 更改为您的 DB2 SSID。
通过运行 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 主机作为统一数据库。
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 隔离级别。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |