MobiLink 支持用于 Linux、Unix 和 Windows 的 IBM DB2 LUW。
运行安装脚本之前,您应了解以下要求:
运行安装脚本的数据库用户预期为同步过程中将更新 MobiLink 系统表的同一用户。必须使用此用户启动 MobiLink 服务器和配置 MobiLink 应用程序。 请参见所需权限。
MobiLink 服务器用于连接统一数据库的 RDBMS 用户必须能够使用 MobiLink 系统表、过程等,但不能使用任何限定符(例如,SELECT * from ml_user)。 请参见MobiLink 服务器系统表。
要设置 IBM DB2 用作 MobiLink 统一数据库,必须运行设置过程,此过程将添加 MobiLink 同步所需的 MobiLink 系统表、存储过程、触发器和视图。可通过多种方法实现这一点:
运行 syncdb2.sql 安装脚本,它位于 %SQLANY12%\MobiLink\Setup 中。运行此文件前,必须将其复制到其它位置并且进行修改。说明如下。
检查并更新 Sybase Central 中的 MobiLink 系统设置。请参见MobiLink 系统设置。
要使用安装脚本安装 MobiLink 系统表,目标 IBM DB2 LUW 表空间必须使用至少 8 KB 页。如果表空间不使用 8 KB 页,请完成以下步骤:
验证是否至少存在一个具有 8 KB 页的缓冲池。否则,创建一个具有 8 KB 页的缓冲池。
创建一个使用 8 KB 页缓冲池的新的表空间和临时表空间。
有关详细信息,请参见 IBM DB2 LUW 文档。
使用连接信息自定义 syncdb2.sql:
将 syncdb2.sql 复制到可以修改并存储它的新位置。
syncdb2.sql 脚本包含一个缺省连接语句 [connect to DB2Database
]。将此行变更为连接到您的 IBM DB2 数据库。使用以下语法:
connect to DB2Database user userid using password ~ |
其中,DB2Database、userid 和 password 是您提供的名称。(syncdb2.sql 脚本使用代字号字符 (~) 作为命令分隔符。)
运行 syncdb2.sql:
db2 -c -ec -td~ +s -v -f syncdb2.sql |
必须使用随 IBM DB2 数据库附带的 ODBC 驱动程序为 IBM DB2 统一数据库设置 ODBC DSN。请参见:
锁升级 为了在统一数据库和远程数据库之间保持数据一致性,MobiLink 服务器将通过 ml_lock_rid 存储的过程发出以下查询以在所有同步阶段锁定远程 ID。
SELECT sync_key into p_sync_key FROM ml_database WHERE rid = a_given_remote_id WITH RR USE AND KEEP EXCLUSIVE LOCKS; |
此查询将以独占方式锁定远程 ID,以防止使用同一远程 ID 进行任何并发同步。
如果在对于同一远程 ID 没有并发同步时遇到任何 MobiLink 远程 ID 锁定错误,例如,如果 MobiLink 服务器日志中出现 MobiLink 错误代码 -10341,则需要调整 DB2 maxlocks 和 locklist 配置参数以防止锁升级。有关全部详细信息,请查阅相关 DB2 文档。
数据类型映射 列的数据类型必须在统一数据库和远程数据库之间正确映射。 有关详细信息,请参见IBM DB2 LUW 数据映射。
CHAR 列 在 IBM DB2 LUW 中,CHAR 数据类型长度固定并以空白填充以达到字符串的全长。在 MobiLink 远程数据库(SQL Anywhere 或 UltraLite)中,CHAR 与 VARCHAR 相同:值不填充空白以达到固定宽度。强烈建议在统一数据库中使用 VARCHAR 而不是 CHAR。如果必须使用 CHAR,在同步过程中可以使用 mlsrv12 -b 命令行选项删除字符串的尾随空白。此选项对于用于检测冲突的字符串比较十分重要。
请参见-b mlsrv12 选项。
表空间容量 您希望用作统一数据库的任何 IBM DB2 LUW 数据库中的表空间和临时表空间都必须使用至少 8 KB 页。
此外,有些列要求 LONG 型表空间。如果没有缺省的 LONG 型表空间,创建包含这些列的表的语句必须恰当限定,如下例所示:
CREATE TABLE ... ( ... ) IN tablespace LONG IN long-tablespace |
有关使用示例应用程序的示例,请参见MobiLink 的 CustDB 示例。
会话范围的变量 版本 8 以前的 IBM DB2 LUW 不支持会话范围的变量。对此,方便的解决方法是使用一个基表,在其中加入列来包含 MobiLink 用户名和其它会话数据。此基表包含表示并发同步的行。
用户定义的过程 版本 8.2 以前的 IBM DB2 LUW 要求您将 SQL 过程编译为可执行库(如 DLL)。结果 DLL/共享库必须复制到服务器的专门目录中。请注意,您可以使用几种不同的语言(其中包括 C/C++ 和 Java)编写过程。
有关 Java 和 .NET 同步脚本的详细信息,请参见:
在系统过程调用中使用双重引号
使用 MobiLink 系统过程将脚本添加到 IBM DB2 统一数据库时,需要使用双重引号。例如,如果通过 ml_add_table_script 添加的脚本包括用于任何其它统一数据库的行 [SET "DELETED"=''Y''
],则对于 IBM DB2,必须将其写成 [SET "DELETED" = ''''Y''''
]。
请参见MobiLink 隔离级别。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |