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 LUW 统一数据库

MobiLink 支持用于 Linux、Unix 和 Windows 的 IBM DB2 LUW。MobiLink 不支持用于 AS/400 的 IBM DB2。

将 DB2 LUW 设置为统一数据库

要设置 DB2 用作 MobiLink 统一数据库,必须运行设置过程,此过程将添加 MobiLink 同步所需的 MobiLink 系统表、存储过程、触发器和视图。可通过多种方法实现这一点:

  • 运行 syncdb2.sql 安装脚本,它位于 install-dir\MobiLink\setup 中。运行此文件前,必须将其复制到其它位置并且进行修改。说明如下。

  • 在 Sybase Central 的 MobiLink 插件中,选择 [模式] » [管理] 并连接到服务器数据库。右击数据库名,选择 [检查 MobiLink 系统设置]。如果需要对您的数据库进行设置,系统将提示您继续。请注意,您必须执行以下过程的第 1 步。

  • 使用 [创建同步模型向导] 或 [部署同步模型向导] 时,将在连接到服务器数据库时检查系统设置。如果需要对您的数据库进行设置,系统将提示您继续。请注意,您必须执行以下过程的第 1 步。

注意

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

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

♦  运行 DB2 安装脚本
  1. 要用安装脚本安装 MobiLink 系统表,IBM DB2 LUW 表空间必须使用至少 8 KB 页。如果表空间不使用 8 KB 页,请完成以下步骤:

    • 验证是否至少存在一个具有 8 KB 页的缓冲池。否则,创建一个具有 8 KB 页的缓冲池。

    • 创建一个使用 8 KB 页缓冲池的新的表空间和临时表空间。

      有关详细信息,请参见 DB2 LUW 文档。

  2. 使用连接信息自定义 syncdb2.sql

    1. syncdb2.sql 复制到可以修改并存储它的新位置。

    2. syncdb2.sql 脚本包含一个缺省连接语句 [connect to DB2Database]。将此行变更为连接到您的 DB2 数据库。使用以下语法:

      connect to DB2Database user userid using password ~

      其中,DB2Databaseuseridpassword 是您提供的名称。(syncdb2.sql 脚本使用代字号字符 (~) 作为命令分隔符。)

  3. 运行 syncdb2.sql

    db2 -c -ec -td~ +s -v -f syncdb2.sql
ODBC 驱动程序

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

DB2 LUW 问题
  • 表空间容量   您希望用作统一数据库的任何 DB2 LUW 数据库中的表空间和临时表空间都必须使用 8 KB 页。

    此外,有些列要求 LONG 型表空间。如果没有缺省的 LONG 型表空间,创建包含这些列的表的语句必须恰当限定,如下例所示:

    CREATE TABLE ... ( ... )
    IN tablespace
    LONG IN long-tablespace

    有关使用示例应用程序的示例,请参见研究 MobiLink 的 CustDB 示例

  • 会话范围的变量   版本 8 以前的 DB2 LUW 不支持会话范围的变量。对此,方便的解决方法是使用一个基表,在其中加入列来包含 MobiLink 用户名和其它会话数据。此基表包含表示并发同步的行。

  • 用户定义的过程   版本 8.2 以前的 DB2 LUW 要求您将 SQL 过程编译为可执行库(如 DLL)。结果 DLL/共享库必须复制到服务器的专门目录中。请注意,您可以使用几种不同的语言(其中包括 C/C++ 和 Java)编写过程。

    有关 Java 和 .NET 同步脚本的详细信息,请参见:

  • CHAR 列   在 IBM DB2 LUW 中,CHAR 数据类型长度固定并以空白填充以达到字符串的全长。在 MobiLink 远程数据库(SQL Anywhere 或 UltraLite)中,CHAR 与 VARCHAR 相同:值不填充空白以达到固定宽度。强烈建议在统一数据库中使用 VARCHAR 而不是 CHAR。如果必须使用 CHAR,在同步过程中可以使用 mlsrv11 -b 命令行选项删除字符串的尾随空白。此选项对于用于检测冲突的字符串比较十分重要。

    请参见-b 选项

  • 数据类型映射   列的数据类型必须在统一数据库和远程数据库之间正确映射。有关详细信息,请参见IBM DB2 LUW 数据映射

  • 在系统过程调用中使用双重引号   使用 MobiLink 系统过程将脚本添加到 DB2 统一数据库时,需要使用双重引号。例如,如果通过 ml_add_table_script 添加的脚本包括用于任何其它统一数据库的行 [SET "DELETED"=''Y''],则对于 DB2,必须将其写成 [SET "DELETED" = ''''Y'''']。

  • 版本 5 和更早版本的特殊注意事项   如果使用版本 6 之前的 IBM DB2 LUW,仅支持不超过 18 个字符的列名称和其它标识符。这意味着必须截断 MobiLink 系统过程的名称。例如,要调用 ml_add_connection_script,则使用名称 ml_add_connection_。

隔离级别

请参见MobiLink 隔离级别