Db2 Text Search 的故障诊断提示和技巧

对数据库进行故障诊断要求了解要使用哪些工具以及如何正确使用这些工具来诊断问题。

使用下表中的信息以帮助诊断问题。
表 1. 问题和解决方案
问题 解决方案
如果在 Db2® 连接会话处于活动状态时删除并重新创建文本索引,则先前使用的查询(针对 Net Search Extender 或 Db2 Text Search )的计划可能会被缓存并重新使用,从而产生不正确的结果。 如果 Db2 Text Search 引擎迂到此问题,那么将返回 IQQG0037W ,指示用于搜索的集合名称不正确。 使用 FLUSH PACKAGE CACHE DYNAMIC 语句从语句高速缓存中移除这些 SQL 语句的执行方案。
如果使用 db2idropdb2iupdtdb2iupgrade 命令删除或更新 Db2 实例,那么将除去该实例中的整个 sqllib 目录 (包括 sqllib/db2tss/config 目录)。 这将导致难以重复使用文本搜索实例数据库。 在发出 db2idropdb2iupdtdb2iupgrade 命令之前备份 sqllib/db2tss/config 目录。 此外,使用 configTool 命令的 printAll 选项来保存配置参数的记录,这应有助于您配置新实例。
磁盘已满错误可能导致文本索引元数据不一致。 使用管理工具来检查是否存在任何孤立集合并将其除去,如 Db2 Text Search 文档中的 删除孤立文本搜索集合 中所述。 请注意,您可能无法重复使用遇到磁盘已满错误时使用的文本索引名称。
发出 db2ts START FOR TEXT 命令后,您会收到消息 CIE00301 "权限不足" 或 CIE00377 "只有实例所有者 <instance-owner> 才能使用该命令"。

对于 Windows 用户,具有具有足够权限问题 db2ts START FOR TEXT的用户。 实例所有者是运行实例服务的用户标识。

对于 Linux® 和 UNIX ,请让实例所有者发出此命令。

有关更多信息,请参阅 Db2 Text Search Server Administratordb2ts START FOR TEXT 命令

如果文本搜索服务器遇到磁盘已满错误,那么它可能会返回以下错误消息:
IQQD0085E 请求的操作不能为 
完成。 服务器正在以安全方式运行,因为 
索引发生 IO 错误。
DB2 Text Search 服务器正以受限方式运行。 关闭文本搜索服务器,解决磁盘空间问题后重新启动服务器。
您接收到消息 CIE00311,此消息指示无法打开内部文件。 此消息可能指示缺少配置目录,或者指示文件可能已丢失或已损坏,例如,由于 db2tss/config 所在文件系统上的磁盘已满错误,或者由于 db2tss/config 目录备份期间发生问题。 请检查该实例是否具有用于文本搜索的 config 目录。
  • 如果缺少 config 目录,请确保已安装并配置 DB2 Text Search。
  • 如果 config 目录位于其他位置,请向其添加符号链接 (UNIX)。
如果此错误是由丢失或损坏的文件引起的,请联系 IBM 支持人员。
您接收到消息 CIE00445N,此消息指示无法执行所请求操作。 运行 REBIND。 此消息可能指示某个先前 DB2 命令已使 DB2 Text Search 所需的程序包“NULLID.SYSSH100、NULLID.SYSSH200 、NULLID.SYSSN100、 NULLID.SYSSN200 或 NULLID.SYSLH202”失效。

用户需要手动重新绑定软件包”NULLID.SYSSH100, NULLID.SYSSH200, NULLID.SYSSN100, NULLID.SYSSN200 or NULLID.SYSLH202“。 在继续执行 db2ts 命令之前。 程序包失效通常会在执行撤销或授权命令时发生。

用户可通过以下 SQL 语句来检查程序包状态,从而避免产生此错误:
select 1 from syscat.packages where 
VALID = 'N' AND 
((PKGSCHEMA='NULLID' AND PKGNAME=
'SYSSH100') OR
(PKGSCHEMA='NULLID' AND PKGNAME=
'SYSSH200') OR
(PKGSCHEMA='NULLID' AND PKGNAME=
'SYSSN100') OR
(PKGSCHEMA='NULLID' AND PKGNAME=
'SYSSN200') OR
(PKGSCHEMA='NULLID' AND PKGNAME=
'SYSLH202'))
FETCH FIRST 1 ROWS ONLY FOR READ ONLY;

如果返回值在此 SQL 语句中为 1,那么在执行 DB2 Text Search 命令之前,用户需要重新绑定程序包 NULLID.SYSSH100、NULLID.SYSSH200、 NULLID.SYSSN100、NULLID.SYSSN200 或 NULLID.SYSLH202。

包含大量要处理的文档的文本索引更新失败,并在 db2diag.log 文件中显示“内存不足”消息。 如果无法增大可用内存,请在 sysibmts.tsdefaults 管理视图中降低 documentqueueresultsize 值并重试。
重新分发数据后,您在查询中遇到了有关丢失集合的消息 IQQG0037W 请确保下次发出文本搜索 UPDATE INDEX 命令时使用 FOR DATA REDISTRIBUTION 选项。