O2OA教程-安装管理及配置-平台数据库配置

1,600 阅读9分钟

一、接入第三方数据库

O2OA内置H2数据库,但系统真正上线使用时,需要更高的数据库性能。此时,可以将O2OA数据库切换到第三方商用级数据库,如Mysql等。本文以MySQL数据库为例进行说明。

一、数据库准备工作 - Mysql数据库安装

下载和安装数据库的知识并不在本博客讲述的范围,请大家百度相关的技术文章完成Mysql数据库的安装。建议版本在Mysql5.7+,推荐Mysql8。
Mysql各版本下载请参见:blog.csdn.net/kerafan/art…
Mysql安装步骤请参见:www.cnblogs.com/sshoub/p/43…
Mysql修改数据库连接数:blog.csdn.net/zhya910702/…

二、O2OA配置修改

1、关闭内置数据库

配置文件路径:o2server/config/node_127.0.0.1.json
如果没有该文件,请从目录o2server/configSample/中复制node_127.0.0.1.json文件到o2server/config目录下。
直接在configSample目录下修改配置文件将不会生效。

{
  "enable": true,
  "port":null,
  "sslEnable":false,
  "logLevel":"info",
  "isPrimaryCenter": true,
  "nodeAgentEnable": true,
  "application": {
    "enable": true,
    "port": null,
    "sslEnable": false,
    "proxyHost": "",
    "proxyPort": null,
    "forceRedeploy": true,
    "scanInterval":5,
    "includes":[],
    "excludes":[]
  },
  "web": {
    "enable": true,
    "port": null,
    "sslEnable": false,
    "proxyHost": "",
    "proxyPort": null,
    "forceRedeploy": true
  },
  "storage": {
    "enable": true,
    "port": null,
    "sslEnable": false,
    "name" : ""
  },
  "data": {             #内置数据库相关配置,可以修改端口以及是否启用
    "enable": true,     #修改enable的值为false
    "tcpPort": null,
    "webPort": null,
    "includes": [],
    "excludes": []
  },
  "dumpData":{
    "cron" : "0 0 21 * * ?",
    "size" : 14
  },
  "dumpStorage":{
    "cron" : "0 0 21 * * ?",
    "size" : 14
  }
}

2、开启和配置外部数据库信息

配置文件路径:o2server/config/externalDataSources.json
如果没有该文件,请从目录o2server/configSample/ 中复制externalDataSources.json文件到o2server/config目录下。
直接在configSample目录下修改配置文件将不会生效。
将其中的url、username、password以及enable信息修改为上述Mysql的相关信息,如:

[
    {
        "url":"jdbc:mysql://127.0.0.1:3306/X?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC",
        "username" : "root",
        "password" :"password",
        "includes": [],
        "excludes": [],
        "enable" : true
    }
]

URL参数说明如下:

useUnicode: 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true false 1.1g 
characterEncoding: 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk false 1.1g 
autoReconnect: 当数据库连接异常中断时,是否自动重新连接? false 1.1 
autoReconnectForPools: 是否使用针对数据库连接池的重连策略 false 3.1.3 
failOverReadOnly: 自动重连成功后,连接是否设置为只读? true 3.0.12 
maxReconnects: autoReconnect设置为true时,重试连接的次数 3 1.1 
initialTimeout: autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒 2 1.1 
connectTimeout: 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本 0 3.0.1 
socketTimeout: socket操作(读写)超时,单位:毫秒。 0表示永不超时 0 3.0.1 
serverTimezone: 服务器时区(避免数据与正确时间相关8小时的问题)

数据库连接URL中的数据 X01 是需要预选创建的,O2Server会自动创建数据表,但不会自动创建数据库。

设置完成后,重启o2server即可。

二、数据库驱动JAR包的更新或新增

系统支持修改已经存在的数据库驱动包,也可以添加新的驱动。

一、下载新的驱动包文件

此节内容需要自行准备,您可以在数据库官方网站上下载最新的驱动 或者合适数据库版本的驱动包。

二、替换旧的驱动包(新增驱动包)

1、将驱动包COPY到指定的目录

驱动包位置:o2server/commons/ext

O2Server扩展包位置

