达梦数据库因越来越强的系统稳定性和对Oracle高度兼容性,在国产化浪潮中走向前列,众多行业开始采用达梦产品部署业务,本宝宝就在测试使用dm8过程中发现一个问题。
达梦dm8开发版为数据库管理员、软件研发人员等提供服务,默认license是版本发布后一年的使用时长,并非系统安装时间,例如V8.1.0.147在2019年3月27日发布,它的使用期限截止2020年3月26日,即使有人在2020年5月27日安装使用,license也过期了。
本宝宝在2020年下半年使用时,发现达梦数据库服务有时会自动停止,当时也没在意,觉得测试环境可能影响的原因很多,例如虚机、网络等硬件环境限制,但是随着测试工作全面开展,这个服务异常停止的问题就摆到了桌面上,不得不细究下原因,给出一个分析结果。
分析数据库故障原因,必须要看日志,日志有操作系统层面的,也有数据库自己的,主要看数据库自身日志,达梦数据库日志在安装目录下log目录下,我这里的是
/home/dmdba/dmdbms/log
查看都有哪些日志
其中,dm_DMSERVER_202010.log 和DmServiceDMSERVER.log是达梦数据库日志,命名方式dm_实例名_日期.log
分析数据库服务,我的思路是既要看服务停止的日志信息,也要看服务启动的日志信息,两个相结合,才能有深入的理解。
打开相应日志文件,找到服务停止时间
2020-10-25 04:12:50.692 [FATAL] database P0000028018 main_thread License violation detected, or product has expired. System halt!
2020-10-25 04:12:50.692 [INFO] database P0000028018 main_thread total 3 rfil opened!
License violation detected, or product has expired. System halt!
很直观,license过期,系统停止。
发现服务停止后,我手动起来
2020-10-26 08:43:05.181 [INFO] database P0000009503 main_thread version info: develop
2020-10-26 08:43:05.196 [INFO] database P0000009503 main_thread os_sema2_create_low, create and inc sema success, key:151433511, sem_id:98304, sem_value:1!
2020-10-26 08:43:05.214 [INFO] database P0000009503 main_thread DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENT startup…
2020-10-26 08:43:06.043 [INFO] database P0000009503 main_thread fil_sys_init
2020-10-26 08:43:06.203 [WARNING] database P0000009503 main_thread License will expire on 2020-11-09
这里有两条关键信息
DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENT,这个版本发布时间是2019年3月27日,说明该版本一年使用时长的license早已过期,License will expire on 2020-11-09,license过期时间是2020年11月9日,可以看出这次仅可以使用到11月9日。
问题明了,dm8在license到期后会自动停止服务,这是它版权的一种保护形式。
为了证明我的猜想,往前翻了翻日志,验证我的猜想,这次更明晰,日志中直接写14天的使用时长。
2020-10-02 04:30:54.505 [FATAL] database P0000009361 main_thread License violation detected, or product has expired. System halt!
2020-10-02 04:30:54.505 [INFO] database P0000009361 main_thread total 2 rfil opened!
2020-10-10 04:12:48.040 [INFO] database P0000028018 main_thread version info: develop
2020-10-10 04:12:48.057 [INFO] database P0000028018 main_thread os_sema2_create_low, create and inc sema success, key:151433511, sem_id:98304, sem_value:1!
2020-10-10 04:12:48.074 [INFO] database P0000028018 main_thread DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENT startup…
2020-10-10 04:12:48.861 [INFO] database P0000028018 main_thread fil_sys_init
2020-10-10 04:12:49.033 [WARNING] database P0000028018 main_thread License will expire in 14 day(s) on 2020-10-24
2020-10-10 04:12:49.046 [INFO] database P0000028018 main_thread Initialize temp tablespace, file path: /home/dmdba/dmdbms/data/DAMENG/TEMP.DBF, code: 0
分析到这里,之前遇到的服务异常停止问题有了答案,就是license到期的问题,同时也知道,dm8开发版在license过期后,重启服务可以使用14天,这一点对系统管理员和软件研发人员很关键,在小版本迭代时,无需重新部署安装,只要重启服务又能坚持一会。
原本想抓条大鱼,没想到达梦给了个小福利,愿我们国产数据库越来越强。