第 4 章


迁移数据库

本章介绍了如何将数据库从 Content Delivery Server 版本 5.0 和 5.0 PU1 迁移到 Content Delivery Server 版本 5.1。

本章包括以下主题:


迁移步骤和标签

数据库迁移过程包含一系列步骤,其中的每个步骤均可视为一个单独的迁移过程。这些步骤可划分为目录读取/写入步骤或售卖读取/写入步骤。在开始售卖步骤之前,必须先完成目录步骤。读取步骤必须始终在相应的写入步骤之前执行。以下列表显示了单个服务器部署的迁移步骤集必须采用的顺序:

1. 目录读取

2. 目录写入

3. 售卖读取

4. 售卖写入

在运行目录写入步骤时,迁移过程将运行 Content Delivery Server 服务器代码,以便将所有内容传送到提交和验证工作流。此过程可能需要使用大量内存。为防止出现 OutOfMemory 错误,请在运行目录写入步骤之前设置 EXTRA_JAVA_ARGS 环境变量,以增加 Java 虚拟机允许的最大堆大小。例如,

$ EXTRA_JAVA_ARGS="-Xmx1500M" cdsi db migrate db -s code -c -w

不要更改最小堆大小。如果将最小堆大小设置为较大的值,则会导致 Java 虚拟机一经启动便请求更多的内存。当 Java 虚拟机需要对 Oracle 进程进行派生处理时,操作系统将无法完成执行请求。这是因为,每次 JVM 虚拟机需要启动进程时,它必须先创建自身的副本,但可能没有足够的可用操作系统内存来执行此操作。

数据库迁移使用标签来存储和装入转换的数据。标签是一个目录,在执行读取和写入步骤之间将在其中存储迁移数据。在迁移目录服务器及其关联的所有售卖服务器期间,必须使用相同的标签,因为在执行售卖步骤期间将引用目录数据。

对于远程售卖,请将售卖数据的标签保存在 NFS 可访问(读取和写入)的位置中。应将目录数据的标签复制到远程售卖站点,因为目录标签共享会影响 Content Delivery Server 性能。

与标签关联的目录采用以下结构:

/label/catalog

/label/vending/VENDING_NAME

如果迁移需要配置文件所定义的定制实现,则需要扩展 Java 类路径以使其包含实现路径。在运行迁移步骤之前,可通过设置 EXTRA_JAVA_CP 环境变量来指定路径。例如:

$ EXTRA_JAVA_CP="/tmp/extra.jar" cdsi db migrate db -s code -c -r


迁移先决条件

需要满足以下条件才能运行数据库迁移:

迁移术语和变量

在本指南的其余部分,术语“源数据库”是指 Sun Java System Content Delivery Server 版本 5.0(或 5.0 PU1,如果适用)数据库。术语“目标数据库”是指 Sun Java System Content Delivery Server 版本 5.1 数据库。

环境变量设置

您必须定义 CDS_HOMEORACLE_HOME 变量,并且必须在 PATH 中指定以下目录:

Oracle 主目录可以指服务器安装或客户端安装创建的 Oracle 主目录。对于每一种情况,必须完全安装 Oracle 数据库实用程序。

请注意,如果售卖源和目标数据库运行不同版本的 Oracle 服务器,则可能会出现导出错误。请确保两个数据库使用相同的服务器版本;否则,请确保遵循以下规则:

例如,如果源数据库在 Oracle Database 9i 上运行,目标数据库在 Oracle Database 10g 上运行,则 Export 实用程序必须在 Oracle Database 9i 上运行,Import 实用程序必须在 Oracle Database 10g 上运行。

另外,还要确保正确配置 init_env.sh 文件中的路径。


配置迁移

数据库迁移只需要一个配置文件,即 DBMigration.xml,它位于默认目录 $CDS_HOME/cfg/migration/ 中。此配置文件可用于所有迁移步骤。本节介绍用于创建配置文件的规则,并定义 DBMigration.xml 文件中使用的标记。

可以将创建的数据库迁移配置文件命名为 DBMigration.xml 以外的名称,但它必须位于 $CDS_HOME/cfg/migration 目录中,并且在执行 cdsi migrate 命令时必须指定该文件。

迁移文件标记约定

在创建配置文件时,请遵循以下一般性规则:

正确:


<label>/path</label> 

 

错误:


<label>
/path
</label>

 

如果指定的线程数大于 Oracle 会话中支持的数量,则会导致出现错误。请确保指定的数量不超过 Oracle 支持的会话数。

另请注意,如果在高端计算机上运行并且 CPU 数大于 Oracle 中支持的会话数,则会出现错误。

配置文件标记

节定义了 <dbmigration> 标记以及可在该标记中使用的标记。<dbmigration> 标记是必需的。它是顶层标记并包含所有其他迁移配置标记,而且必须是 XML 文件中的根标记。以下标记在 <dbmigration> 中有效:

 


表 4-1 配置文件标记

标记名称

标记描述

<dbmigration>

此标记是必需的。

它是顶层标记配置文件标记。它包含所有其他迁移配置标记,并且必须是 XML 文件中的根标记。

<catalog>

必需的。

包含特定于目录的迁移配置部分。以下标记在 <catalog> 中有效:<catalog_events><classpath><deployment><server_config>

此标记在 <server> 中有效。

<catalog_database_link>

必需的。

用于使远程 Vending Manager 服务器能够访问目录数据库的链接。

如果将源 Vending Manager 服务器和源 Catalog Manager 服务器部署在同一个数据库上,并且具有相同的 SID,则按以下方式创建目录数据库链接:

create database link catalog_database_link
connect to SRC_CM_PS_APP identified by SRC_CM_PS_APP_Password
using 'SRC_CM_SID'