2、修改O2OA扩展包注册文件

新增JAR包(驱动包)后,需要修改扩展包注册文件,否则,新加入的JAR包会在服务器重新启动时进行删除。
扩展包注册文件位置:o2server/commons/ext/manifest.cfg

O2Server扩展包注册文件
请在mainfest.cfg里增加新加入的jar包名称,让服务器在启动后加载到指定的驱动文件。

三、修改外部数据库驱动,并且重新启动

添加或者更新好驱动包后,需要修改外部数据库连接配置以使服务器正确加载驱动并且连接数据库。
此节内容请参考《外部数据库配置》

三、数据库配置信息样例

本章节主要介绍O2OA支持的各种不同的数据库的连接配置信息,供开发者参考。
平台默认内置H2数据,在正式环境中建议使用外部数据库.
外部数据库通过config/externalDataSources.json配置实现.

H2

H2为内置数据库,不需要进行配置.
在node.json配置的data中进行配置.

"data": {
    "enable": true,
    "tcpPort": 20050.0,
    "webPort": 20051.0,
    "includes": [],
    "excludes": [],
    "jmxEnable": false,
    "cacheSize": 512.0,
    "logLevel": "WARN"
  }

参数说明:
enable:是否启用,如果没有可用的externalDataSources.json文件,那么默认会在节点中启用本地的H2数据库作为默认的数据库.

tcpPort:H2数据库jdbc连接端口,登录的用户名:sa,密码为xadmin的密码.数据库创建
在/o2server/local/repository/data/X.mv.db,一旦数据库文件被创建,那么该数据库的密码被创建.

webPort:H2数据库web端口,H2提供一个web端的client,此端口为web端client的访问端口.用户名sa,密码为xadmin数据库初始创建的密码.

includes:设置此数据库存储的类,默认情况下存储所有类型,如果需要对每个类进行单独的控制以达到高性能,可以将不同的类存储到不同的节点上提高性能.可以使用通配符.

excludes:在此节点上不存储的类,和includes一起设置实际存储的类,可以使用通配符.

jmxEnable:是否启动jmx,如果启用,可以通过本地的jmx客户端进行访问,不支持远程jmx客户端.

cacheSize:H2数据库缓存大小,设置H2用于作为缓存的内存大小,以M作为单位,这里默认为512M.

logLevel:默认日志级别

Mysql

支持MySQL5.7以上版本,建议使用MySQL8

数据库字符集请使用:utf8mb4

