1.1 问题描述
安装部署FineReport 报表工程时,会创建数据库 FineDB。FineDB 用来存储 FineReport 自带的报表管理系统(数据决策平台)信息,比如平台用户信息、权限设定信息等。
初次安装部署工程时,可以选择 FineDB 为内置数据库或外接数据库,详细内容可以参考:决策系统简介
若用户选择了 FineDB 为外接数据库, 实际使用中,当 FineDB 外接数据库无法连接或者需要进行工程迁移时,就需要将 FineDB 回迁,从外接数据库变换成内置数据库。
1.2 实现思路
在管理系统中手动备份平台配置 FineDB 文件,用备份的文件替换原有文件,删除外接数据库配置「db.properties」文件后即可还原为内置数据库。
2.1 备份平台配置
1)登录管理员账号,进入「管理系统>智能运维>备份还原」,点击「平台配置」,可以看到备份界面,如下图所示:

注:若备份界面无内容显示,说明 FineDB 为内置数据库,在「管理系统」>「常规」界面,「外接数据库」位置可以查看是否配置外接数据库。
2)在「管理系统>智能运维>备份还原>平台配置」界面,点击「手动备份」后,弹出「备份设置」窗口,点击「确定」,若需要修改名称可以在「名称」处修改,如下图所示:

2.2 替换FineDB库
1)进入报表工程目录%FR_HOME%\webapps\webroot\backup\config\manual,找到刚才备份的文件,如下图所示:

2)点击备份文件,解压备份文件中的「config」文件夹,得到「finedb」数据库文件,如下图所示:

3)复制「finedb」数据库文件,替换报表工程目录%FR_HOME%\webapps\webroot\WEB-INF\embed下的「finedb」文件,如下图所示:

2.3 删除配置文件
进入%FR_HOME%\webapps\webroot\WEB-INF\config 目录,删除「db.properties」文件。该配置文件保存的是外接数据库的配置,删除即还原为内置数据库,如下图所示:

2.4 重启报表工程
重启报表工程后,用管理员账号登录,在「管理系统」>「常规」界面,「外接数据库」位置可以看到已显示「待配置」,说明 FineDB 已还原为内置数据库,如下图所示:

3.1 外置数据库迁移到 Oracle 数据库
本文介绍内容为外置数据库迁移到内置 HSQL 数据库,如果用户需要将外置数据库迁移到 Oracle 数据库,需要注意本节所述内容。
有两条主键 ID ,区别为结尾是否带空格。例如「config」和「config 」,Oracle 数据库会认为是不同的数据,HSQL 数据库认为是相同的数据。FineDB 数据库通常只有 fine_conf_entity 会有结尾带空格的情况。
在备份时需要做如下处理:将结尾为空格的数据结尾处加上'__BL__',在还原时再去掉。在这种情况下,若用本文的方法,将备份文件拷贝至 embed 文件夹,再迁移出去后,需要执行update fine_conf_entity set id = replace(id, '__BL__', '')做脏数据处理。