如果将源 Catalog Manager 服务器和源 Vending Manager 服务器部署在不同的数据库上,则按以下方式创建目录数据库链接:

首先,修改 $ORACLE_HOME/network/admin 中的 tnsnames.ora 文件以创建本地服务名称:

database_link_name =
(description =
(address = (protocol = TCP) (host =
source_catalog_database_host) (port = 1521))
(connect_data =
(server = dedicated)
(service_name = source_catalog_sid)
))

 

然后,使用刚创建的本地服务名称创建数据库链接:

create database link catalog_database_link
connect to SRC_CM_PS_APP identified by SRC_CM_PS_APP_Password
using 'database_link_name'

此标记在 <vending> 中有效。

<catalog_events>

不是必需的。

表示将目录事件存储到此 Catalog Manager 的事件表中。如果未将 Catalog Manager 与 Vending Manager 部署在一起,请使用此标记。该值表示售卖代码,此代码用于提取现有目录事件。使用可选的 pk 属性可以限制迁移的事件。有关详细信息,请参阅本节中的 <event_pk> 标记描述。

此标记在 <catalog> 中有效。

<classpath>

不是必需的。

指定一个附加类路径,在引导服务器时必须将其添加到默认类路径中。如果服务器提交代码依赖于其他库,则通常会使用此标记。如果使用 <classpath>,它必须至少包含一个 <element> 标记。

<element> 表示单个类路径元素。在该标记的值中可以识别以下宏:

  • $cds.dist - 扩展为 Content Delivery Server 分发目录的完整路径。
  • $cds.home - 扩展为 Content Delivery Server 主目录的完整路径。

此标记在 <catalog> 中有效。

<coverage>

为验证过程创建定制范围定义。该范围指定必须为某些表验证的记录百分比。

每个 coverage 标记可以为表中的数据量指定不同的范围,或者为表名以及表中要测试的数据量指定不同的范围。它具有以下属性:

  • min - 范围匹配所需的最小行数
  • max - 范围匹配所需的最大行数
  • name - 用于匹配范围的表名

通过提供最小或最大值或提供表名可指定表范围。

这些属性的默认值适用于以下情况:

  • 如果未指定 min 属性,则其默认值为 0
  • 如果未指定 max 属性,则其默认值为可能的最大 64 位带符号值。

有关详细信息,请参见默认范围值

在进行验证之前,应将表名和行数传递到 coverage 标记列表。首先,检查该名称;如果名称匹配,则选择该范围。然后,检查行数是否匹配。如果行数匹配,则选择该范围。

此标记在 <dbmigration> 中有效。

<deployment>

必需的。

指定迁移过程在内容重新提交期间使用的部署名称。

此标记在 <catalog> 中有效。

<destination>

不是必需的。

为执行写入步骤期间使用的标签目录指定路径。如果在不同的系统上执行这些步骤,文件系统路径可能会有所不同。<destination> 具有一个可选的 style 属性。如果执行写入步骤的系统使用不同的路径分隔符(例如,使用 DOS 而不是 UNIX® 标准),请指定相应的 dosunix 作为 style 属性的值。

此标记在 <label> 中有效。

<event_pk>

不是必需的。

CDS_EVENT 表中指定主键。如果 CDS_EVENT 表中包含该主键,则会将表中的数据提取限制为该主键的值以及具有更大值的主键。迁移仅复制主键值大于或等于指定主键值的 CDS_EVENT 条目。

包括具有指定主键的行。

此标记在 <vending> 中有效。

<label>

必需的。

指定从源数据库中提取的数据在文件系统中的存储位置。以下标记在 <label> 中有效:<destination><location>

此标记在 <server> 中有效。

<location>

必需的。

指定标签位置的物理路径。

此标记在 <label> 中有效。

<server>

如果在命令行中指定服务器代码,则必须使用此标记。

包含服务器配置条目。每个 Catalog Manager 及其关联的所有 Vending Manager 必须具有一个 <server> 标记。<server> 使用 code 属性,该属性可区分各个服务器条目。配置文件不能包含多个具有相同 code 值的 <server> 标记。以下标记在 <server> 中有效:<catalog><label><source_dbconf><target_dbconf><vending>

此标记在 <dbmigration> 中有效。

<server_config>

不是必需的。

指定用于在内容重新提交期间启动部署的主 Content Delivery Server 配置文件。默认值为 CDS.properties

此标记在 <catalog> 中有效。

<source_account>

必需的。

指定源配置的售卖帐户名称。售卖帐户名称用于从数据库配置文件中提取正确的数据库连接信息,并且还用于从源数据库中提取数据。

此标记在 <vending> 中有效。

<source_dbconf>

必需的。

指定数据库配置文件 DBConf.xml,该文件用于访问 Catalog Manager 以及为该 Catalog Manager 迁移的所有 Vending Manager 数据库。该文件采用的标准必须与 Content Delivery Server 版本 5.0 的数据库配置文件兼容。唯一接受的值是文件名。将在 $CDS_HOME/cfg 目录中搜索该文件。

此标记在 <server> 中有效。

<target_account>

不是必需的。

指定目标配置的售卖帐户名称。<target_account> 用于从数据库配置文件中提取正确的数据库连接信息。如果未使用此标记,可改用 <source_account> 的值。

<target_dbconf>

必需的。

指定数据库配置文件,该文件用于访问 Catalog Manager 以及为该 Catalog Manager 迁移的所有 Vending Manager 数据库。该文件采用的标准必须与 Content Delivery Server 版本 5.1 的数据库配置文件兼容。唯一接受的值是文件名。将在 $CDS_HOME/cfg 目录中搜索该文件。

此标记在 <server> 中有效。

<threads>

不是必需的。

