# 瀚高数据库项目化部署手册
北京致远互联软件股份有限公司
2026年9月修订
# 前言
瀚高数据库标准产品未支持,目前可项目化集成(有项目成功上线案例)。
项目化支持,意味着可能存在项目化适配成本,并且项目化过程中产生的BUG、以及后续OA版本升级需要额外项目化成本解决
# 推荐方案
建议选择以
Postgresql兼容方式进行数据库连接,信创工具配置如下:
# 编辑 deploytools/cfgHome/installConfig.properties
jdbcUrl=jdbc:postgresql://10.101.68.13:5867/wyx_db
jdbcDriver=org.postgresql.Driver
# 安装步骤
# V10.0SP1及以下版本
V10.0SP1及以下版本在安装时不支持直接选Postgresql数据库类型,需要选
Others类型,然后手动初始化数据库
# Tomcat中间件
1、部署OA
修改信创部署工具配置文件deploytools/cfgHome/installConfig.properties

# 开始安装
cd deploytools
./deploycli-A8N.sh
2、创建数据库及用户参考命令
# 到瀚高数据库bin目录下执行
./psql 数据库地址 -p 端口 -U 用户名
# 创建用户seeyon
CREATE USER seeyon WITH PASSWORD 'Seeyon@2026';
# 为用户seeyon创建数据库seeyon_db
CREATE DATABASE seeyon_db WITH OWNER = seeyon ENCODING = 'UTF8';
# 授权
GRANT ALL PRIVILEGES ON DATABASE seeyon_db TO seeyon;
3、手动初始化数据库
初始化sql文件位置举例:信创安装包/deploytools/file/sql/init/A8N-2/PostgreSQL/A8N-2_ALL_IN_ONE_POSTGRESQL.SQL
psql -h 数据库地址 -p 端口 -U 用户名 -d 数据库名 -f 初始化sql文件
4、修改OA数据源配置文件
# 编辑 base/conf/datasourceCtp.properties
workflow.dialect=PostgreSQL
db.hibernateDialect=org.hibernate.dialect.PostgreSQLDialect
ctpDataSource.url=jdbc:postgresql://10.101.68.13:5866/seeyon_db
ctpDataSource.driverClassName=org.postgresql.Driver
ctpDataSource.username=seeyon
ctpDataSource.password=xxxxxxx
ctpDataSource.minCount=50
ctpDataSource.maxCount=500
# 连接池1秒的新建连接数量,单位是连接个数。达到该数量触发日志跟踪
ctpDataSource.rateLimit=300
# 连接池日志debug级别是否开启,true表示打开,false表示debug级别日志不打印
ctpDataSource.log.isDebug=false
# 连接池日志路径,如果不填写,则打印到控制台
ctpDataSource.log.filepath=../logs/dbpool
# 在获取连接前是否做连接检测,0表示不检测,1表示在距离上次检测到本次{ctpDataSource.validateInterval}参数时间外才检测,2表示每次获取连接都检测
ctpDataSource.validateOnGet=1
# 做连接检查使用的sql,默认不用配置,使用jdbc自带的ping来检查,效率高
# ctpDataSource.validateQuery=select 1
# 单位秒,做连接检查socket的读超时时间,在{ctpDataSource.validateOnGet}参数为1、2时候有效
ctpDataSource.validateTimeout=5
# 单位毫秒,在获取连接前,距离上次检测连接超过多少毫秒,做连接检测。在{ctpDataSource.validateOnGet}参数为1时候有效
ctpDataSource.validateInterval=6000
# 单位毫秒,当空闲连接总数大于{ctpDataSource.minCount}时,会去清理空闲连接,空闲连接当前时间到上次被执行sql时间大于本参数,则该空闲连接会被清理
ctpDataSource.timeBetweenEvictionRunsMillis=60000
ctpDataSource.removeAbandoned=0
ctpDataSource.removeAbandonedTimeout=10800
ctpDataSource.filters=stat,1og4j
最后将pg的驱动放到ApacheJetspeed/lib下
ApacheJetspeed/lib/postgresql-42.7.5.jar
5、放置加密狗授权文件,并启动
# 信创中间件
以宝兰德955多实例版本为例
1、信创部署工具部署
修改信创部署工具配置文件deploytools/cfgHome/installConfig.properties