[
  {
    "url":"jdbc:mysql://127.0.0.1:3306/X?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8",
    "username" : "root",
    "password" :"password",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

Oracle

仅支持Oracle12c R2以上版本,不支持Oracle12.2以下版本(表名要支持30个以上的字符长度)

[
  {
    "url":"jdbc:oracle:thin:@//127.0.0.1:1521/orcl",
    "username" : "X",
    "password" :"password",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

DB2

支持DB2v10以上版本.

[
  {
    "url" : "jdbc:db2://127.0.0.1:50000/X",
    "username" : "db2admin",
    "password" :"password",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

DB2默认对查询长度有限制,查询的长度不能超过字段长度.由于数据会引起一下错误:

Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001
在这样的情况下可以通过设置以下参数解决:
DB2_DEFERRED_PREPARE_SEMANTICS=YES

SQLServer

支持SQL Server 2017 以上版本

[
  {
    "url" : "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=X;selectMethod=cursor;sendStringParametersAsUnicode=false",
    "username" : "sa",
    "password" :"password",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

PostgreSQL

[
  {
    "url" : "jdbc:postgresql://localhost:5432/X",
    "username" : "postgres",
    "password" :"password",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

Informix

[
  {
    "url" : "jdbc:informix-sqli://123.45.67.89:1533/X:INFORMIXSERVER=informixServer",
    "username" : "admin",
    "password" :"password",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

达梦数据库

[
  {
    "url" : "jdbc:dm://127.0.0.1/X",
    "username" : "admin",
    "password" :"password",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

人大金仓数据库

人大金仓数据库支持V7和V8两个版本,但两个版本的jdbc驱动不同.

V7

[
  {
    "url" : "jdbc:kingbase://127.0.0.1:54321/X",
    "username" : "system",
    "password" :"krms",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

V8

[
  {
    "url" : "jdbc:kingbase8://127.0.0.1:54321/X",
    "username" : "system",
    "password" :"krms",
    "includes": [],
    "excludes": [],
    "enable" : true
  }
]

四、访问和操作H2数据库

O2OA平台内嵌了H2数据库,管理员可以通过支持JDBC的客户端对H2数据库进行访问和数据操作。

O2OA默认内嵌了H2数据库,H2数据库支持两种访问方式:

一、以WEB方式访问数据库

二、以客户端形式访问数据库(JDBC)

Web访问

默认访问地址:http://hostip:20051/
20051为系统默认的H2数据库访问端口,管理员可以在node_127.0.0.1.json里对端口进行配置

连接H2数据库
参数说明

Saved Settings: Generic H2 (Server)
Setting Name: Generic H2 (Server)
Driver Class: org.h2.Driver
JDBC URL: jdbc:h2:tcp://localhost:20050/X
User Name:sa
Password: o2

20050是平台默认的H2数据库JDBC访问端口,管理员可以在node_127.0.0.1.json文件中修改该端口配置,passowrd:o2为xadmin密码。

说明:
Password同xadmin密码,平台默认管理员密码为 o2

初次登录管理端,会快较慢,请耐心等待30秒左右。

WEB客户端访问H2数据库

客户端访问

推荐客户端软件:开源数据库客户端DBeaver

DBeaver官网:dbeaver.io 或者 从其他网站下载均可,安装过程此处不做描述。

安装与使用手册:blog.csdn.net/volitationL…

客户端启动界面

相关配置说明

1、新建数据连接

新建连接

2、填写连接信息

填写连接信息

参数说明

JDBC URL: 自动生成
主机:服务器所在的主机IP,如127.0.0.1
端口:默认为20050
数据库/模式:X01
用户名:sa
密码:o2

20050是平台默认的H2数据库JDBC访问端口,管理员可以在node_127.0.0.1.json文件中修改该端口配置,passowrd:o2为xadmin密码。

客户端访问数据

其他数据库访问

其他数据库如Oralce,Mysql,SQLServer等,请自行使用相对应的数据库客户端,此处不做过多赘述。

Mavicat for MySQL

PL/SQL Developer

MySQL-Front:

下载地址:www.mysqlfront.de/

安装与使用教程:www.w3cschool.cn/mysql/mysql…

五、清除废弃的业务数据

当O2OA业务开发完成时,上线前通常需要清除已经存在的测试数据,或者演示数据。O2OA提供命令 对指定模块的业务数据进行清除。

清除测试数据

清除已存在的业务数据

服务器启动完成后,应用已经能够访问,由于开发环境可能迁移过来的模块可能包含很多测试文件,可以通过erase命令来清理垃圾数据。

erase content cms   密码(内容管理类)
erase content bbs   密码 (论坛类)
erase content pp    密码 (流程类)
erase content log   密码 (相关日志)
erase content report 密码 (相关报表)

注意:这里的密码是指的xadmin密码。

清除操作步骤

1、启动数据库服务器

启动数据库

2、启动文件存储服务器

启动文件存储服务器

3、分别执行指定的清除命令进行数据清除

清除数据

用户根据自己的需求,逐一删除指定的应用数据即可。

该操作删除的内容只是产生的业务数据,并不会影响应用的设计信息

六、压缩H2数据库

平台自带的H2数据库在使用过程中会随着数据量的增加而增长,但是并不会在删除数据后自动缩小。 所以O2OA提供了数据库压缩命令用于缩小数据库占用的空间。

操作命令说明

compact data passwd

其中passwd 是xadmin密码。压缩数据库时,请不要启动数据库。

执行压缩命令
数据库压缩命令:

compact data o2

其中o2是平台默认的xadmin密码。

如果密码已经修改过了,请使用新的密码。

正在压缩数据库

压缩时间由数据量大小而定。

数据库压缩完成

压缩完成后,H2数据库文件会有一定的缩小。

数据库文件路径:o2server\local\repository\data\X.mv.db