指定运行迁移时启动的并行线程数。使用整数值 0 或更大的值。如果指定 0,则线程数与位于系统上的 CPU 数相匹配。默认值为 0。

此标记在 <dbmigration> 中有效。

<vending>

如果使用售卖代码,则必须使用此标记。

包含与单个 Vending Manager 相关的完整配置。<vending> 使用 CODE 属性,该属性可区分各个服务器条目。配置文件不能包含多个具有相同 code 值的 <vending> 标记。以下标记在 <vending> 中有效:<catalog_database_link><event_pk><source_account><target_account>

此标记在 <server> 中有效。


 

默认范围值

如果没有 coverage 标记,则使用以下默认范围:


<verification>
<!-- do full coverage, if a table has less than 100 entries -->
<coverage max="100">100.0</coverage>
<!-- do 21% coverage for tables with (100,10000] entries -->
<coverage min="101" max="10000">21.0</coverage>
<!-- do 5% coverage for tables with more than 10000 entries -->
<coverage min="10001">5.0</coverage>
<!-- do 0.1% coverage for fulfillment_request table -->
<coverage table="fulfillment_request">0.1</coverage>
</verification>

 

将评估这些默认值是否可作为最佳范围值,以及运行验证脚本所花的时间。将按 coverage 标记在配置文件中的出现顺序对其进行处理。如果最小和最大范围重叠,扫描将在第一个匹配标记处停止。指定表名的标记是一个例外,将始终先检查这些标记。

可以按文本形式使用浮点值,该值将被指定为 <coverage> 标记的文本值。

以下示例显示如何为 category_item 表选择 95% 范围:


<coverage name="category_item">95</coverage>

 

以下示例显示如何为所有表选择 3% 范围:


<coverage>3</coverage>

 

要迁移单个服务器部署,您必须至少定义两个目录步骤(一个读取步骤和一个写入步骤)和两个售卖步骤(一个读取步骤和一个写入步骤)。请参见运行迁移一节,以了解如何在执行期间调用这些步骤。

有关迁移文件示例,请参见配置示例


配置示例

本节提供了三个配置示例,它们代表了使用最广泛的部署方案。

单个服务器部署

本示例显示单个服务器部署的一个可能的配置文件。


代码示例 4-1 单个服务器部署的样例配置文件

<dbmigration>
 
  <threads>0</threads>
 
  <server code="server1">
    <source_dbconf>DBConf.xml.source</source_dbconf>
    <target_dbconf>DBConf.xml.target</target_dbconf>
    <label>
      <location>/export/space0</location>
      <!--
      <destination style="dos">o:\mount°?xport\space0</destination>
      -->
    </label>
 
    <catalog>
      <!--
      <classpath>
        <element>${cds.dist}/lib/external/bcel-5.1.jar</element>
      </classpath>
      -->
 
      <catalog_events pk="131123">vending1</catalog_events>
      <deployment>cds</deployment>
      <server_config>CDS.properties</server_config>
    </catalog>
 
    <vending code="vending1">
      <source_account>suncds.vending.server.1</source_account>
      <target_account>java.vending</target_account>
      <catalog_database_link>local_database_link</catalog_database_link>
    </vending>
 
    <!--
    <coverage name="fulfillment_request">0.1</coverage>
    <coverage max="100">100</coverage>
    <coverage min="101" max="10000">21</coverage>
    <coverage min="10001">5</coverage>
    -->
 
  </server>
   
</dbmigration>

 

远程售卖部署

本示例显示一个可能的配置文件,它用于包含一个 Catalog Manager 服务器和两个 Vending Manager 服务器(一个本地服务器和一个远程服务器)的部署。


代码示例 4-2 远程售卖部署的样例配置文件
<dbmigration>
 
  <threads>0</threads>
 
  <server code="server1">
    <source_dbconf>DBConf.xml.source</source_dbconf>
    <target_dbconf>DBConf.xml.target</target_dbconf>
  
    <label>
      <location>/export/space0</location>
      <!--
      <destination style="dos">o:\mount°?xport\space0</destination>
      -->
    </label>
 
    <catalog>
 
      <!--
      <classpath>
        <element>${cds.dist}/lib/external/bcel-5.1.jar</element>
      </classpath>
      -->
 
      <catalog_events pk="131123">vending1</catalog_events>
      <deployment>cds</deployment>
      <server_config>CDS.properties</server_config>
    </catalog>
 
    <vending code="vending1">
      <source_account>suncds.vending.server.1</source_account>
      <target_account>java.vending</target_account>
      <catalog_database_link>local_database_link</catalog_database_link>
    </vending>
 
    <vending code="vending2">
      <source_account>suncds.vending.server.2</source_account>
      <target_account>ringtone.vending</target_account>
      <catalog_database_link>src.remote_database_link</catalog_database_link>
    </vending>
 
    <!--
    <coverage name="fulfillment_request">0.1</coverage>
    <coverage max="100">100</coverage>
    <coverage min="101" max="10000">21</coverage>
    <coverage min="10001">5</coverage>
    -->
 
  </server>
   
</dbmigration>

 


记录迁移信息

在执行目录写入步骤期间,服务器代码会将所有内容传送到提交和验证工作流。服务器代码中的所有日志记录信息将存储在 $CDS_HOME/dist/cds/logs 目录下的 migration.server.log.* 文件中。要配置其他日志记录属性(如日志文件的最大大小、日志文件的最大数量以及日志记录阈值),请编辑 LABEL_DIRECTORY/catalog 目录中名为 logging.properties 的文件。该文件是在执行目录读取步骤期间创建的,仅在目录写入步骤期间使用它。

