# 虚谷数据库项目化部署手册

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

文档来源:政务事业群,公司内部关联资料:《V9.0适配虚谷交付物》

成功项目:JSFW-2024-00590、JSFW-2024-01327

# 基础信息

虚谷数据库标准产品未支持,目前可项目化支持适配,适配方案不保证所有功能绝对可用,并且OA版本后续升级的成本比其他标准支持的数据库要高。

项目化支持,意味着可能存在项目化适配成本,可能存在缺陷,并且后续产生的BUG可能需要额外项目化成本解决

  • 项目化适配版本:V9.0SP1及更高版本
  • 中间件:宝蓝德955
  • 虚谷数据库版本:XuguDB V11 集中式部署产品
  • 项目化人天:开发5人天,测试2人天,实施部署成本另算

虚谷数据库基础信息:

数据库url=jdbc:xugu://127.0.0.1:5138/V90?char_set=UTF8&compatibleoracle=true&KEYWORD_FILTER=POLICY
JDBC驱动名driverClassName=com.xugu.cloudjdbc.Driver
JDBC连接获取数据库名DatabaseMetaData.getDatabaseProductName()=Oracle
驱动jar:xugu-jdbc-12.3.0.jar

由于数据库URL和JDBC驱动非标准,需要定制开发代码,适配点参考【适配第三方数据库方案 (opens new window)】。

通过select version;查询数据库信息:

1729487877580.png

# 验证范围

未做性能验证,仅做功能层面项目化冒烟测试,协同验证主业务场景:

  • 协同:自由流程、cap3、cap4 (督查督办)
  • 公文:加签、套红、领导批示、代录批示、转公告、转事务、转协同、归档、转督办、续办、公文查询、公文统计
  • 会议(基础会议、高级会议、无纸化会议),能新建开启结束会议、记录纪要
  • 文化建设:公告、新闻、讨论
  • 文档中心:归档、新建文件
  • 首页门户等

# 虚谷数据库维护

数据库安装部署由数据库厂商执行,OA需要提供相关的初始化数据库脚本(新客户),或客户的原生产数据脚本(老客户转库)由数据库厂商转库。

以下是个人部署示例,本例是Windows虚谷数据库绿色免安装版本。

# 数据库部署配置

1、虚谷数据库服务维护和启动

设置内存等参数:Windows版本Xugu目录/SETUP/xugu.ini

# 降低口令强度(个人使用,生产上线慎重)
pass_mode = 2;  口令模式 1:不重复字符或数字,2:字母+数字,3:字母+数字+符号
# 字符集由GBK改成UTF8,OA都用UTF8(生产上线以虚谷厂商为准,建议尽量UTF8,不然后面忘记设编码就会乱码)
def_charset = "UTF8";

# 系统缓冲区设置(个人使用,根据本身电脑配置调大一些)
data_buff_mem = 1024;  数据缓冲区内存(单位:M)
swap_buff_mem = 256;  交换缓冲区内存(单位:M)
system_sga_mem = 512;  系统全局区内存(单位:M)

然后,双击XuguDB目录/BIN/xugu_start.bat启动数据库,不用以管理员身份启动

虚谷默认内置如下信息:

服务器地址127.0.0.1
端口5138
实例名SYSTEM
帐号SYSDBA
密码SYSDBA

1729178542584.png

# 新客户:创建OA库并初始化脚本

# 创建OA数据库

使用虚谷自带的XGConsole工具:登录SYSTEM库、新建OA数据库、新建OA用户、授予OA用户管理员权限,最后使用新建OA用户登录,执行脚本初始化。

准备好XGConsole.exe工具,通过cmd命令执行XGConsole.exe nssl 127.0.0.1 5138 SYSTEM SYSDBA SYSDBA登录到虚谷数据库。

1729182589012.png

SYSDBA登录到SYSTEM数据库后,创建一个新的数据库给OA用、创建与库同名的新用户、授权新用户为管理员,注意设置字符集为UTF8:

-- 检查当前登录用户字符集,如果是GBK则改成UTF8
SELECT SYS_CONTEXT('USERENV', 'LANGUAGE') FROM dual;
-- 设置当前用户字符集为UTF8
SET NAMES 'UTF8';
-- 创建数据库
CREATE DATABASE seeyonv5 CHARACTER SET 'UTF8';
-- 切入新数据库下
USE seeyonv5;
-- 创建与数据库同名的用户,必须同名! CREATE USER 用户名 IDENTIFIED BY '密码';
CREATE USER SEEYONV5 IDENTIFIED BY 'SEEYONV5';
-- 设置新用户为管理员
GRANT DBA TO SEEYONV5;

以上完成后,可以开一个新的cmd窗口,执行命令XGConsole.exe nssl 127.0.0.1 5138 新数据库 新用户名 用户密码登录,如果登录成功则说明数据库创建成功!

如果按照本示例执行,数据库和密码都相同,登录OA库的命令就是:XGConsole.exe nssl 127.0.0.1 5138 SEEYONV5 SEEYONV5 SEEYONV5

1729182759610.png

虚谷技术推荐使用DBeaver做数据库可视化工具维护SQL,虚谷安装程序自带的XuguManager不推荐使用。

DBeaver由虚谷技术提供,里面内置了Xugu数据库插件

当以上完成后,用新用户登录同名数据库,登录成功则表示一切正常(也可以随意create一个table,如果create table成功则权限也正常):

1729182814372.png

# 新客户:初始化OA脚本

虚谷高度兼容Oracle,初始化脚本可以选择Oracle,但是需要调整几个点:

稳妥起见,也可以自己安装一套MySQL初始化脚本,使用虚谷的MySQL转虚谷数据库工具直接转换

1、从商务公布的安装程序-下载XinChuang.zip部署包,从包中取init目录相关产品下的Oracle脚本:

1729175017687.png

2、文本编辑器打开,匹配大小写,全局将INTEGER替换为BIGINT(注意带一个左空格)

1729174485902.png

3、匹配大小写,全局将DATE替换为DATETIME(注意带一个左空格)

1729174768957.png

4、匹配大小写,全局将POLICY替换为"POLICY"(注意两边均带上一个空格),POLICY在虚谷数据库是关键字

1729175200731.png

5、ALL-IN-ONE中,以下两个ALTER SESSION删除,虚谷不需要:

ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF';

6、使用虚谷的Console工具,通过命令进入数据库:XGConsole.exe nssl 127.0.0.1 5138 SEEYONV5 SEEYONV5 SEEYONV5

7、Console工具下,通过EXECFILE2命令快速把脚本导入数据库,注意设置字符集为UTF8:

-- 设置当前用户字符集为UTF8
SET NAMES 'UTF8';
-- USE命令,确保切换到OA数据库
USE SEEYONV5;
-- 执行转换后的数据库初始化脚本
EXECFILE2 D:\XuguDB\A8N-2_ALL_IN_ONE_Xugu.SQL

用户SEEYON90SP1用户登录SEEYON90SP1数据库后,通过SQL编辑器导入Oracle的初始化脚本,选择执行SQL脚本,执行需要几分钟左右时间,耐心等待:

1729183228244.png

8、导入完成后,可以直接在Console控制台查询数据(控制台下需要切换回GBK才能看到中文,否则乱码)

1729183324932.png

9、也可以通过DBeaVer查看到表结构,检查一切正常则OK。

1729183383335.png

如果你嫌弃本方法太过复杂,也可以参考“老客户:虚谷迁移工具转库”章节,将初始化SQL导入到MySQL,然后用工具自动转储虚谷数据库。

# 老客户:虚谷迁移工具转库

本实例是按步骤迁移数据库至V90,迁移库的方法也非常简单:

比如本地有一套MySQL的OA脚本,使用虚谷迁移工具连接上MySQL,然后配置虚谷的目标库,再做一定的配置即可迁移。

# 协同服务部署

1、打虚谷数据库项目化适配补丁(需要项目组根据OA版本做定制开发,修改)

由于数据库URL和JDBC驱动非标准,需要定制开发代码,适配点参考【适配第三方数据库方案 (opens new window)】。

Tomcat中间件可以将补丁打好后放置到/seeyon/WEB-INF/lib下对应jar里

信创中间件则需要将补丁包放置到协同/seeyon/WEB-INF/lib下,部分放到中间件lib下。

2、虚谷数据库驱动jar放置

Tomcat中间件将驱动jar放置到ApacheJetspeed\lib下

信创中间件(如宝兰德)将驱动jar放置到中间件实例lib下

3、虚谷数据源配置

如果是标准产品默认的Tomcat中间件,直接修改: base/conf/datasourceCtp.properties中数据源信息:

ctpDataSource.url=jdbc:xugu://127.0.0.1:5138/V90?char_set=UTF8&compatibleoracle=true&KEYWORD_FILTER=POLICY
ctpDataSource.driverClassName=com.xugu.cloudjdbc.Driver
ctpDataSource.username=V90
ctpDataSource.password=seeyon@123

宝蓝德中间件数据源配置,参照下图:

名称:必须是jdbc/ctpDataSource
数据库驱动供应商:根据实际情况选择,找不到就选“Other”其它
资源类型:默认java.sql.Driver
数据库驱动类名:com.xugu.cloudjdbc.Driver
数据库驱动路径:放置到中间件lib下后,有的中间件无需配置
主机名、端口、数据库名、用户名、密码根据实际情况填写
数据库URL(IP、端口、数据库名根据实际情况填写,?文号后面的参数建议参考本手册操作):jdbc:xugu://10.1.203.225:5138/SEEYONV5?char_set=UTF8&compatibleoracle=true&KEYWORD_FILTER=POLICY

1729216998358.png

3、以上完成后,启动系统即可。

# 客开代码适配点

ctp-studio参照项目:成都虚谷伟业科技有限公司

修改工程如下:

1731771467344.png

容易遗漏点:

# 常见问题

# 1、启动服务报错

解决:

替换驱动包为xugu-jdbc-12.2.6.jar,

将jdbc url增加参数compatibleoracle=true,走Oracle方言

# 2、创建单位报错

解决:虚谷与Oracle的区别,部分系统表没有,需换成虚谷的系统表

# 3、创建单位报错:角色枚举报错

解决:代码业务问题

# 4、CAP4初始化报错

解决:代码业务问题,CAP4同事改出来的问题,将初始化参数改了,但是未修改读参业务

代码解决或恢复到V9.0 20240329版本,则不存在该问题

# 5、拟文报错

解决:使用了虚谷数据库的关键字

将jdbc url增加参数KEYWORD_FILTER=POLICY,忽略掉该关键字

# 6、发起督办数据后点击"签收"没有反应

解决:代码业务问题,V9.0开发修改导致

# 7、CAP4设置表单第一次保存成功,第二次就失败

原因是每次保存时会校验当前表单是否存在索引,如果不存在就创建。由于程序兼容问题,程序一直判断不存在索引导致重复创建,结果又创建不成功,就异常了。

1731771926774.png

解决方案是:调整判断索引是否存在的代码,兼容虚谷数据库的算法:

1731772490849.png

1731772513639.png

1731772879727.png

创建人:het
修改人:het、xiey