34.6 将数据从嵌入式 Sybase SQL Anywhere 迁移到外部 Oracle 数据库

ZENworks 10 Configuration Management 可让您将数据从内部嵌入式 Sybase SQL Anywhere 数据库或 ZENworks 主服务器上运行的外部 Sybase SQL Anywhere 数据库迁移到未安装 ZENworks 10 Configuration Management 的设备上安装的 Oracle 数据库中。

重要说明:如果设备上安装了 ZENworks Reporting Server,则在迁移数据库后,Reporting Server 将不能运行。要运行 Reporting Server,您必须于迁移数据库后在安装了 Oracle 客户机的“主服务器”上重新安装 ZENworks Reporting Server。有关更多信息,请参见部分 34.6.3, 迁移后任务

请查看以下信息以迁移数据库:

34.6.1 准备移动数据

在将数据从 Sybase 数据库迁移到 Oracle 数据库之前,请执行以下操作:

  • 确保 ZENworks 10 Configuration Management 的许可证状态为“活动”。必须安装并运行许可版或评估版的产品。

  • 通过使用 report-save (rpsv)(目标文件夹)命令保存所有报告、rights.xmlownership.xml。XML 文件包含所有报告的权限以及所有权细节。

  • 确保配置了 Sybase 数据库的主服务器已升级到 ZENworks 10 Configuration Management。

  • 确保 ZENworks 主服务器已安装内部或外部 Sybase 数据库。

  • 确保将 Oracle 数据库安装在未安装 ZENworks 10 Configuration Management 的设备上。

  • 确保 USERS 表空间有足够的空间来创建和储存 ZENworks 数据库纲要。表空间要求最少 100 MB 的空间以创建不含任何数据的 ZENworks 数据库纲要,并要求合适的额外空间,其大小取决于要迁移的数据库大小。默认情况下,数据库迁移实用程序只会使用 USERS 表空间。迁移期间,您不能手动指定任何其他表空间。

  • 在数据库提示符处运行以下查询,以确保将 NLS_CHARACTERSET 参数设置为 AL32UTF8,将 NLS_NCHAR_CHARACTERSET 参数设置为 AL16UTF16:

    select parameter, value from nls_database_parameters where parameter like '%CHARACTERSET%';
    
  • (视情况而定)如果要通过创建新用户纲要来迁移数据库,请确保满足以下额外要求:

    • 您必须注意数据库管理员的身份凭证。

    • 必须已存在一个与 Oracle 访问用户关联的表空间

  • 在以下情况下,可以选择使用位于网络中服务器上的现有用户纲要来迁移数据库:

    • 数据库管理员会创建一个具备必要权限的用户纲要,您将从数据库管理员处获取该用户纲要的身份凭证。在这种情况下,不需要数据库管理员身份凭证即可迁移数据库。

    • 可以在 Oracle 数据库中创建用户纲要,并在数据库迁移期间选择使用该用户纲要。

    如果要通过使用现有用户纲要来迁移数据库,请确保满足以下额外要求:

    • 确保用户纲要具备以下权限以创建数据库。

      • CREATE SESSION
      • CREATE_TABLE
      • CREATE_VIEW
      • CREATE_PROCEDURE
      • CREATE_SEQUENCE
      • CREATE_TRIGGER
    • 确保 USERS 表空间上的用户纲要配额已设置为“无限制”。

  • 手动停止“管理区域”中所有服务器上运行的 ZENworks 服务。

    停止 服务:

    • 在 Windows 上: 执行下列操作:

      1. 从 Windows 桌面开始菜单,单击设置 > 控制面板

      2. 双击管理工具 > 服务

      3. 停止以下服务:Novell ZENworks ServerNovell ZENworks Services MonitorNovell ZENworks Agent Service

    • 在 Linux 上: 在控制台提示符处,输入以下命令:

      • /etc/init.d/./novell-zenmntr stop

      • /etc/init.d/./novell-zenserver stop

      • /etc/init.d/./novell-zenloader stop

  • 请确保“主服务器”上的 Novell ZENworks Embedded Datastore 服务正在运行。

    • 在 Windows 上: 执行下列操作:

      1. 从 Windows 桌面开始菜单,单击设置 > 控制面板

      2. 双击管理工具 > 服务

      3. Novell ZENworks Embedded Datastore 的状态必须为已启动

    • 在 Linux 上: 在控制台提示符处,输入 /etc/init.d/./sybase-asa status

  • (可选)数据库的迁移状态会记录到 novell-zenworks-configure.log 文件中。默认只会记录“提醒”和“严重”类型的讯息。如果要将其他讯息类型(如“较好”、“最好”和“警告”)也记录到文件中,请在 novell-zenworks-configure.properties 文件中执行以下操作:

    1. Logger.logLevel 的值设置为合适的讯息类型。

      例如,如果要记录“最好”类型的讯息:

       #Logger.logLevel   = FINEST
      
    2. 去除下行中的“#”取消其注释,如下所示:

      Logger.logLevel   = FINEST
      

    novell-zenworks-configure.properties 文件在 Windows 上位于 %ZENWORKS_HOME%\conf\ 中,在 Linux 上位于 /etc/opt/novell/zenworks/ 中。

34.6.2 将数据从 Sybase SQL Anywhere 数据库迁移到 Oracle 数据库

将数据从 Sybase SQL Anywhere 数据库迁移到 Oracle 数据库

  1. 请确保完成部分 34.6.1, 准备移动数据中列出的所有任务。

  2. 运行数据库迁移实用程序。

    • 在 Windows 上: 在命令提示符处,转到 ZENworks 安装路径\bin\novell-zenworks-configure.bat 文件并输入以下命令:

      novell-zenworks-configure.bat -c DBMigrateConfigureAction

    • 在 Linux 上: 在控制台提示符处,转至 /opt/novell/zenworks/bin 并输入以下命令:

      novell-zenworks-configure -c DBMigrateConfigureAction

  3. 输入目标数据库类型 Oracle。

  4. 输入 Oracle 数据库服务器的 IP 地址或主机名。

  5. 输入 Oracle 数据库服务器使用的端口。

  6. 输入 Oracle 数据库的完全限定网络服务名称。

  7. 您可以选择创建新的用户纲要,或使用现有的用户纲要。

    如果选择创建新纲要,请继续步骤 8

    如果选择使用现有用户纲要,请跳至步骤 9

  8. 输入数据库服务器管理员的用户名和口令。

  9. 在提示输入数据库用户名时,输入纲要名称。

  10. 在提示输入数据库用户的口令时,输入数据库纲要口令。

    数据库迁移随即启动。

  11. 完成数据库迁移时,可以查看 novell-zenworks-configure.log 文件,以确定迁移是否成功完成。日志文件在 Windows 上位于 %ZENWORKS_HOME%\log\ 中,在 Linux 上位于 /var/opt/novell/log/zenworks/ 中。

  12. 成功迁移数据库后,继续部分 34.6.3, 迁移后任务

继续迁移数据库

如果数据库迁移因任何原因而停止,且已创建了 dbmigration.xml 文件,则 ZENworks Migration Utility 可让您继续迁移。该文件在 Windows 上位于 ZENworks 安装路径\bin 目录中,在 Linux 上位于 /opt/novell/zenworks/bin 目录中。

  1. 运行数据库迁移实用程序。

    • 在 Windows 上: 在命令提示符处,转至 ZENworks 安装路径\bin\novell-zenworks-configure.bat 文件并输入以下命令:

      novell-zenworks-configure.bat -c DBMigrateConfigureAction

    • 在 Linux 上: 在控制台提示符处,转至 /opt/novell/zenworks/bin 并输入以下命令:

      novell-zenworks-configure -c DBMigrateConfigureAction

  2. 输入目标数据库类型 Oracle。

  3. 输入 Oracle 数据库服务器的 IP 地址或主机名。

    迁移数据库时,必须指定要使用的 Oracle 数据库服务器的 IP 地址或主机名。例如,如果迁移数据库时已指定数据库服务器的 IP 地址,则在继续迁移数据库时,必须指定相同的 IP 地址。您无法指定数据库服务器的主机名。

  4. 输入 Oracle 数据库服务器使用的端口。

  5. 输入 Oracle 数据库的完全限定网络服务名称。

  6. 选择使用现有纲要。

  7. 在提示输入停止数据库迁移之前指定的数据库用户名时,输入纲要名称。

  8. 在提示输入停止数据库迁移之前指定的数据库用户口令时,输入数据库纲要口令。

  9. 选择继续迁移数据库。

    数据库迁移随即启动。

  10. 成功迁移数据库后,继续部分 34.6.3, 迁移后任务

34.6.3 迁移后任务

如果“管理区域”中只有一个服务器,则在成功将数据迁移到 Oracle 数据库后,会自动启动所有 ZENworks 服务。

如果“管理区域”中存在多个服务器:

  1. 在运行迁移实用程序的设备上,将以下文件复制到所有服务器的相应目录中:

    • zdm.xml
    • dmaccounts.properties
    • dmmappings.properties

    这些文件在 Windows 上位于 ZENworks 安装路径\conf\datamodel 目录中,在 Linux 上位于 /etc/opt/novell/zenworks/datamodel 目录中。

  2. 重启动 ZENworks 服务。

    • 在 Windows 上: 执行下列操作:

      1. 从 Windows 桌面开始菜单,单击设置 > 控制面板

      2. 双击管理工具 > 服务

      3. 启动以下服务:Novell ZENworks ServerNovell ZENworks Services MonitorNovell ZENworks Agent Service

    • 在 Linux 上: 在控制台提示符处,输入以下命令:

      • /etc/init.d/./novell-zenmntr restart

      • /etc/init.d/./novell-zenserver restart

      • /etc/init.d/./novell-zenloader restart

  3. 将 ZENworks 报告从 Sybase SQL Anywhere 数据库迁移到 Oracle 数据库:

    1. 在没有 ZENworks Reporting Server 实例的“主服务器”上安装 Oracle 客户机。

    2. 在安装了 Oracle 客户机的设备上安装新的 ZENworks Reporting Server 实例。

    3. 将报告复制到运行新 Reporting Server 实例的设备中。这些报告是在迁移报告之前保存的“ZENworks 报告”。有关更多信息,请参见部分 34.6.1, 准备移动数据

    4. 通过使用以下命令发布报告并恢复报告权限和所有权细节:

      zman rpld 包含权限.xml 和所有权.xml 的目录路径

    5. 卸装迁移数据库前安装的 ZENworks Reporting Server 实例。

“ZENworks 服务器”现在指向新的数据库。

对于 Oracle 10g 数据库,所有管理员名称均区分大小写,包括用户来源中的登录名。安装时自动创建的默认 ZENworks 管理员帐户为首字母大写,因此要登录“ZENworks 控制中心”,您必须输入 Administrator

34.6.4 对数据库迁移进行查错

对 Java Heap Space 异常进行查错

如果在数据库迁移期间由于内存不足而遇到 Java Heap Space 异常:

  1. 编辑 ZENworks 安装路径\bin\novell-zenworks-configure.bat 文件 (Windows) 或 /opt/novell/zenworks/bin/novell-zenworks-configure (Linux) 以更改以下行中的堆栈空间值,这取决于运行迁移实用程序的设备的 RAM:

    "%JAVA_HOME%\bin\java" -Djava.library.path=%ZENLIB% -cp "%MYCP%" %DEBUG_OPTS% %JAVA_OPTS% -Xmx128m com.novell.zenworks.configure.ConfigureLoader %CONFIG_OPTS%
    

    堆栈空间值在 -Xmx128m 中以兆字节 (MB) 表示。默认为 128 次。

    例如,如果设备的 RAM 为 512 MB,则 novell-zenworks-configure.bat 文件中的行可能会更新如下:

    "%JAVA_HOME%\bin\java" -Djava.library.path=%ZENLIB% -cp "%MYCP%" %DEBUG_OPTS% %JAVA_OPTS% -Xmx512m com.novell.zenworks.configure.ConfigureLoader %CONFIG_OPTS%
    

    重要说明:堆栈空间值必须等于或小于设备的 RAM。

  2. 在控制台提示符处,运行 ZENworks 安装路径\bin\novell-zenworks-configure.bat 文件 (Windows) 或 /opt/novell/zenwor s/bin/novell-zenworks-configure (Linux)。

  3. 遵循提示操作。

    当提示您输入继续迁移所需的文件位置时,输入 DBMigration.xml 的完整路径。该文件在 Windows 上位于 ZENworks 安装路径\bin 目录中,在 Linux 上位于 /opt/novell/zenworks/bin 目录中。

    该 XML 文件包含一列表以及指示表是否成功迁移的标志。数据库迁移继续进行后,将只迁移标志值设置为 False 的表。

对 Oracle 数据库崩溃进行查错

如果 Oracle 数据库在数据库迁移期间崩溃:

  1. 在控制台提示符处,运行 ZENworks 安装路径\bin\novell-zenworks-configure.bat 文件 (Windows) 或 /opt/novell/zenwor s/bin/novell-zenworks-configure (Linux)。

  2. 遵循提示操作。

    当提示您输入继续迁移所需的文件位置时,输入 DBMigration.xml 的完整路径。该文件在 Windows 上位于 ZENworks 安装路径\bin 目录中,在 Linux 上位于 /opt/novell/zenworks/bin 目录中。

    该 XML 文件包含一列表以及指示表是否成功迁移的标志。数据库迁移继续进行后,将只迁移标志值设置为 False 的表。

    重要说明:请勿编辑 DBMigration.xml 的内容。

对 Oracle 表空间问题进行查错

如果 Oracle USERS 表空间没有足够的空间来创建和储存 ZENworks 数据库纲要,则数据库迁移在尝试创建表时会失败,并显示以下错误讯息:

SEVERE: Terminating the database migration...
SEVERE: An error has occurred while migrating the database.

要解决此问题,Oracle 数据库管理员必须增加 USERS 表空间的大小。确保表空间至少有 100 MB 的空间以创建不含任何数据的 ZENworks 数据库纲要,且有适合于待迁移数据库的大小的额外空间。

对数据库迁移失败问题进行查错

如果 NLS_CHARACTERSET 参数未设置为 AL32UTF8,且 NLS_NCHAR_CHARACTERSET 参数未设置为 AL16UTF16,则数据库迁移将失败,并出现以下错误讯息:

Failed to run the sql script: localization-updater.sql,
message:Failed to execute the SQL command: insert into
zLocalizedMessage(messageid,lang,messagestr)
values('POLICYHANDLERS.EPE.INVALID_VALUE_FORMAT','fr','La stratégie {0} n''a
pas pu être appliquée du fait que la valeur de la variable "{1}" n''est pas
dans un format valide.'),
message:ORA-00600: internal error code, arguments: [ktfbbsearch-7], [8], [],
[], [], [], [], []

要解决此问题,请将 NLS_CHARACTERSET 参数设置为 AL32UTF8,将 NLS_NCHAR_CHARACTERSET 参数设置为 AL16UTF16。为确保已使用建议的值配置字符集参数,请在数据库提示符处运行以下查询:

select parameter, value from nls_database_parameters where parameter like '%CHARACTERSET%';

使用现有用户纲要对数据库迁移进行查错

如果选择使用现有用户纲要来迁移数据库,则数据库迁移实用程序会创建 ZENworks 数据库,但可能无法迁移数据。

要解决此问题:

  1. 确保数据库管理员已删除新建的 ZENworks 数据库中的 ZENworks 表、视图和用户序号。然后清除 user_recyclebin 数据库表。

  2. 使用相同的用户纲要重新起动数据库迁移。有关更多信息,请参见将数据从 Sybase SQL Anywhere 数据库迁移到 Oracle 数据库

34.6.5 还原到 Sybase 数据库

如果要还原为使用 Sybase 数据库:

  1. 在运行迁移实用程序的设备上,重命名以下文件:

    • zdm.xml.bak 重命名为 zdm.xml
    • dmaccounts.properties.bak 重名为 dmaccounts.properties
    • dmmappings.properties.bak 重命名为 dmmappings.properties

    这些文件在 Windows 上位于 ZENworks 安装路径\conf\datamodel 目录中,在 Linux 上位于 /etc/opt/novell/zenworks/datamodel 目录中。

  2. 重启动所有“ZENworks 服务”:

    • 在 Windows 上: 执行下列操作:

      1. 从 Windows 桌面开始菜单,单击设置 > 控制面板

      2. 双击管理工具 > 服务

      3. 启动以下服务:Novell ZENworks ServerNovell ZENworks Services MonitorNovell ZENworks Agent Service

    • 在 Linux 上: 在控制台提示符处,输入以下命令:

      • /etc/init.d/./novell-zenmntr restart

      • /etc/init.d/./novell-zenserver restart

      • /etc/init.d/./novell-zenloader restart