migration.log 文件包含迁移消息(调试消息除外),可以在 $CDS_HOME/dist/cds/logs 目录中找到该文件。在解决迁移期间遇到的问题时,请检查迁移日志文件。有关迁移日志文件的详细信息,请参见第 5 章中的消息


测试内容

现在,测试是通过内容重新提交进行处理的。请根据 Content Delivery Server 的部署需要修改 SubmissionVerifiedWorkflows.xml 文件。有关信息,请参见《Sun Javatrademark System Content Delivery Server 5.1 安装指南》。


迁移 CDS_EVENT

使用 <event_pk> 标记可以优化 CDS_EVENT 表的迁移过程。事件表主要用于报告目的。它提供了一些信息,可帮助您缩短迁移单个售卖服务器的执行时间。可通过使用 <event_pk> 标记来指定迁移的第一个主键。您可以在服务器启用并运行后迁移事件表的其余部分。还必须相应地修改 userid 参数。有关 <event_pk> 标记的描述,请参见配置文件标记

例如,如果配置文件中指定的 <event_pk>12345,则可以使用以下命令来迁移 CDS_EVENT 表的其余部分:


$ exp 'userid=CDS_VS_OWNER/dbpasswordx@CONNECT' \
      'file=CDS_EVENT.dmp' \
      'constraints=n' 'grants=n' 'indexes=n' \
      'log=export.log' \
      'query="where cds_event_id < 12345"' \
      'tables=CDS_EVENT' \
      'feedback=1000'
 
$ imp 'userid=CDS_VS_OWNER/dbpasswordx@CONNECT' \
      'tables=CDS_EVENT' \
      'log=import.log' \
      'file=CDS_EVENT.dmp' \
      'ignore=y' \
      'feedback=1000'

 

如果目录服务器是单独部署的(即,在与售卖服务器不同的服务器上运行),请修改 query 参数以区分目录和售卖事件。请使用

'query="where server_instance_id = 0 and cds_event_id < 12345"'

来选择目录事件并将其写入到 PS_OWNER 模式中。请使用

'query="where server_instance_id != 0 and cds_event_id < 12345"'

来选择售卖事件并将其写入到 VS_OWNER 模式中。

还必须相应地修改 userid 参数。<connect> 参数是 Oracle 客户端工具可解析为服务器连接的名称。如果未在系统上设置命名服务,则可以使用数据库实例的直接寻址:


$ exp 'userid="CDS_PS_OWNER/passwordx@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=olddb.wireless.com)(PORT=1521)))(CONNECT_DATA=(SID=old_sid)))"' \
          'file=CDS_EVENT.dmp' \
          'constraints=n' 'grants=n' 'indexes=n' \
          'log=export.log' \
          'query="where cds_event_id < 12345"' \
          'tables=CDS_EVENT' \
          'feedback=1000'
 
$ imp 'userid="CDS_PS_OWNER/passwordx@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=newdb.wireless.com)(PORT=1521)))(CONNECT_DATA=(SID=new_sid)))"' \
          'tables=CDS_EVENT' \
          'log=import.log' \
          'file=CDS_EVENT.dmp' \
          'ignore=y' \
          'feedback=1000'

 

有关 Oracle 命名模式的详细信息,请参阅 Oracle 文档。


迁移单独目录部署的事件

如果新部署的 Catalog Manager 是单独运行的,则必须指定 <catalog_event> 标记。在指定该标记时,会将所有售卖事件表中特定于目录的事件迁移到目录事件表中。有关 <catalog_event> 标记的描述,请参见配置文件标记


迁移版本的支持设备信息

本节中的信息适用于以下情况:Catalog Manager 管理员更改了一个或多个内容项的支持设备。

通常,提交到 Content Delivery Server 版本 5.0(或 5.0 PU1)以及版本 5.1 数据库的任何版本都可以具有任意数量的衍生内容版本(由 DRM 创建)。即使未选择 DRM 保护,也仍然会创建衍生版本。Catalog Manager 管理员可以强制为任何衍生版本指定支持设备属性值,从而修改功能匹配例程的输入内容,该例程可确定允许将哪些版本下载到哪些设备上。

由于在迁移期间将内容传送到提交和验证工作流,因此,无法预测在旧数据库中创建的衍生版本将在新数据库中变为哪个衍生版本,尤其是两个数据库中的版本号可能并不相同。

这种因素会妨碍迁移过程将当前为衍生版本选择的支持设备与新创建的衍生版本相匹配。迁移扩展了支持设备属性列表,以包含为最初提交版本的所有衍生版本选择的设备。

版本的支持设备信息迁移过程是使用以下方法完成的:如果 Catalog Manager 管理员为原始版本的任何衍生版本定制了支持设备属性,则会合并单个原始版本的所有衍生版本的支持设备属性值。在重新提交原始版本期间,将使用该值作为支持设备属性。虽然在重新提交期间使用此属性,但仅衍生版本继承该属性。不会更改最初为原始版本定义的属性值。


运行迁移

在部署 XML 配置文件后,即可开始执行迁移步骤。要执行单个步骤,请执行以下命令:


$ cdsi migrate db -s code -c | -v code -r | -w -f file

 

其中

如果配置文件名称不是 DBMigration.xml,请使用此选项。

例如,要运行目录读取步骤,请输入以下命令:


$ cdsi migrate db -s code -c -r

 

要使用备用配置文件运行售卖写入步骤,请输入以下命令:


$ cdsi migrate db -s code -v code -w -f file

 

在运行数据库迁移命令时,必须指定 -c-v 以及 -r-w

默认数据库迁移文件 DBMigration.xml 位于 $CDS_HOME/cfg/migration/ 目录中。



注 - 在启动迁移过程之后,请不要修改配置文件。如果对该文件进行任何更改,则必须从头开始重新执行迁移过程。



