# 合版工具使用说明

北京致远互联软件股份有限公司 2024年6月

# 适用范围及用途

范围:适用于V5产品线V8.0及以上版本。

用途:多套相同版本和产品线的集团版/多组织版合并为一套集团版/多组织版。

需检查这几套协同系统是否从一套数据库复制而来,在此基础做了改名。对于此类项目不适合用该合版工具。 仅适合每套都使用标准的安装、初始的协同系统。

暂不支持不同版本合版,也不支持企业版/单组织版合版,这类产品可通过升级到相同版本+转版到集团版/多组织版后进行合版。

# 合版须知

# 统一术语

为避免歧义,下面文档对被合并的系统称为从属方,相对的另一方称为主导方。

# 执行者需要具备以下知识和技能

1、数据库导出和导入:能够进行数据库的导出、导入操作,了解导出、导入流程以及可能遇到的问题和解决方案。

2、操作系统文件复制:熟悉操作系统的文件复制操作,包括文件的拷贝、移动、删除等操作,并了解如何处理文件权限和属性。

请注意,这些要求是为了确保操作的安全性和准确性,避免数据丢失或损坏。在执行操作前,请确保您已经充分了解并掌握了相关的知识和技能。

# 基本要求

多套系统合版为一套,必须满足如下要求:

1、产品线相同:支持多套A8+合版,支持多套A8-N合版,不支持A8+、A8-N混合合版。

2、版本号(含BuildID)相同:如支持多套V8.2 B230831合版,不支持 V8.2 B230415V8.2 B230831 合版(BuildID不一致),也不支持 V8.2V8.2SP1 合版(版本号不一致)。

3、数据库相同:支持多套Oracle合版,多套DM达梦合版,不支持MySQL、高斯forMySQL不同数据库产品合版。

4、数据结构相同:每一套系统相同表字段及字段类型要完全保持一致。如多套系统ORG_MEMBER表字段和类型相同支持合版,如A系统有ORG_MEMBER.NAME,B系统没有则无法合版。

如果不满足以上要求,则需要通过别的工具实现同产品线、同版本、同数据库、同数据结构后再进行合版。涉及动作如下:

第一步,确认合版系统的产品线、版本号、数据库信息,制定可行的升级、转版、转库路线,涉及数据库升级转换等操作均要提前做好备份,示例如下:

1715761447233.png

第二步,检查最终的数据库表结构,确保每一套系统的相同数据库表字段、类型结构一致,如不一致,需要项目组技术分析解决,涉及数据库升级转换等操作均要提前做好备份。示例如:

1715761464618.png

需求场景示例:上级集团B(主导方)协同管理软件需要升级并转版信创A8-NV8.2SP1集团版,使用达梦数据库;其子单位A(从属方)协同管理软件需要并入集团统一管控。

# 执行方案建议

# 1、单位A路线

1)使用安装程序升级至A8+ 企业版V8.2SP1,sqlserver数据库

2)使用转版工具将A8+ 企业版V8.2SP1转版集团版

3)使用转库工具将sqlserver数据库转为Oracle数据库(与上级集团Oracle数据库版本一致)

4)升级后验证单位A基础功能

5)使用合版工具将单位A的数据做处理,完成以后导出处理后的数据

# 2、集团B路线

1)使用安装程序升级至A8+ 集团版V8.2SP1,Oracle数据库

2)将子单位A的同版本、同数据库已被合版工具处理后的数据库备份,导入合并到集团的数据库中(提前做好数据备份)

3)将子单位A的附件upload合并到集团的附件upload(提前做好附件备份)

4)验证合并后的协同管理软件集团版基础功能;子单位业务包过户给上级集团需要研发支持单独处理

5)将验证后的Oracle数据迁移至达梦数据库

6)信创环境上检查客开功能以及子单位A的基础功能

# 关于从属单位版本升级

若从属单位需要版本升级,并且从V8.1之前版本升级到V8.1及更高版本,此时之前的管理员权限会被撤销,需在升级或者合版之后对从属单位的管理员进行重新按角色授权。

# 关于空间数据

因模块兼容问题,不合并空间数据。

# 关于客开

1、若对标准产品数据库的表做过字段增加,需要进行技术分析处理,相关处理意见在上一章节有陈述。

2、多套系统的客开功能不同,需要确认客开功能如何合并、如何适配到最终版本。

# 大数据风险应对

1、需要提前考虑多套产品合并以后CTP_AFFAIR等等数据表的数据量带来的性能问题风险,多套产品合版以后表的数据量是累加。

2、根据现有大数据客户案例,非信创数据库在物理服务器硬件资源充足的情况下,合版后数据在5000万行记录以上,建议进行优化处理,处理方向根据实际情况操作:

1)方案一:跟客户沟通,不做全部数据合并,只保留一定时间范围内的数据;

2)方案二:使用历史数据分库组件(当前只支持协同、表单,不支持公文、信创环境);

3)方案三:项目化定制开发实现按年拆分大表,或基于数据库特性适配读写分离特性。

# 关于合版后子单位业务包的处理

因为业务包存在单独加密授权,子单位的业务包过户给集团,需要走《业务应用包授权变更申请》流程。系统如果可以连接功能,流程完成后在系统刷新授权完成过户。

如果无法连接公网,请根据申请提示更新数据库。

# 关于合版工具成本

商务报价时,不要只计算合版工具成本,如果多套系统不满足同版本、同库、同字段的基本要求,需要额外采购并计算升级、转版、转库、定制化等实施运维客开成本。

# 关于研发支持

除《关于合版后子单位业务包的处理》外,其他过程不需要研发支持,整个过程实施团队可独立完成。

# 合版工具实施流程

# 项目实施步骤:

合并多个单位的数据,一般会跨服务器,甚至地域。整个过程主要分为下面几类:

  1. 使用合版工具对数据进行调整

  2. 特殊情况下需使用其他工具(转版工具、转库工具)对版本、数据库进行调整

  3. 数据库厂商的导出、导出工具

  4. 数据库的拷贝、附件的合并

流程如下:

# 整个过程为:

从属方协同管理软件相关操作

  1. 导出当前协同的数据库;

  2. 复制协同附件;

  3. 复制以上两份数据到可靠存储,并在其他存储上放一份,作为安全备份;

  4. 复制协同应用及配置(V5目录)到可靠存储;

  5. 将协同管理软件产品升级、转版、转库至目标版本目标数据库;

  6. 使用合版工具进行子单位数据的处理;

  7. 用数据库厂商工具导出合版工具处理后的数据库数据;

主导方协同管理软件相关操作

  1. 导出当前协同的数据库;

  2. 复制协同附件;

  3. 复制以上两份数据到可靠存储,并在其他存储上放一份,作为安全备份;

  4. 复制协同应用及配置(V5目录)到可靠存储;

  5. 如果已经是目标版本目标数据库类型,则跳过此步,否则将协同管理软件产品升级、转版、转库至目标版本目标数据库;

  6. 将从属方经过合版工具处理后的数据库数据导入主导方数据库;

  7. 将从属方附件upload复制至主导方附件upload,确保路径对应,即年份相同;

  8. 将从属方的业务包过户给主导方,需要研发支持单独处理;具体说明见上方须知;

  9. 客开功能处理,验证功能;

# 各步用时参考

下面为常见服务器性能下的耗时预估,作为项目计划参考。不同不服务性能差异会比较大,建议预留充足时间。

主要步骤 数据库大小50GB
1 执行合版工具 1小时
2 导出数据库 1小时
3 导入数据库 2小时
4 转移数据(拷贝附件1T,以及数据库) 8小时,可提前拷贝节约时间到1小时

左侧为每套系统的大致用时,若多套系统,需考虑是否可以并行操作,以及其他因素对数据转移的耗时影响。

# 合版工具部署

将合版工具放置在与产品ApacheJetspeed平级的目录;

combine-edition/conf目录下需要放置授权文件mergeedition.seeyonkey(商务提供)

# 合版工具操作

# 启动

Windows环境下启动start.bat

Linux和国产化操作系统环境下启动start.sh

启动成功后,可以看到如下界面:

请阅读使用说明并勾选后再点击开始使用,会进入到数据库配置页面,若将合版工具放置在与产品ApacheJetspeed平级的目录,工具会将数据库信息自动解析出来。

# 数据库连接配置

若未将工具按推荐路径放置,此处需要通过应用部署里浏览按钮进行目录选择,目录位置选择到协同base目录即可,非信创环境下,数据库信息在选择路径后,也可以自动解析出来。

对于数据库信息自动解析到的情况,可以点击测试链接看数据库连接是否正常,若连接正常,导入授权文件后点击下一步即可。

若环境为信创环境,目录仍旧是选择到协同 base 目录下,并且手动输入数据库信息,测试链接无误后,导入授权文件,然后点击下一步即可。

点击下一步后,若配置信息验证通过后,会进入到单位信息页面,

若存在默认单位ID,会展示默认单位相关信息,并生成新ID,手动设置动态表后缀名后即可进行下一步。

# 表后缀设置

点击下一步开始清理静态表数据

# 静态表修改

点击下一步开始修改动态表表名

# 动态表修改

# 未使用默认单位ID

