目录
一、环境信息
二、说点什么
三、模拟实验
1、前台启动数据库
2、重建全文索引报错
3、日志信息
4、查找SYSWORD.UTF8.LIB
5、想一想加做一做
6、重启数据库
7、重建全文索引
8、总结
一、环境信息
名称 | 值 |
CPU | 12th Gen Intel(R) Core(TM) i7-12700H |
操作系统 | CentOS Linux release 7.9.2009 (Core) |
内存 | 4G |
逻辑核数 | 4 |
DM版本 | 1 DM Database Server 64 V8 2 DB Version: 0x7000d 3 03134284336-20250117-257733-20132 4 Msg Version: 32 5 Gsu level(5) cnt: 0 |
二、说点什么
今天重建全文索引的时候,报错提示:[-3205]:全文索引词库加载出错。之前没有出现过,那不得排查并记录一下。
我也看了官方社区在DSC环境下对于这个问题的分析和排查,链接:《全文索引在进行 rebuild 或者使用时报错:“全文索引词库加载出错”》,但我这边是单机环境,也没有提示具体哪个目录缺少SYSWORD.UTF8.LIB,属于不同情况,相同报错。
三、模拟实验
1、前台启动数据库
[dmdba@localhost bin]$ cd /home/dmdba/[dmdba@localhost ~]$ dmserver /dm8/data/qqq/dm.ini
因为我配置了环境变量所以不需要在安装目录的bin目录下执行。
2、重建全文索引报错
SQL> ALTER CONTEXT INDEX XXX.AAA ON BBB REBUILD;
[-3205]:全文索引词库加载出错.
已用时间: 237.453(毫秒). 执行号:0.
3、日志信息
2025-04-24 10:24:58.732 [ERROR] database P0000007093 T0000000000000007228 os_file_open_normal_rw error! path: 'SYSWORD.UTF8.LIB', code: 2, desc: No such file or directory
2025-04-24 10:24:58.733 [ERROR] database P0000007093 T0000000000000007228 os_file_open_normal_rd error! path: 'SYSWORD.UTF8.LIB', code: 2, desc: No such file or directory
4、查找SYSWORD.UTF8.LIB
[root@localhost ~]# find / -name 'SYSWORD.UTF8.LIB*'
/dm8/bin/SYSWORD.UTF8.LIB
/dm8/bin2/SYSWORD.UTF8.LIB
5、想一想加做一做
看官方社区的做法是把SYSWORD.UTF8.LIB拷贝到数据目录中去了,我这边是单机,也拷贝了一份,为了保险,重启了数据库,再执行重建全文索引,确实,嗯,没有解决。
我就在想是不是dmserver进程获取SYSWORD.UTF8.LIB文件路径,不是根据环境变量,而是根据相对路径来实现的。
上面可以看到我的dmserver是在/home/dmdba目录下启动的,我们换到/dm8/bin目录下启动试试。
6、重启数据库
[dmdba@localhost ~]$ cd /dm8/bin[dmdba@localhost bin]$ dmserver /dm8/data/qqq/dm.ini
7、重建全文索引
SQL> ALTER CONTEXT INDEX XXX.AAA ON BBB REBUILD;
操作已执行
已用时间: 00:00:02.884. 执行号:601.
8、总结
问题解决了,我们来总结一下这个错误的发生原因,dmserver程序和SYSWORD.UTF8.LIB文件默认都在安装路径下的bin目录中,如果配置了环境变量,在非bin目录启动dmserver,读取当前目录下的SYSWORD.UTF8.LIB文件,但文件不存在,就提示了上述的错误。