要完成迁移,您必须对 Catalog Manager 服务器和正在迁移的所有 Vending Manager 服务器执行所有读取和写入步骤。在迁移开始时,Catalog Manager 服务器必须处于只读模式,或者必须关闭运行该服务器的应用服务器。只读表示不能对 Catalog Manager 数据库进行任何修改,即,开发者不能提交任何内容,管理员不能进行任何修改。如果不满足这些要求,则可能会在迁移期间破坏数据的完整性。

要迁移 Vending Manager 服务器,必须关闭其应用服务器。

在迁移期间部署 Content Delivery Server 时,请切记以下几点:

如果在与源和目标数据库服务器相同的计算机上运行 Content Delivery Server,则可以忽略此项。您不必在数据库服务器上启动 Content Delivery Server。

迁移单个服务器部署

对于单个服务器部署,请执行以下迁移步骤:

1. 限制对 Catalog Manager 和 Developer Portal 的访问。

2. 执行目录读取步骤。

3. 在目标部署上执行目录写入步骤。

4. (可选)验证 Catalog Manager 迁移是否成功完成。

您可以使用 Content Delivery Server 提供的迁移验证脚本。有关如何运行该脚本的信息,请参见验证迁移完成情况

5. 授予对源 Vending Manager 模式的以下系统级权限:

运行以下命令:


grant create any synonym to source_vending_schema_VS_APP

 

运行以下命令:


grant drop public synonym to source_vending_schema_VS_APP

 

运行以下命令:


grant create database link to source_vending_schema_VS_APP

 

通过使用这些步骤,Vending Manager 应用程序可以在执行售卖读取步骤期间创建同义词和数据库链接。



注 - 如果未授予这些权限,售卖读取步骤将会失败; 无法读取 category_item 表提取数据,因为在提取期间,只有在创建同义词后才能访问 Catalog 部分的 resource_instance



或者,也可以直接登录到每个 Catalog Manager 和 Vending Manager 数据库并授予公共访问权限。

6. 如果 Catalog Manager 和 Vending Manager 指向同一个数据库(如果不是,请跳到步骤 7),则按以下方式创建指向 source_vending_schema_VS_APP 的数据库链接:

a. 以数据库的 source_vending_schema_VS_APP 用户身份登录到源 Vending Manager 数据库。

b. 创建指向 source_vending_schema_VS_APP 的数据库链接:


create database link catalog_database_link
connect to SRC_CM_PS_APP identified by SRC_CM_PS_APP_Password
using `SRC_CM_CID'

 

通过在此 Vending Manager 数据库服务器的 DBMigration.xml 文件中的 <vending> 标记部分添加 <catalog_database_link> 标记来提供此数据库链接。有关 <catalog_database_link> 标记的描述,请参见配置文件标记

7. 如果 Catalog Manager 和 Vending Manager 指向不同的数据库,则按以下方式创建指向 source_vending_schema_VS_APP 的数据库链接:

a. 以系统用户身份登录到源 Vending Manager 数据库。

b. 通过在位于 $ORACLE_HOME/network/admin网络配置文件 tnsnames.ora 中添加以下条目,为远程数据库名称创建本地服务名称:


database_link_name =
   (description =
      (address = (protocol = TCP) (host = source_catalog_database_host) (port = 1521))
      (connect_data =
         (server = dedicated)
         (service_name = source_catalog_sid)
      )
   )

 

c. 以数据库的 source_vending_schema_VS_APP 用户身份登录到源 Vending Manager 数据库。

d. 使用刚创建的本地服务名称创建数据库链接:


create database link catalog_database_link
connect to SRC_CM_PS_APP identified by SRC_CM_PS_APP_Password
using `database_link_name'

 

通过在此 Vending Manager 数据库服务器的 DBMigration.xml 文件中的 <vending> 标记部分添加 <catalog_database_link> 标记来提供此数据库链接。有关 <catalog_database_link> 标记的描述,请参见配置文件标记

8. 如果将 Catalog Manager 和 Vending Manager 部署在不同的数据库上,则在位于 $CDS_HOME/cfg 目录下的 DBSysUser.xml 文件中为数据库创建数据库系统用户和密码:


<DBUsers>
  <DBServer name = "DBServer1">
    <User>system</User>
    <Password>dbpassword</Password>
  </DBServer>
 
  <DBServer name = "DBServer2">
    <User>system</User>
    <Password>dbsyspassword</Password>
  </DBServer>
 
</DBUsers>

 

有关 DBSysUser.xml 文件的详细信息,请参见《Sun Javatrademark System Content Delivery Server 5.1 安装指南》。

9. 编辑此远程 Vending Manager 的 DBmigration.xml 文件以指向修改后的(源)DBConf.xml 文件。

10. 完全关闭 Content Delivery Server 的单个服务器。

11. 执行售卖读取步骤。

12. 执行售卖写入步骤。

13. (可选)验证 Vending Manager 迁移是否成功完成。

14. 启动新的(目标)服务器。

远程售卖部署的迁移准则

要确保售卖读取步骤成功完成,请检查您是否具有从 Vending Manager 访问目录模式的权限,该模式可能部署在单独的计算机上。如果使用代理服务器,请确保为数据库使用的端口启用代理。

迁移远程售卖部署

对于至少具有一个远程 Vending Manager 的部署(即,在与 Catalog Manager 不同的服务器上运行 Vending Manager),请执行以下迁移步骤。该方案假定至少有一个 Vending Manager(表示为 VM)在单个服务器模式下与 Catalog Manager 一起运行。远程 Vending Manager 表示为 RVM

此过程的第一部分介绍如何迁移源 Catalog Manager 和 Vending Manager。此过程的第二部分介绍如何迁移远程 Vending Manager。