若未使用默认单位ID,仅显示动态表后缀:

点击下一步开始修改动态表的名称

# 数据处理完成

# 主导方数据库调整

修改主导方数据库索引

在主导方数据库中执行下面语句:

drop index IDX_CAP_CONTROL_KEY_VALUE on cap_control;
create unique index IDX_CAP_CONTROL_KEY_VALUE on cap_control(KEY_VALUE); create unique index IDX_ctp_formulas_name on ctp_formulas(formula_name);
create unique index IDX_form_custom_function_name on form_custom_function(function_name);

# 导出、导入数据

使用数据库厂商提供的导出、导入工具把调整后的数据库合并入目标数据库。

# 注意事项

因每个数据库中存在预置的相同数据,在导入时确保遇到相同主键的数据可以跳过,不同的数据可以正常合并。下面列出不同数据库需要注意的导入参数。

下面示例可根据实际情况进行调整。

# Oracle

# 导出示例:

在从属方数据库中执行:

$ sqlplus / as sysdba

SQL>create directory dmp_dir as '/usr/local/tomcat';

SQL>grant read,write on directory dmp_dir to public;

$ expdp 用户名/密码@orcl DIRECTORY=dmp_dir DUMPFILE=从属方数据库.dmp logfile=exp从属方.log;
# 导入示例

在导入时,impdp命令必须包含下面两个参数:

TABLE_EXISTS_ACTION=APPEND data_options=SKIP_CONSTRAINT_ERRORS

在主导方数据库执行:

$ sqlplus / as sysdba

SQL>create directory dmp_dir as '/usr/local/tomcat';

SQL>grant read,write on directory dmp_dir to public;

$ impdp 用户名/密码@orcl directory=dmp_dir dumpfile=从属方数据库.dmp TABLE_EXISTS_ACTION=APPEND  data_options=SKIP_CONSTRAINT_ERRORS

如果 从属方数据库和主导方数据库账号名不同,添加下面参数:

REMAP_SCHEMA=user1:user2 

如果 从属方数据库和主导方表空间不同,添加下面参数:

remap_tablespace=user1space:user2space

例如:

$ impdp 用户名/密码@orcl directory=dmp_dir dumpfile=从属方数据库.dmp TABLE_EXISTS_ACTION=APPEND data_options=SKIP_CONSTRAINT_ERRORS REMAP_SCHEMA=user1:user2 remap_tablespace=user1space:user2space

# 导入后主导方数据库调整

为避免一致文号脏数据引起的问题,请在导入后,在主导方数据库执行下面语句:

Oracle使用下面语句

delete from ctp_config where  CONFIG_CATEGORY ='edoc_mark_year' and config_item='edoc_mark_year_cuurent' and org_account_id=1 and MODIFY_DATE not in (select max(MODIFY_DATE) from ctp_config  where  CONFIG_CATEGORY ='edoc_mark_year' and config_item='edoc_mark_year_cuurent' and org_account_id=1 group by config_category, config_item, org_account_id);

Mysql使用如下语句

elete from ctp_config where  CONFIG_CATEGORY ='edoc_mark_year' and config_item='edoc_mark_year_cuurent' and org_account_id=1 and CONFIG_VALUE not in (select temp.max_id from (select max(CONFIG_VALUE) as max_id from ctp_config group by config_category, config_item, org_account_id) as temp); 

注意:务必在导入后,启动协同之前执行。否则一旦启动协同就会产生脏数据。

# 功能测试验证

合版工具是对系统全部数据的合并,即所有功能的数据。

在合并完成,启动协同及相关服务后,请对协同系统用到的所有模块进行测试验证。

# 失败情况处理

对于可能错误分类如下:

  1. 断电、硬件故障等中途故障导致未能正常结束,请根据所处阶段重新执行相关步骤。

    a. 备份步骤出错,请重新备份。

    b. 导入步骤出错,请先恢复目标库,再重新导入

    c. 拷贝(转移导出数据)出错,请重新拷贝。

  2. 转库工具执行异常,未正常结束。(未看到修改完成提示窗)

    a. 请重新执行转库工具,后续步骤继续执行。

# 常见问题

# 1、M3接收测试消息问题

合版后测试防止消息发送到生产环境。因合版测试环境大都合并的是实际生产数据,若不想在测试时发送消息到生产账号的移动端,请在测试前使用下面功能注销所有移动端。

# 2、致信图标显示问题

若不显示致信图标,请先判断有没有致信(zx)插件商务授权和是否国产化环境。

# 3、会议联络员角色

只有购买会议管理(高级版)插件才会显示该角色。只具备会议管理普通版插件不会显示该角色。

编撰人:leigf、het、chenxy