2、创建数据库及用户参考命令
# 到瀚高数据库bin目录下执行
./psql 数据库地址 -p 端口 -U 用户名
# 创建用户seeyon
CREATE USER seeyon WITH PASSWORD 'Seeyon@2026';
# 为用户seeyon创建数据库seeyon_db
CREATE DATABASE seeyon_db WITH OWNER = seeyon ENCODING = 'UTF8';
# 授权
GRANT ALL PRIVILEGES ON DATABASE seeyon_db TO seeyon;
3、手动初始化数据库
初始化sql文件位置举例:信创安装包/deploytools/file/sql/init/A8N-2/PostgreSQL/A8N-2_ALL_IN_ONE_POSTGRESQL.SQL
psql -h 数据库地址 -p 端口 -U 用户名 -d 数据库名 -f 初始化sql文件
4、配置数据源
- 方式一:使用OA数据源,定制JNDI (数据源配置文件在base/conf/datasourceCtp.properties)
登录宝兰德控制台,资源管理,JNDI资源,新建:
JNDI资源名称:jdbc/ctpDataSource
JNDI资源类型:javax.sql.DataSource
JNDI工厂类:com.seeyon.v3x.dbpool.datasource.DataSourceConProviderFactory
JNDI资源默认勾选“启用”

编辑实例的JVM参数:
名称:-DA8.datasource.properies.filepath
值根据实际部署路径填写:/app/besoa/V5/base/conf/datasourceCtp.properties

编辑OA数据源配置文件:
# 编辑 base/conf/datasourceCtp.properties
workflow.dialect=PostgreSQL
db.hibernateDialect=org.hibernate.dialect.PostgreSQLDialect
ctpDataSource.url=jdbc:postgresql://10.101.68.13:5866/seeyon_db
ctpDataSource.driverClassName=org.postgresql.Driver
ctpDataSource.username=seeyon
ctpDataSource.password=xxxxxxx
ctpDataSource.minCount=50
ctpDataSource.maxCount=500
# 连接池1秒的新建连接数量,单位是连接个数。达到该数量触发日志跟踪
ctpDataSource.rateLimit=300
# 连接池日志debug级别是否开启,true表示打开,false表示debug级别日志不打印
ctpDataSource.log.isDebug=false
# 连接池日志路径,如果不填写,则打印到控制台
ctpDataSource.log.filepath=../logs/dbpool
# 在获取连接前是否做连接检测,0表示不检测,1表示在距离上次检测到本次{ctpDataSource.validateInterval}参数时间外才检测,2表示每次获取连接都检测
ctpDataSource.validateOnGet=1
# 做连接检查使用的sql,默认不用配置,使用jdbc自带的ping来检查,效率高
# ctpDataSource.validateQuery=select 1
# 单位秒,做连接检查socket的读超时时间,在{ctpDataSource.validateOnGet}参数为1、2时候有效
ctpDataSource.validateTimeout=5
# 单位毫秒,在获取连接前,距离上次检测连接超过多少毫秒,做连接检测。在{ctpDataSource.validateOnGet}参数为1时候有效
ctpDataSource.validateInterval=6000
# 单位毫秒,当空闲连接总数大于{ctpDataSource.minCount}时,会去清理空闲连接,空闲连接当前时间到上次被执行sql时间大于本参数,则该空闲连接会被清理
ctpDataSource.timeBetweenEvictionRunsMillis=60000
ctpDataSource.removeAbandoned=0
ctpDataSource.removeAbandonedTimeout=10800
ctpDataSource.filters=stat,1og4j
- 方式二:使用宝兰德中间件JDBC数据源
登录宝兰德控制台,资源管理,JDBC,单数据源,新建



编辑实例的JVM参数

