# 虚谷数据库项目化部署手册
北京致远互联软件股份有限公司 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;
查询数据库信息:
# 验证范围
未做性能验证,仅做功能层面项目化冒烟测试,协同验证主业务场景:
- 协同:自由流程、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
# 新客户:创建OA库并初始化脚本
# 创建OA数据库
使用虚谷自带的XGConsole工具:登录SYSTEM库、新建OA数据库、新建OA用户、授予OA用户管理员权限,最后使用新建OA用户登录,执行脚本初始化。
准备好XGConsole.exe工具,通过cmd命令执行XGConsole.exe nssl 127.0.0.1 5138 SYSTEM SYSDBA SYSDBA
登录到虚谷数据库。
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
虚谷技术推荐使用DBeaver做数据库可视化工具维护SQL,虚谷安装程序自带的XuguManager不推荐使用。
DBeaver由虚谷技术提供,里面内置了Xugu数据库插件
当以上完成后,用新用户登录同名数据库,登录成功则表示一切正常(也可以随意create一个table,如果create table成功则权限也正常):
# 新客户:初始化OA脚本
虚谷高度兼容Oracle,初始化脚本可以选择Oracle,但是需要调整几个点:
稳妥起见,也可以自己安装一套MySQL初始化脚本,使用虚谷的MySQL转虚谷数据库工具直接转换
1、从商务公布的安装程序-下载XinChuang.zip部署包,从包中取init目录相关产品下的Oracle脚本:
2、文本编辑器打开,匹配大小写,全局将INTEGER
替换为BIGINT
(注意带一个左空格)
3、匹配大小写,全局将DATE
替换为DATETIME
(注意带一个左空格)
4、匹配大小写,全局将POLICY
替换为"POLICY"
(注意两边均带上一个空格),POLICY在虚谷数据库是关键字
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脚本,执行需要几分钟左右时间,耐心等待:
8、导入完成后,可以直接在Console控制台查询数据(控制台下需要切换回GBK才能看到中文,否则乱码)
9、也可以通过DBeaVer查看到表结构,检查一切正常则OK。
如果你嫌弃本方法太过复杂,也可以参考“老客户:虚谷迁移工具转库”章节,将初始化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
3、以上完成后,启动系统即可。
# 客开代码适配点
ctp-studio参照项目:成都虚谷伟业科技有限公司
修改工程如下:
容易遗漏点:
# 常见问题
# 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设置表单第一次保存成功,第二次就失败
原因是每次保存时会校验当前表单是否存在索引,如果不存在就创建。由于程序兼容问题,程序一直判断不存在索引导致重复创建,结果又创建不成功,就异常了。
解决方案是:调整判断索引是否存在的代码,兼容虚谷数据库的算法: