Skip to content

**# openPlant常见问题和解决方法

数据库启动失败解决办法

1、数据库服务端口冲突

查看系统日志log/openPlant.log,存在记录:E global start network service failed;
修改config/config.xml中port="8200"参数,默认8200端口,如若冲突请修改为其他空闲端口;

2、 数据库启动失败,日志无异常,界面启动提示: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作

原始分析:
由于系统缺少足够的缓冲区空间或队列已满,无法对套接字执行操作。
大概率是因为服务器上操作系统的tcp连接被用完。
有些操作完成后没有正常关闭,导致大量连接处于CLOSE_WAIT状态,直到计算机再也找不到可供使用的端口。
解决方法:使用命令:netstat -a/netstat -ano 查看,会发现大量的tcp已连接,未关闭,确定问题进程后,停止相关异常连接的进程,然后再去启动数据库。

解决方法:增加端口数量 或者减少CLOSE_WAIT等待时间

3、缺少数据库授权文件

查看系统日志log/openPlant.log,存在记录:E Licensed to invalid, -1;
检查license/license.xml是否存在,请将文件放置至正确路径,若无授权文件请联系麦杰公司申请;

4、数据库授权文件不完整或为空

查看系统日志log/openPlant.log,存在记录:E Licensed to invalid, -2;
1:检查license/license.xml内容是否完整,是否正确,若有必要请联系麦杰公司申请;
2:检查获取机器码工具是否为管理员获取,非管理员获取机器码将无法启动程序。

5、数据库授权验证文件不完整或损坏

查看系统日志log/openPlant.log,存在记录:E Licensed to invalid, -7;
1:检查license/license.cer是否完整,是否损坏,若有必要请联系麦杰公司申请;
2:检查获取机器码工具是否为管理员获取,非管理员获取机器码将无法启动程序。

6、授权文件中机器码错误

查看系统日志log/openPlant.log,存在记录: E Licensed to invalid, -3;
执行licrep.exe(Linux系统执行licrep),获取数据库服务器机器码。
和license/license.xml中机器码对比,如若不匹配,请联系麦杰公司重新申请;

7、授权文件中产品类型错误

查看系统日志log/openPlant.log,存在记录: E Licensed to invalid, -3;
查看license/license.xml中产品类型,应为name="openPlant",如若不匹配,请联系麦杰公司重新申请;

8、数据库授权到期

查看系统日志log/openPlant.log,存在记录: E Licensed to invalid, -3;
或者类似日志:2020-09-18 10:59:10 E global exit on license error -10
查看license/license.xml中过期时间,如若授权到期,请联系麦杰公司重新申请;

9、数据库DB文件容量超过授权文件限制

查看系统日志log/openPlant.log,存在记录:
manager CreateObject: number of object reaches limitation
E manager create object at 4 error -106
检查license/license.xml中数据库容量,如需扩容,请联系麦杰公司重新申请;

10、scheme.xml文件损坏

查看系统日志log/openPlant.log,存在记录:
E manager schema of Product is null
E manager load system database error
检查config/scheme.xml,替换为标准scheme.xml文件;

11、scheme.xml文件缺失

查看系统日志log/openPlant.log,存在记录:
E global load scheme.xml failed
E manager load scheme.xml error
检查config/scheme.xml,替换为标准scheme.xml文件;

12、scheme.xml文件不匹配

1:查看系统日志log/openPlant.log,存在记录:
E manager template of [Root,Database,Node,Point,Das,Device,Replicator] not found
E manager load scheme.xml error
E global Real-time system startup failed
检查config/scheme.xml,替换为安装包中标准scheme.xml文件;

13、历史文件损坏导致

查看系统日志log/openPlant.log,存在类似记录:
E history insert data of id=303048 to database_20190805_000000 error
E history insert block of point 303049 error -3
E history database_20160510_120000 conflict with database_20020115_000000
将log上显示的database文件移出,重启启动数据库即可恢复正常

14、openplant.exe程序文件缺失

从安装包/更新包获取主程序文件

15、操作系统版本不支持

openPlant4.0数据库支持主流windows、Linux、中标麒麟等操作系统,Windows需要XP以上。
openPlant3.0支持Windows XP系统。

16、数据库服务器异常

重启数据库服务器

17、安全监控软件对文件夹写保护,导致数据库文件程序无执行权限

需要关闭安全监控软件,恢复程序可执行权限

18、Linux/aix系统数据库文件缺少可执行权限

设置可执行权限后重新启动chmod +x rtnn

19、Linux启动提示系统库文件不存在

./rtnn: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
解决办法:查询系统库文件,配置软链接
root@10-23-173-120 linux-x64-hs]# find / -name "libnsl.so*"
/usr/lib64/libnsl.so.2.0.0
/usr/lib64/libnsl.so.2
root@10-23-173-120 linux-x64-hs]# ln -s /usr/lib64/libnsl.so.2 /usr/lib64/libnsl.so.1

20、系统空间不足数据库工作异常

E archive W3 write archive_20221112_000000 error 28 at end=1bc300, size=30000000400, avail=0
M archive free space is less than 3%.

21、系统空间不足数据库工作异常2

E manager insert into d0.Point select * from Point_ where id=774191, database or disk is

22、由于系统缓冲区空间不足,不能执行套接字上的操作

其他程序实现错误,从而导致socket/端口占满,通过netstat可以发现存在超级多的tcp连接,需要停止对应程序。

23、启动失败,日志显示加载master.db失败

E global W3 load failed
E global Real-time system startup failed
需要确认下master.db是否变成只读文件,需要确认下master.db是否被损坏。

24、数据库接收到外部命令正常退出

M global exit on error 4
M global exit on error 9



数据库计算点功能

1、V3.0的公式是否可以在V4.0数据库使用

V4.0的数据库用的是新的计算公式,和V3.0的数据库不一样,例如:if97.pt2h(Unit2.3LAB30CP001.AV,Unit2.3LAB40CT101.AV),转换公式变为return if97.pt2h(op.value("W3.Unit2.3LAB30CP001"),op.value("W3.Unit2.3LAB40CT101"))即可

2、数据库是否可以实现Ln和log一类的函数

可以使用,公式样例:LN(UNIT.1.THE1.AV)

3、批量转换计算点方法,1000左右V3.0的计算公式,要导到4.0库

将V3.0版本的config目录复制到V4.0数据库下,V4.0数据库启动时会自动转换V3.0的配置

4、给数据库里的计算点赋个固定值,应该怎么写公式

V3.0数据库固定数值直接在计算公式内输入:5,V4.0版本return 5;

5、数据库里添加了计算点 值为0或者1 但是看历史数据,有其他值

数据为数据库的拟合值,是由于相邻两点0和1之间的连线出现的。需要根据数据情况选择正确的数据类型,本例需要建立DX类型测点。

6、数据库怎么通过计算点统计一个点某个数据出现的次数

if (op.value("W3.JK.T2") == 0)    then v=op.value("W3.JK.T1")      else v=op.value("W3.JK.T1")+1  end return v
V4.0数据库可使用的累加公式

7、怎么通过命令查看数据库有多少连接

在数据库内建立AX计算点,设置计算公式return op.session()

8、V3.0数据库,计算公式 and 无效

V3.0数据库AND的条件需使用&&,V4.0和V5.0使用and

9、V5.0数据库,计算队列event满10万,有些计算点本轮未计算,原因:计算点过多等,变化计算点过多

E calc too many event,id=2000

10、V5.0数据库,计算点过多或逻辑中取历史等过多,导致计算延时多久,计算点计算耗时久

11、计算点公式没取到值,数据库如何判断?

当计算公式中存在op.now()取当前时间的时候,取用的是数据库服务器的时间。但是测点的数据时间,如果没有对时,可能存在较大误差,导致根据服务器当前时间取的测点历史没有数据。
1:ntp先执行对时;2:完善计算点公式的逻辑,增加取值为空的判断逻辑。

12、配置压缩后数据仍然丢失,压缩数据配置不正确

请确保:测点KZ属性配置为无压缩,同时修改config.xml中lossless="1",全部配置完成后重启数据库方可实现无损存储。

数据库使用问题

1、数据库内存飙升

可能原因:
1:写历史、读历史操作多;2:订阅数据,但是对方没及时消费,数据库为了不丢弃数据,存储下来订阅的信息,导致内存涨。

2、Linux系统主动kill数据库,因为数据库内存占用高

需要查询var/log/messages或者system.log,里面会记录系统日志(不同系统日志位置可能有区别),类似如下记录:
Jul 1 23:52:12 3QDB-A kernel: Out of memory: Kill process 30613 (rtnn) score 926 or sacrifice child
Jul 1 23:52:12 3QDB-A kernel: Killed process 30613 (rtnn), UID 0, total-vm:115017252kB, anon-rss:100373264kB, file-rss:0kB, shmem-rss:0kB
此时,可以通过定时执行释放linux内存的命令,让系统主动回收掉系统内存,避免误杀数据库:
echo 1 > /proc/sys/vm/drop_caches

3、系统cache overflow,来不及处理数据,无法入库会丢弃

2022-06-19 08:04:30 W notify W3 cache overflow id=26862303, count=406
2022-06-19 08:04:35 W notify W3 cache recovery
2022-06-19 08:04:37 W notify W3 cache overflow id=26597515, count=406
2022-06-19 08:04:37 W notify W3 cache recovery

4、通过控制台编辑操作测点,返回-107 引用错误

可能原因是数据库底层数据发生变更,控制台未刷新无法及时同步,操作的对象已经不存在,父节点不存在等原因导致。重启客户端程序同步数据后重新操作。

5、系统日志记录无权限创建测点,界面返回写数据库错误-109,镜像建点到目的库也同样失败

现象:数据库配置测点时直接创建失败,返回-109写数据库错误
解决方法:拿到数据库配置master.db,通过sqlite查看该数据文件,是否存在库信息错误。可能原因,源->目的镜像的时候,源侧测点字段长度修改变大,然后未在目的库侧修改库字段,导致数据库镜像建点写库错误,引起-109错误。 需要修复master.db,然后移除sync_xxxxxxxx.db镜像配置文件后重启源和目的库。

6、给测点写入实时数据,系统提示-109权限不足

测点分DAS和CALC两类测点,CALC测点仅仅接收计算公式数据的写入,外部API模拟等均无权限写入。需要确认是否测点属性应该调整为DAS,或者写错测点。

7、系统日志记录-109无权限创建db

常见于linux系统,打开文件数目已达到限值。请使用ulimit -a 查看目前配置。可以执行echo ulimit -n unlimited >>/etc/profile,然后执行 source /etc/profile。

8、系统日志记录-109无权限创建archive历史文件

错误日志:E archive w3 create archive_20231103_000000 error -109
解决方法:查询free -m或者free -g,查看返回的系统内存使用结果,swap交换区是否已经开始使用。当swap交换开启后,数据库写磁盘速度会受影响,将导致写历史文件等失败。

9、数据库如何控制磁盘占用率

通过DiskLimit参数调节
配置config/config.xml中DiskLimit参数,含义:历史文件占用空间百分比,默认95%;
功能:数据库储存占用磁盘空间95%后,自动删除。

10、数据空间满了之后自动删除数据,如何保留更多数据

通过DiskLimit参数调节
配置config/config.xml中DiskLimit参数,含义:历史文件占用空间百分比,默认95%;如果存在第二磁盘secondDir="",请根据需要配置secLimit参数值。
功能:数据库储存占用磁盘空间95%后,自动删除。

11、数据库连接被占满,无法访问数据库

在数据库服务器上,执行netstat -anp | grep "8200" 命令,确定数据库是和那类程序进行交互,确定该类程序是正常访问还是异常未释放连接,终止此类程序的访问。

12、存在历史文件冲突,应该怎么做

如日志中存在错误:E archive W3 archive 20220115_000000 conflict with archive 20220111_000000。
解决方法:需要数据库数据目录下,找到这个日期的文件archive_20220115_000000,将文件复制到某个目录,放入tsdb工具,执行./tsdb check -end 20220116 archive_20220115_000000。执行后,会重新产生archive_20220115_000000.idx,将原来的idx移除,将新产生的idx文件复制过去,随后重启库加载全部历史文件。
如果仍然不行,可以添加begin操作再次执行,./tsdb check -begin 20220115 archive_20220115_000000。执行后,会重新产生archive_20220115_000000.idx,将原来的idx移除,将新产生的idx文件复制过去,随后重启库加载全部历史文件。

13、如何限制IP访问数据库

通过用户管理功能进行设置
通过创建一个新用户,用户名xxx,绑定IP为限制IP,然后将用户权限全部关闭,即可限制该IP用户访问数据库

14、如何创建多个用户

连接数据库,在OPConsole/console用户管理里面可以添加,并配置相应权限

15、数据库那个字段可以查看数据库压缩类型

KZ字段可以查看压缩类型0为死区,1为线型,2为无压缩

16、数据库FL为何字段

FL为标志位,内容为1~3的数字

17、数据库描述字符能不能增加,描述容易出现乱码

字符长度超过scheme.xml定义
目前数据库限制描述长度有scheme.xml文件确定,不能随意更改

18、如何获取机器码

运行机器码获取工具
在数据库服务器上,windows:双击执行licrep.exe; Linux:./licrep;

19、历史数据存储路径如何修改

由config.xml中dataDir字段确定
默认为空,放置于data文件夹,可根据需要修改config.xml内dataDir字段,在指定目录下会生成新的数据库点表文件以及data文件

20、数据库测点数据最短多少时间记录一次

普通数据库一秒一个数据,毫秒级根据写入的时间进行记录

21、数据库一个测点一年占用多少空间怎么计算

AX类型:14bit,DX:8bit,根据单个数据大小*数据总量

22、实时数据库的存储格式是什么

存储文件为sqlite

23、数据库报警怎么设置以及查看

右键需要设置报警的测点选择编辑进行设置

24、设置报警后未查看到报警信息

用户开启报警的点表内没有设置的报警的测点

25、报警设置勾选只能console配置吗

可以通过JDBC、API或者导出的csv文件报警属性等对报警设置

26、数据库日志在哪查看

数据库根目录logs目录下的openplant.log文件

27、数据库数据怎么迁移

config文件夹下为配置信息,data文件夹下为历史数据
V3.0版本将库文件夹下node,point,varchar三个dbf文件以及database文件放到对应文件夹;
V4.0版本将库文件夹下config/master.db以及database文件放到对应文件夹;

28、openPlant测点历史数据存储值与实时获取值(同一时刻)存在的偏差百分比是多少

用户使用获取实时以及获取历史的方法获取,数据库自带死区压缩导致两次获取数值不一致

29、数据库日志记录什么内容

数据库DB日志,会将更新删除创建的时间以及内容记录在log内,其他不记录

30、升级数据库后console查看不到数据

console版本较低,和数据库不匹配,更新console后可以查看到数据

31、数据库访问量设置、第三方用户访问连接数如何设置

修改数据库config/config.xml目录内的最大并发连接数maxThreads="500",默认500

32、如何根据全点名W3.UNIT1.10DCS14FU104 知道数据库的点表名

以.为分隔,W3为库名  UNIT1为点表名   10DCS14FU104为点名

33、数据库授权在虚拟机的服务器上能支持吗

可以在虚拟机上运行,license授权无法提供永久,需要定期更换

34、连接数据库后,历史数据保存在哪哪张表内

测点历史数据在Archive,报警历史数据在AAlarm

35、如何将历史数据重新集成到自己的系统

使用api获取再写入

36、数据库里的数据被压缩后怎么获取被压缩的数据?

被压缩的数据就不储存了,但是我们的压缩算法会高度还原数据曲线

37、数据库测点怎么进行模拟

单个测点在console内右键测点可以进行模拟,批量模拟需要自行开发工具进行模拟

38、测点ID改变后,如何通过点名查询该测点历史值

更改ID后查询不到更改ID之前的历史数据,在删除测点后对应的历史数据也会被删除

39、可以自由设置数据历史文件存放路径吗

V3.0数据库不能进行data目录的指向,建议编写脚本定期批操作或备份相关数据重新安装数据库;V4.0支持自定义data目录指向。

40、数据库内测点点状态Force是什么意思

状态为强制,测点不接受之后传入的数据

41、画面右键测点显示测点不存在

数据库全点名格式 库名.节点名.点名,点名内不能出现特殊符号除了下划线

42、历史data无法每天自动生成

数据库授权到期,数据时间错乱都有可能;
查看系统日志log/openPlant.log,存在记录: E Licensed to invalid, -3;
查看license/license.xml中过期时间,如若授权到期,请联系麦杰公司重新申请;
如果实时数据时间错乱导致历史文件无法生成,请及时清理错乱数据;

43、历史文件每天产生多少个

数据库历史数据超过设置的历史归档大小会生成多个database文件;
config/config.xml中参数archiveSize="1500"可设置每个database归档文件大小

44、数据库支持订阅的方式读取数据吗

V4.0版本数据库支持订阅功能

45、需要从实时库中提取大量的历史数据,请问有比较快的方法吗

可根据使用需求选择合适工具;
把需要导出的点添加到历史表内进行导出操作;
自行写api进行数据的导出;
使用麦杰公司导出工具导出;

46、数据库测点ID是怎么根据节点ID计算的

数据库ID 一般性是从最小的ID 1024往后加,除非ID占用到最大ID(大约在1015807)的时候会开始利用回收的ID。测点ID与节点ID无关

47、数据库端口如何查看和修改

端口在数据库config文件夹内config.xml内配置port

48、如何使用现场的实时数据库数据

将master.db和database文件复制到本地数据库相对应的位置

49、新建的计算点可以显示实时数据,但是历史查不到

未勾选归档属性;
检查测点配置,勾选归档选项,归档后才可保存历史

50、数据库机器码依赖什么生成的

机器码是根据服务器所有的硬件生成的,MAC、网口、硬盘等硬件信息变化则机器码会相应变化

51、通过openPlantMonitor.exe启动openPlant,发现启动的非本目录数据库

服务器安装过多个数据库,openPlant服务对应的数据库位置变化
1:执行unreg.bat,解除已经存在的openPlant服务注册;
2:执行regsvc.bat,将本文件夹下数据库重新注册至openPlant服务;

52、数据库扩容申请的license放入后,容量仍为原来的大小

License.xml放入后,需要数据库重启,新申请license才可生效

53、数据库软连接配置

5.0系统,如果要做数据库历史文件的软连接,一定要坐在数据库根目录下,不要做到data/W3下,会导致数据库判断磁盘空间错误。无法正确执行磁盘空间占用的删除判断逻辑。


外部交互

opcserver使用的是什么规范

opcserver2.0使用的为OPC-DA规范,3.0位OPC-XML-DA规范