5、放置驱动文件到中间件lib目录下,并重启实例
/app/BES/nodes/node1/instances/seeyon1/lib/postgresql-42.7.5.jar
6、放置加密狗授权文件,并部署应用:ROOT、seeyon、static、sportal
# V11及以上版本
V11版本开始,可以直接选
Postgresql类型,不需要手动初始化数据库,其他步骤参考V10.0SP1方式
# 瀚高转换函数
按顺序逐条执行,请使用sysdba管理员用户 出现 cast already exists 时,跳过对应的 CREATE CAST。 默认模式为 public,如实际模式不同,请整体替换。
SET client_encoding = 'UTF8';
-- 1. boolean -> smallint
CREATE OR REPLACE FUNCTION public.boolean_to_smallint(boolean)
RETURNS smallint
LANGUAGE sql
IMMUTABLE
STRICT
AS $$
SELECT CASE WHEN $1 THEN 1::smallint ELSE 0::smallint END;
$$;
COMMENT ON FUNCTION public.boolean_to_smallint(boolean)
IS 'boolean -> smallint: true = 1, false = 0, NULL = NULL';
CREATE CAST (boolean AS smallint)
WITH FUNCTION public.boolean_to_smallint(boolean)
AS IMPLICIT;
-- 2. smallint LIKE integer
CREATE OR REPLACE FUNCTION public.smallintlike(smallint, integer)
RETURNS boolean
LANGUAGE sql
IMMUTABLE
STRICT
AS $$
SELECT $1::text LIKE $2::text;
$$;
CREATE OR REPLACE FUNCTION public.smallintnotlike(smallint, integer)
RETURNS boolean
LANGUAGE sql
IMMUTABLE
STRICT
AS $$
SELECT NOT public.smallintlike($1, $2);
$$;
COMMENT ON FUNCTION public.smallintlike(smallint, integer)
IS 'smallint LIKE integer';
COMMENT ON FUNCTION public.smallintnotlike(smallint, integer)
IS 'smallint NOT LIKE integer';
DROP OPERATOR IF EXISTS public.!~~ (smallint, integer);
DROP OPERATOR IF EXISTS public.~~ (smallint, integer);
CREATE OPERATOR public.~~ (
FUNCTION = public.smallintlike,
LEFTARG = smallint,
RIGHTARG = integer,
NEGATOR = OPERATOR(public.!~~),
RESTRICT = pg_catalog.likesel,
JOIN = pg_catalog.likejoinsel
);
CREATE OPERATOR public.!~~ (
FUNCTION = public.smallintnotlike,
LEFTARG = smallint,
RIGHTARG = integer,
NEGATOR = OPERATOR(public.~~),
RESTRICT = pg_catalog.likesel,
JOIN = pg_catalog.likejoinsel
);
COMMENT ON OPERATOR public.~~ (smallint, integer)
IS 'smallint LIKE integer';
COMMENT ON OPERATOR public.!~~ (smallint, integer)
IS 'smallint NOT LIKE integer';
-- 3. character varying -> smallint
CREATE CAST (character varying AS smallint)
WITH INOUT
AS IMPLICIT;
-- 4. bigint LIKE character varying
CREATE OR REPLACE FUNCTION public.bigint_and_varchar(bigint, character varying)
RETURNS boolean
LANGUAGE sql
IMMUTABLE
STRICT
AS $$
SELECT $1::text LIKE $2::text;
$$;
CREATE OR REPLACE FUNCTION public.bigint_not_and_varchar(bigint, character varying)
RETURNS boolean
LANGUAGE sql
IMMUTABLE
STRICT
AS $$
SELECT NOT public.bigint_and_varchar($1, $2);
$$;
COMMENT ON FUNCTION public.bigint_and_varchar(bigint, character varying)
IS 'bigint LIKE character varying';
COMMENT ON FUNCTION public.bigint_not_and_varchar(bigint, character varying)
IS 'bigint NOT LIKE character varying';
DROP OPERATOR IF EXISTS public.!~~ (bigint, character varying);
DROP OPERATOR IF EXISTS public.~~ (bigint, character varying);
CREATE OPERATOR public.~~ (
FUNCTION = public.bigint_and_varchar,
LEFTARG = bigint,
RIGHTARG = character varying,
NEGATOR = OPERATOR(public.!~~),
RESTRICT = pg_catalog.likesel,
JOIN = pg_catalog.likejoinsel
);
CREATE OPERATOR public.!~~ (
FUNCTION = public.bigint_not_and_varchar,
LEFTARG = bigint,
RIGHTARG = character varying,
NEGATOR = OPERATOR(public.~~),
RESTRICT = pg_catalog.likesel,
JOIN = pg_catalog.likejoinsel
);
COMMENT ON OPERATOR public.~~ (bigint, character varying)
IS 'bigint LIKE character varying';
COMMENT ON OPERATOR public.!~~ (bigint, character varying)
IS 'bigint NOT LIKE character varying';
-- 5. boolean -> integer
-- 多数数据库版本已经存在此转换;如果提示 already exists,直接跳过本条。
CREATE OR REPLACE FUNCTION public.boolean_to_int(boolean)
RETURNS integer
LANGUAGE sql
IMMUTABLE
STRICT
AS $$
SELECT CASE WHEN $1 THEN 1::integer ELSE 0::integer END;
$$;
COMMENT ON FUNCTION public.boolean_to_int(boolean)
IS 'boolean -> integer: true = 1, false = 0, NULL = NULL';
CREATE CAST (boolean AS integer)
WITH FUNCTION public.boolean_to_int(boolean)
AS IMPLICIT;
-- 6. character varying -> timestamp without time zone
CREATE CAST (character varying AS timestamp without time zone)
WITH INOUT
AS IMPLICIT;
# 其他方案
# 以瀚高原生方式连接
该方案适配涉及一定的定制开发代码,但采用该方案的项目较多,较成熟。
适配版本:8.2SP1及更高版本,参照本手册集成配置,V9.0SP1版本涉及一定的定制开发代码,见本手册开发。
瀚高数据库基础信息:
数据库url格式=jdbc:highgo://127.0.9.1:5866/test_oa?currentSchema=seeyonoa
JDBC驱动名driverClassName=com.highgo.jdbc.Driver
JDBC连接获取数据库名DatabaseMetaData.getDatabaseProductName()=PostgreSQL
驱动jar:使用瀚高数据库安装程序下的JDBC驱动jar
瀚高数据库兼容特性选择PostgreSQL
# 升级步骤
- V10.0SP1及以上版本都可以直接选
Postgresql类型数据库进行升级 - 如果客户瀚高开启了国密,无法以postgres方式连接,需升级程序适配瀚高之后才可以升级
注意如果以瀚高数据库连接方式升级,需要单独拷贝瀚高驱动文件到
deploytools/lib,例:HgdbJdbc-6.2.5.jar
dbType=Highgo
jdbcUrl=jdbc:highgo://<IP>:<port>/<数据库名>?currentSchema=<模式名>
dbUser=<数据库用户>
dbPassword=<数据库密码>
jdbcDriver=com.highgo.jdbc.Driver