1. 限制对 Catalog Manager 和 Developer Portal 的访问。

2. 执行目录读取步骤。

3. 在目标部署上执行目录写入步骤。

4. (可选)验证 Catalog Manager 迁移是否成功完成。

您可以使用 Content Delivery Server 提供的迁移验证脚本。有关如何运行该脚本的信息,请参见验证迁移完成情况

5. 授予对源 Vending Manager (VM) 模式的以下系统级权限:

运行以下命令:


grant create any synonym to source_vending_schema_VS_APP

 

运行以下命令:


grant drop public synonym to source_vending_schema_VS_APP

 

运行以下命令:


grant create database link to source_vending_schema_VS_APP

 

通过使用这些步骤,Vending Manager 应用程序可以在执行售卖读取步骤期间创建同义词和数据库链接。



注 - 如果未授予这些权限,售卖读取步骤将会失败; 无法读取 category_item 表提取数据,因为在提取期间,只有在创建同义词后才能访问 Catalog 部分的 resource_instance



或者,也可以直接登录到每个 Catalog Manager 和 Vending Manager 数据库并授予公共访问权限。

6. 以 source_vending_schema_VS_APP 用户身份登录到源 Vending Manager (VM) 数据库。

7. 如果 Catalog Manager 和 Vending Manager (VM) 指向同一个数据库,则按以下方式创建指向 source_vending_schema_VS_APP 的数据库链接:

a. 以数据库的 source_vending_schema_VS_APP 用户身份登录到源 Vending Manager (VM) 数据库。

b. 创建数据库链接:


create database link catalog_database_link
connect to SRC_CM_PS_APP identified by SRC_CM_PS_APP_Password
using `SRC_CM_CID'

 

通过在此 Vending Manager 数据库服务器的 DBMigration.xml 文件中的 <vending> 标记部分添加 <catalog_database_link> 标记来提供此数据库链接。有关 <catalog_database_link> 标记的描述,请参见配置文件标记

8. 如果 Catalog Manager 和 Vending Manager (VM) 指向不同的数据库,则按以下方式创建指向 source_vending_schema_VS_APP 的数据库链接:

a. 以系统用户身份登录到源 Vending Manager (VM) 数据库。

b. 通过在位于 $ORACLE_HOME/network/admin网络配置文件 tnsnames.ora 中添加以下条目,为远程数据库名称创建本地服务名称:


database_link_name =
   (description =
      (address = (protocol = TCP) (host = source_catalog_database_host) (port = 1521))
      (connect_data =
         (server = dedicated)
         (service_name = source_catalog_sid)
      )
   )

 

c. 以数据库的 source_vending_schema_VS_APP 用户身份登录到源 Vending Manager 数据库。

d. 使用刚创建的本地服务名称创建数据库链接:


create database link catalog_database_link
connect to SRC_CM_PS_APP identified by SRC_CM_PS_APP_Password
using `database_link_name'

 

通过在此 Vending Manager 数据库服务器的 DBMigration.xml 文件中的 <vending> 标记部分添加 <catalog_database_link> 标记来提供此数据库链接。有关 <catalog_database_link> 标记的描述,请参见配置文件标记

9. 如果将 Catalog Manager 和 Vending Manager 部署在不同的数据库上,则在位于 $CDS_HOME/cfg 目录下的 DBSysUser.xml 文件中为数据库创建数据库系统用户和密码:


<DBUsers>
  <DBServer name = "DBServer1">
    <User>system</User>
    <Password>dbpassword</Password>
  </DBServer>
 
  <DBServer name = "DBServer2">
    <User>system</User>
    <Password>dbsyspassword</Password>
  </DBServer>
 
</DBUsers>

 

有关 DBSysUser.xml 文件的详细信息,请参见《Sun Javatrademark System Content Delivery Server 5.1 安装指南》。

10. 关闭旧的 Catalog Manager 和(源)Vending Manager (VM) 服务器。

11. 为 VM 执行售卖读取步骤。

12. 为 VM 执行售卖写入步骤。

13. (可选)验证 VM 迁移是否成功完成。

迁移远程 Vending Manager

1. 通过添加 Catalog 元素来修改源远程 Vending Manager(表示为 RVM)的 DBConf.xml 文件,以使远程 Vending Manager 可以访问目录数据库:


<CDSDatabase>
 
    <DBServer name="DBServer1">
        <Hostname>dbhost1host.domain.com</Hostname>
        <Port>port_number</Port>
        <SID>dbsid</SID>
        <Tablespace>USERS</Tablespace>
        <Tablespace name="catalog">USERS</Tablespace>
        <Tablespace name="catalog indexes">USERS</Tablespace>
        <Tablespace name="content">USERS</Tablespace>
        <Tablespace name="content indexes">USERS</Tablespace>
        <Tablespace name="event">USERS</Tablespace>
        <Tablespace name="event indexes">USERS</Tablespace>
        <Tablespace name="subscriber">USERS</Tablespace>
        <Tablespace name="subscriber indexes">USERS</Tablespace>
        <Tablespace name="vending">USERS</Tablespace>
        <Tablespace name="vending indexes">USERS</Tablespace>
        <TempTablespace>TEMP</TempTablespace>
    </DBServer>
 
    <Catalog>
        <Prefix>5.0_schema</Prefix>
        <Password>dbpassword</Password>
        <DBServer>DBServer2</DBServer>
    </Catalog>
 
    <Vending name="cds.vending.server.1">
        <Prefix>5.0_schema</Prefix>
        <Password>dbpassword</Password>
        <DBServer>DBServer2</DBServer>
    </Vending>
 
    <DBServer name="DBServer1">
        <Hostname>dbhost2.domain.com</Hostname>
        <Port>port_number</Port>
        <SID>dbsid2</SID>
        <Tablespace>USERS</Tablespace>
        <Tablespace name="catalog">USERS</Tablespace>
        <Tablespace name="catalog indexes">USERS</Tablespace>
        <Tablespace name="content">USERS</Tablespace>
        <Tablespace name="content indexes">USERS</Tablespace>
        <Tablespace name="event">USERS</Tablespace>
        <Tablespace name="event indexes">USERS</Tablespace>
        <Tablespace name="subscriber">USERS</Tablespace>
        <Tablespace name="subscriber indexes">USERS</Tablespace>
        <Tablespace name="vending">USERS</Tablespace>
        <Tablespace name="vending indexes">USERS</Tablespace>
        <TempTablespace>TEMP</TempTablespace>
    </DBServer>
 
</CDSDatabase>

 

在本示例中,DBServer1 表示部署了源远程 Vending Manager (RVM) 的计算机。DBServer2 表示部署了源 Catalog Manager 的计算机。

Catalog 和 Vending 元素的前缀指定了 5.0(或 5.0 PU1,如果适用)模式。

在完成迁移过程后,请从此文件中删除 Catalog 元素,因为仅迁移过程需要使用此元素。

源远程 Vending Manager (RVM) 数据库的 DBConf.xml 中不包含 Catalog Manager 模式,因此,必须手动添加该信息。

有关数据库配置文件的详细描述,请参见《Sun Javatrademark System Content Delivery Server 5.1 安装指南》。

2. 在位于 $CDS_HOME/cfg 目录下的 DBSysUser.xml 文件中,为 Catalog 数据库创建数据库系统用户和密码:


<DBUsers>
  <DBServer name = "DBServer1">
    <User>system</User>
    <Password>dbpassword</Password>
  </DBServer>
 
  <DBServer name = "DBServer2">
    <User>system</User>
    <Password>dbsyspassword</Password>
  </DBServer>
 
</DBUsers>

 

有关 DBSysUser.xml 文件的详细信息,请参见《Sun Javatrademark System Content Delivery Server 5.1 安装指南》。

3. 以系统用户身份登录到源远程 Vending Manager (RVM) 数据库计算机上,并通过在位于 $ORACLE_HOME/network/admin网络配置文件 tnsnames.ora 中添加以下条目,为远程数据库名称创建本地服务名称:


database_link_name =
   (description =
      (address = (protocol = TCP) (host = source_catalog_database_host) (port = 1521))
      (connect_data =
         (server = dedicated)
         (service_name = source_catalog_sid)
      )
   )

 

4. 在登录到(源)远程 Vending Manager (RVM) 数据库后,授予SRC_RVM_VS_APP 的以下权限:

运行以下命令:


grant create any synonym to SRC_RVM_VS_APP

 

运行以下命令:


grant drop public synonym to SRC_RVM_VS_APP

 

运行以下命令:


grant create database link to SRC_RVM_VS_APP

 

5. 以 SRC_RVM_VS_APP 用户身份登录到源远程 Vending Manager 数据库。

6. 使用刚创建的本地服务名称创建数据库链接:


create database link catalog_database_link
connect to SRC_CM_PS_APP identified by SRC_CM_PS_APP_Password
using `database_link_name'

 

通过在此 Vending Manager 数据库服务器的 DBMigration.xml 文件中的 <vending> 标记部分添加 <catalog_database_link> 标记来提供此数据库链接。有关 <catalog_database_link> 标记的描述,请参见配置文件标记

7. 编辑此远程 Vending Manager 的 DBmigration.xml 文件以指向修改后的(源)DBConf.xml 文件。

8. 部署目标远程 Vending Manager (RVMX),并编辑目标 DBConf.xml 文件以指向 Catalog Manager 模式。

以下样例 DBConf.xml 文件指向所添加的 Catalog Manager 模式:


<CDSDatabase>
 
    <DBServer name="DBServer1">
        <Hostname>dbhost1host.domain.com</Hostname>
        <Port>port_number</Port>
        <SID>dbsid</SID>
        <Tablespace>USERS</Tablespace>
        <Tablespace name="catalog">USERS</Tablespace>
        <Tablespace name="catalog indexes">USERS</Tablespace>
        <Tablespace name="content">USERS</Tablespace>
        <Tablespace name="content indexes">USERS</Tablespace>
        <Tablespace name="event">USERS</Tablespace>
        <Tablespace name="event indexes">USERS</Tablespace>
        <Tablespace name="subscriber">USERS</Tablespace>
        <Tablespace name="subscriber indexes">USERS</Tablespace>
        <Tablespace name="vending">USERS</Tablespace>
        <Tablespace name="vending indexes">USERS</Tablespace>
        <TempTablespace>TEMP</TempTablespace>
    </DBServer>
 
    <Catalog>
        <Prefix>5.1_schema</Prefix>
        <Password>dbpassword</Password>
        <DBServer>DBServer1</DBServer>
    </Catalog>
 
    <Vending name="cds.vending.server.1">
        <Prefix>5.1_schema</Prefix>
        <Password>dbpassword</Password>
        <DBServer>DBServer2</DBServer>
    </Vending>
 
    <DBServer name="DBServer2">
        <Hostname>dbhost2.domain.com</Hostname>
        <Port>port_number</Port>
        <SID>dbsid2</SID>
        <Tablespace>USERS</Tablespace>
        <Tablespace name="catalog">USERS</Tablespace>
        <Tablespace name="catalog indexes">USERS</Tablespace>
        <Tablespace name="content">USERS</Tablespace>
        <Tablespace name="content indexes">USERS</Tablespace>
        <Tablespace name="event">USERS</Tablespace>
        <Tablespace name="event indexes">USERS</Tablespace>
        <Tablespace name="subscriber">USERS</Tablespace>
        <Tablespace name="subscriber indexes">USERS</Tablespace>
        <Tablespace name="vending">USERS</Tablespace>
        <Tablespace name="vending indexes">USERS</Tablespace>
        <TempTablespace>TEMP</TempTablespace>
    </DBServer>
 
</CDSDatabase>

 

在本示例中,DBServer1 表示部署了目标 Catalog Manager 的计算机。DBServer2 表示部署了目标远程 Vending Manager (RVM) 的计算机。

Catalog 和 Vending 元素的前缀指定了 5.1 模式。

9. 更新 DBMigration.xml,以使其指向修改后的 DBConf.xml(目标 DBConf 文件)。

远程 Vending Manager 部署的 DBConf.xml 中不包含 Catalog Manager 模式信息,因此,必须手动添加该信息。

10. 在部署了远程 Vending Manger 的计算机上创建 label_directory/catalog 目录。

label_directory 是文件系统位置,从源数据库中提取的数据将按照 DBMigration.xml 文件中 <label> 标记指定的方式存储到该位置。

11. 从部署了 Catalog Manager 的计算机上的 label_directory/catalog 目录中复制 .completed.success*.SSO 文件。

在确定 Catalog Manager 数据库中是否正确填充了数据时,需要使用 .completed.success 文件。.SSO 文件包含有关重新测试的内容和 ID 的数据。

12. 编辑此远程 Vending Manager 的 DBmigration.xml 文件以指向修改后的(源)DBConf.xml 文件。

通过在此 Vending Manager 数据库服务器的 DBMigration.xml 文件中的 <vending> 标记部分添加 <catalog_database_link> 标记来提供此数据库链接。

13. 关闭远程 Vending Manager (RVM)。

14. 为 RVM 执行售卖读取步骤。

15. 为 RVM 执行售卖写入步骤。

16. (可选)验证 RVM 迁移是否成功完成。

17. 在目标部署上启动 RVM

对每个远程 Vending Manager 重复步骤 1 至步骤 17。

更正路径名称差异

请记住,在执行目录写入步骤时,如果在使用网络路径时应用服务器和数据库服务器的 Content Delivery Server 主目录路径不匹配,则可能会出现问题。要更正此问题,请执行以下步骤:

1. 打开 $CDS_HOME/deployment/deployment_name/conf/SubmissionVerifierWorkflows.xml 文件。

2. 保存此文件的备份副本。

3. 将 JAR 文件的所有绝对路径替换为数据库服务器上的合适路径。

4. 执行目录写入步骤。


验证迁移完成情况

可以使用验证迁移脚本来验证数据库迁移是否成功完成。要运行验证脚本,请在提示符下输入以下命令:


$ cdsi migrate verifydb -s code -c | -v code -f file

 

其中

如果配置文件名称不是 DBMigration.xml,请使用此选项。

需要使用 -c-v 标志来标识目录或售卖步骤。

例如,在验证 Catalog Manager 迁移时,请输入以下命令:


$ cdsi migrate verifydb -s code -c 

 

在验证 Vending Manager 迁移时,请输入以下命令:


$ cdsi migrate verifydb -s code -v code

 

在完成迁移验证后,可能需要将某些内容类型设置为只读,您必须运行 SQL 命令将这些内容类型指定为只读,然后才能部署最新版本的 Content Delivery Server。有关详细信息,请参见第 1 章迁移 Content Delivery Server)中的步骤 12



注 - Catalog Search Service 和 Vending Search Service 组件使用 Solr 搜索服务器来编索内容以及处理搜索查询。请注意,在完成迁移并启动目标服务器后,生成索引可能需要一些时间。如果在迁移后立即运行搜索查询,搜索结果可能不会从全部内容集中返回匹配内容。




迁移后修改

在 Catalog Manager 和 Vending Manager 迁移完成后,必须更新对现有 Vending Manager Account Server 信息所做的任何更改,以便在 Catalog Manager 和 Vending Manager 之间启用信息同步。要更新该信息,请执行以下步骤:

1. 登录到 Catalog Manager。

2. 单击主菜单栏中的“帐户”。

控制台将显示 Vending Manager Server 的“帐户管理”页。

3. 单击要修改的 Vending Manager Server 帐户。

4. 单击“编辑”。

根据需要,更新帐户信息。要了解如何更新帐户信息,请单击控制台上的“帮助”。

5. 对每个 Vending Manager Server 帐户重复步骤 3 和步骤 4。


生成搜索索引

在完成迁移并启动目标服务器后,需要生成搜索索引。Catalog Search Service 和 Vending Search Service 组件使用 Solr 搜索服务器来编索内容以及处理搜索查询。对于每个服务,必须为 Catalog Manager 和 Vending Manager 中的内容创建索引。搜索索引是独立于内容数据库进行管理的。

要为 Catalog Manager 生成搜索索引,请登录到 Catalog Manager 管理控制台,然后在浏览器的地址字段中输入以下 URL:

http://host:port/admin/main/search_update?action=rebuild

host:port 是运行 Catalog Manager 的服务器的主机名和端口号。在生成过程完成后,将显示一条消息。

要为 Vending Manager 生成搜索索引,请登录到 Vending Manager 管理控制台,然后在浏览器的地址字段中输入以下 URL:

http://host:port/vsadmin/main/search_update?action=rebuild

host:port 是运行 Vending Manager 的服务器的主机名和端口号。在生成过程完成后,将显示一条消息。

请注意,生成索引可能需要一些时间。如果在迁移后立即运行搜索查询,搜索结果可能不会从全部内容集中返回匹配内容。有关搜索索引的详细信息,请参见《Sun Javatrademark System Content Delivery Server 5.1 系统管理指南》。