升级完成之后,请取出升级日志 deploytools/upgrade.log,并上传到升级日志分析工具 (opens new window) 中分析,并确认没有问题。
# 升级转瀚高数据库提醒
如果是致远老客户,涉及升级OA,一般是先用非信创的SeeyonInstall升级到OA目标版本,再做转库。转库的字段映射请让瀚高厂商参考致远的字段对照表去做,避免转库字段错误。
瀚高数据库需要选择兼容PostgreSQL模式!瀚高数据库需要选择兼容PostgreSQL模式!瀚高数据库需要选择兼容PostgreSQL模式!
以下是标准产品不同数据类型、字段的映射关系,可提供给数据库转库厂商:
| MYSQL | ORACLE | SQLSERVER | POSTGRESQL/瀚高 | HBM文件 | POJO类型 | 场景 |
|---|---|---|---|---|---|---|
| BIGINT | INTEGER | BIGINT | INT8 | long | java.lang.Long | 主键 |
| DATE | DATE | DATETIME | TIMESTAMP(0) | timestamp | java.util.Date | 日期 |
| DATETIME | DATE | DATETIME | TIMESTAMP(0) | timestamp | java.util.Date | 日期时间 |
| DECIMAL | NUMBER | NUMERIC | NUMERIC | double | java.lang.Double | 小数 |
| INT | INTEGER | INT | INT4 (Oracle转INT8) | integer | java.lang.Integer | 整数 |
| LONGBLOB | BLOB | IMAGE | BYTEA | string | java.lang.String | 二进制对象 |
| LONGTEXT | CLOB | NTEXT | TEXT | string | java.lang.String | 大文本 |
| SMALLINT | NUMBER(4) | SMALLINT | INT2 | integer | java.lang.Integer | 数字枚举 |
| TINYINT(OA早期版本使用) | NUMBER(4) | SMALLINT | INT2 | integer | java.lang.Integer | 数字枚举 |
| VARCHAR | VARCHAR2 | NVARCHAR | VARCHAR | string | java.lang.String | 文本 |
# V9.0以上部署示例
OA版本:A8-N 9.0SP1
中间件:东方通、金蝶、宝兰德
数据库:瀚高数据库V9
关联支持项目:JSFW-2024-02180
# 部署流程
1、中间件(东方通、金蝶、宝兰德)提前准备,瀚高数据库提前准备(如果是新客户就准备一个空库,如果是老客户就做好转库)
2、参考信创环境部署手册,准备对应的XinChuang.zip信创部署包,使用信创部署工具将OA相关基础配置写入中间件中,数据库选择“不初始化数据库”
再次提醒:标准支持的中间件用信创部署工具去部署,减少部署复杂度,降低部署失败概率!!!
3、如果是新客户,由瀚高厂商安装好数据库并新建一个空库后,执行数据库初始化操作,继续使用上一步的XinChuang.zip部署包。
在XinChuang文件夹下的deploytools\file\sql\init目录中找到对应版本的PostgreSQL(A8N-1是企业版,A8N-2是集团版),如企业版命名为:A8N-1_ALL_IN_ONE_POSTGRESQL.SQL。

将SQL拷贝到瀚高数据库对应空库下,执行脚本初始化即可。
4、下一步是打客开补丁包,参考“客开适配点”章节准备补丁包并按要求放置到对应位置
客开补丁seeyon-ctp-panda.jar覆盖到OA应用程序目录下的:ApacheJetspeed\webapps\seeyon\WEB-INF\lib\
客开补丁seeyon-ctp-jdbcproxydriver.jar覆盖到中间件目录下的lib里,宝兰德覆盖到具体实例的lib,金蝶覆盖到aas/lib目录,Tomcat则覆盖到ApacheJetspeed/lib里。
特别提醒:务必先客开打补丁后再进行后续操作! 未打补丁造成的后果就是:【信创】非标准支持数据库使用JMProxyDriver时中间件报错 No suitable driver found (opens new window)
5、配置数据库JDBC相关信息:
到信创中间件的JVM配置中增加自定义参数:-Djdbcproxydriver.driverclass=com.highgo.jdbc.Driver
- 金蝶V10到管理控制台-配置管理-server-config-JVM配置-JVM选项中添加或修改此参数
- 东方通到管理控制台界面-启动参数配置-服务器参数中添加或修改此参数,如果在服务器端改jvm,路径是/TongWeb7.0/bin/external.vmoptions


到信创中间件管理控制台,新建JDBC配置:
- 新建JNDI名称必须是
jdbc/ctpDataSource - 数据库驱动类名
com.seeyon.ctp.monitor.perf.jdbcmonitor.proxyobj.JMProxyDriver - 数据库连接URL地址以瀚高厂商提供为准,一般格式为
jdbc:highgo://127.0.xx.xx(瀚高数据库ip):5866(端口)/test_oa(数据库名)?currentSchema=模式名 - 驱动要将其放置到中间件的lib下,不要手动选择驱动jar位置
关于数据库URL中的currentSchema=模式名重要参数说明:瀚高数据库支持多Schema,这里务必指向OA的Schema名称,否则会出现表单创建索引异常等问题。
驱动jar联系瀚高技术提供,告诉瀚高我们使用com.highgo.jdbc.Driver做驱动类,驱动jar放置到中间件lib里(宝兰德放到具体实例的lib,金蝶放到aas/lib目录,Tomcat放到ApacheJetspeed/lib里,东方通放到TongWeb7.0/lib下),并且要重启一次中间件。


Tomcat中间件配置数据源方法:
如果客户是Tomcat中间件,采用信创部署工具会部署OA标准适配的Tomcat,此时通过SeeyonConfig可视化是无法选择到瀚高数据库的,我们需要按下图方案来做即可连通:

6、最后是参考信创环境部署手册,去部署应用/ROOT、/static、/seeyon、/sportal,部署完成后正常启动测试即可
# 客开适配点
ctp-panda/src/main/java/com/seeyon/ctp/giant/panda/database/url/ValidateContext.java
public class ValidateContext {
忽略若干其它代码......
// 第一个修改点:增加瀚高关键字常量
public static final String HIGHGO = "highgo";
public static JdbcValidateResult connectValidate(String url, Properties info) {
忽略若干其它代码......
else if (urlTypeMatches(sourcesUrl, GBASE)) {
jdbcUrlParamsValidate = new JdbcUrlCommaParamsValidate(GBASE);
// 第二个修改点:判断数据库连接URL中带highgo关键字则走HIGHGO通路 start
} else if (urlTypeMatches(sourcesUrl, HIGHGO)) {
jdbcUrlParamsValidate = new DefaultJdbcUrlParamsValidate(HIGHGO);
// 第二个修改点:判断数据库连接URL中带highgo关键字则走HIGHGO通路 end
} else {
throw new RuntimeException("不支持的数据库类型,Url:" + sourcesUrl);
}
忽略若干其它代码.......
ctp-panda/src/main/java/com/seeyon/ctp/giant/panda/database/url/jdbcParamsBlackWhiteList.properties
opengauss.white=
opengauss.black=
# 文件最后追加两行与highgo相关的固定信息
highgo.white=
highgo.black=
ctp-panda/src/main/java/com/seeyon/ctp/giant/panda/database/url/vendorDriverUrlWhiteList.properties
kingbase8=
oscar=
# 文件最后追加一行与highgo相关的固定信息
highgo=
ctp-jdbcproxydriver/src/main/java/com/seeyon/ctp/monitor/perf/jdbcmonitor/proxyobj/ProxyDriverList.properties
com.huawei.opengauss.jdbc.Driver=jdbc:opengauss://127.0.0.1:30100/mydatabase
# 文件最后追加下面一行与highgo相关的固定信息
com.highgo.jdbc.Driver=jdbc:highgo://127.0.0.1:5866/test_oa
以上完成后编译代码,生成补丁文件并将补丁放置到准确位置:
- 将ctp-panda程序补丁打到ApacheJetspeed\webapps\seeyon\WEB-INF\lib\seeyon-ctp-panda.jar里
- 将ctp-jdbcproxydriver程序补丁打到ApacheJetspeed\lib\seeyon-ctp-jdbcproxydriver.jar里(如果不存在,则jar应该在信创中间件的lib下,则将其打到信创中间件OA实例所在lib的jar里)
打数据库客开补丁一定是打到jar包里面,具体参考下图所示:


# V9.0部署常见问题
# 初次安装能启动OA,但登录总是提示“当前已登录了一个用户”


问题原因:JDBC配置的驱动类名错了,不要用com.highgo.jdbc.Driver,必须用com.seeyon.ctp.monitor.perf.jdbcmonitor.proxyobj.JMProxyDriver,参考9.0部署章节的操作重新检查调整一下!
# CAP4表单修改保存时提示saveTableIndex Error
通常saveTableIndex Error:ERROR:relation "index_formmain_xxx_sort" already exists这种错误信息是表示:程序在判断当前数据库schema下是否存索引时返回了false,但数据又真实创建了索引导致了冲突。解决方案是在JDBC数据库URL加上currentSchema=模式名参数来指明具体的Schema。


# 部署分保插件案例
OA的分保插件也是一个可视化工具,工具只支持标准数据库,无法选择到瀚高:

要解决此问题,需要发起技术服务支持申请单,由研发提供可手动配置数据源的fenbao安装包,然后手动录入瀚高数据库信息就能使用,具体示例如下:
- 数据库:选择POSTGRESQL(因为瀚高是适配PG,所以选这个就会使用PG的SQL脚本)
- JDBCDriver:驱动类名填写瀚高原始的驱动类
com.highgo.jdbc.Driver - JDBC URL:填写瀚高标准的连接URL,如果瀚高与工具在同一个服务器,则IP就是127.0.0.1

安装成功后,必须重启一次OA,否则三员帐号无法登录:

# 瀚高数据库V9安装示例
将瀚高的安装程序hgdb-xxx.bin以及授权文件license.dat上传到Linux系统数据目录,并且给程序可执行权限chmod +x hgdb-xxxx.bin
Linux系统下需要创建一个名为db的用户,并且以db用户登录安装瀚高,瀚高不予许root下进行安装!
# 添加db用户名、设置密码
useradd -m db
passwd db
# 给所有用户开启图形化使用权限(如db采用图形化安装,则需要授权)
xhost +
# 切换到db用户下
su - db
# 找到瀚高程序,通过./hgdb-xxx.bin命令执行安装,默认以图形化形式安装:
./hgdb-xxx.bin

随后安装部署可参考瀚高部署手册进行操作,大部分都可以选择默认。
勾选“初始化数据库”,使用默认用户名highgo,自定义密码,兼容性选择默认的PostgreSQL,当前用户权限不足就不要注册数据库服务,监听地址由localhost改成*表示允许外部访问,如生产环境则最大连接数尽量调大到500以上:

启动瀚高V9数据库:
# db账号登录
su db
cd /home/db/hgdb
./start_database
停止瀚高V9数据库:
# db账号登录
su db
cd /home/db/hgdb
./stop_database
启动数据库管理工具:
# db账号登录
su db
cd /home/db/hgdb-enterprise-9.0.1/tools/manager
./Manager

创建账号和新库:
通过默认的highgo管理员,可以创建一个给OA使用的账号和空库:
-- 创建名为seeyon的用户
create user seeyon with password 'Seeyon1q2w3e';
-- 创建名为v90sp1的数据库
CREATE DATABASE v90sp1 OWNER seeyon;
以上完成后,可以尝试通过seeyon用户名登录,检查v90sp1数据库是否存在。
通过客户端Navicat选择PostgreSQL也能连接到数据,如果是新客户,可以通过数据库可视化工具导入对应OA版本的PG初始化数据脚本,以A8-N集团版客户为例,我们需要提前下载致远商务公布的安装程序XinChuang.zip安装包,解压取安装包目录下的SQL即可2.V9.0SP1_XinChuang\deploytools\file\sql\init\A8N-2\PostgreSQL\A8N-2_ALL_IN_ONE_POSTGRESQL.SQL
初始化SQL中预制了账号密码为init-admin/123456的用户,用于启动OA后的初始化操作

如果是老客户,则提供客户原产品的数据库,交给瀚高技术进行转库操作,我们只需要获得转库后的连接、账号密码即可。
# 常见问题和解决方案
# 问题1:当前数据库类型不支持初始化动作

解决:找到中间件external.vmoptions文件里的这个参数,手动改成目标数据库的驱动名即可

# 问题2:启动后初始密码无法登录oa

Login.log报错:

Error日志报错:

解决方法:
用sysdba连接对应库 执行:
create or replace function boolean_to_smallint(boolean) returns smallint
as $$
select (case when \$1=true then 1 else 0 end)::smallint;
$$ language sql strict;
create cast (boolean as smallint) with function
boolean_to_smallint(boolean) as IMPLICIT;

# 问题3:操作符不存在: smallint ~~ integer

ctp.log日志错误:
Caused by: com.highgo.jdbc.util.PSQLException: 错误: 操作符不存在: smallint ~~ integer
建议:没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.
解决方法:
用sysdba连接对应库 执行:
-- smallint like int
create function smallintlike(smallint,int) returns boolean as $$ select $1::text like $2::text $$language sql;
create operator ~~( procedure = smallintlike, leftarg = smallint, rightarg = int, negator = !~~, restrict = likesel, join = likejoinsel);
comment on operator ~~(smallint,int) is 'smallint like expression';
# 问题4: 操作符不存在: smallint = character varying
错误日志:
Caused by: com.highgo.jdbc.util.PSQLException: 错误: 操作符不存在: smallint = character varying
建议:没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.
解决方法:
用sysdba连接对应库 执行:
create cast(character varying as smallint) with inout as implicit;
# 问题5:bigint ~~ character varying
错误日志:
Caused by: com.highgo.jdbc.util.PSQLException: 错误: 操作符不存在: bigint ~~ character varying
建议:没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.
解决方法:
用sysdba连接对应库 执行:
create or replace function bigint_and_varchar(bigint,character varying) returns Boolean as
$$
select $1::varchar ~~ $2::varchar
$$
language sql;
create operator ~~(
procedure = bigint_and_varchar,
leftarg = bigint,
rightarg = character varying);
# 问题6:类型为 integer, 但表达式的类型为 boolean
错误日志:
Caused by: com.highgo.jdbc.util.PSQLException: 错误: 字段 "readonly" 的类型为 integer, 但表达式的类型为 boolean
建议:你需要重写或转换表达式
解决方法:
用sysdba连接对应库 执行:
create or replace function boolean_to_int(boolean) returns integer as $$
select (case when $1=true then 1 else 0 end)::integer;
$$ language sql strict;
create cast (boolean as integer) with function boolean_to_int(boolean) as IMPLICIT;
# 问题7:操作符不存在: bigint = character varying
错误日志:
com.highgo.jdbc.util.PSQLException: 错误: 操作符不存在: bigint = character varying
建议:没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.
解决方法:
用sysdba连接对应库 执行:
create cast(character varying as timestamp without time zone) with inout as implicit;