惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Engineering at Meta
Engineering at Meta
有赞技术团队
有赞技术团队
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
B
Blog
The GitHub Blog
The GitHub Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
I
InfoQ
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
H
Help Net Security

博客园 - AlfredZhao

Git 提交代码:从报错到 SSH 免密推送 GitHub 克隆他人私有仓库:从授权到下载 理解Oracle Property Graph:以账户转账示例完成图特性最小测试 APEX 无法分配 SH 用户?一个存储过程轻松解决 SH 中文化样例数据使用手册 Oracle 排除非业务表:一份能直接抄的“全量过滤”SQL 进程都杀了,为什么 `netstat` 还能看到端口? MAC 空间告急?Codex 的 156GB 缓存垃圾,这样清! 人工清理问题数据:先查准,再删除 TK(Trusted Knowledge)为何而生? 使用快捷键快速切换 Mac 外接显示器模式 客户环境 Nginx 配置:流式报表与超时排查要点 Security Central:数据库安全的统一控制与运营平台 Palantir 眼中的一次“订单可能延期”,如何成为实时决策的起点? 从一条订单消息到 Bronze、Silver、Gold:我的第一次 Kafka + Lakehouse 实验 UUID v4 与 v7:同样是唯一 ID,为什么数据库表现可能完全不同? 用 crontab 给 LLM 使用量装上“监控眼” DeepSeek 与 GPT API 价格调整:该关注什么? 查看 Oracle 数据库中的定时任务执行情况 Codex 专用用户登录后自动进入默认项目目录 Mac 小技巧:用方向键优雅处理超长网址 Oracle GDD 与 Raft:别把共识机制和数据主权混为一谈 在 Oracle APEX 中用 BGE_BASE 生成向量:从模型导入到历史数据更新 行业人+AI:真正有价值的四个关键要素 Unicode 码位数、UTF-8 字节数、中英文差异和 Oracle 长度别再混淆了 Skill 的使用:从路径到能力边界 切换 Embedding 模型时,千万别忽略历史向量维度 kbot 适配 GPT-5.6:一次参数兼容性排查 Git 打 Tag 上传 GitHub 遇到 SSH 超时,如何处理? SQL JOIN 写法:把多表关联条件写清楚
知识库文件解析失败:一次由 Domain Index 引发的定位记录
AlfredZhao · 2026-08-22 · via 博客园 - AlfredZhao

2026-08-22 06:18  AlfredZhao  阅读(0)  评论()    收藏  举报

知识库上传文件后,解析流程不一定失败在文件本身。有时日志只暴露出“保存分块失败”,真正的问题却在数据库对象状态上。笔者环境中,这次问题最终定位到 Oracle 表上的 Domain Index 处于 failed 状态。

01 | 先用小文件复现问题

为了快速验证,笔者先用一个小文件复现。上传后,解析任务能被 Worker 接收,但写入分块时报错:

2026-07-12 07:34:31: Worker received task, preparing to parse
2026-07-12 07:36:33: Error saving chunks to database: Oracle batch insert text chunks failed

这个日志说明:文件解析流程已经进入后台任务,但在保存 chunks 到数据库时失败。因此排查重点可以先放在目标表、索引和批量写入相关对象上。

02 | 检查目标表上的 Domain Index

问题最终定位为:AI_PLATFORM.KBOT_BIZ_TXT_EMBEDDING 表上存在 failed 的 Domain Index。

用于检查 Domain Index 状态的 SQL 如下:

SELECT i.owner,
 i.index_name,
 c.column_name,
 i.index_type,
 i.status,
 i.domidx_status,
 i.domidx_opstatus
 FROM dba_indexes i
 LEFT JOIN dba_ind_columns c
 ON c.index_owner = i.owner
 AND c.index_name = i.index_name
 WHERE i.table_owner = 'AI_PLATFORM'
 AND i.table_name = 'KBOT_BIZ_TXT_EMBEDDING'
 AND i.index_type = 'DOMAIN'
 ORDER BY i.index_name, c.column_position;

为了保留现场,也可以先导出相关索引创建语句:

SET LONG 1000000
SET LONGCHUNKSIZE 1000000
SET PAGESIZE 0
SET LINESIZE 32767
SET TRIMSPOOL ON

SPOOL /tmp/kbot_text_indexes.sql

SELECT DBMS_METADATA.GET_DDL('INDEX', 'IDX_FULLSEARCH_TXT_HEADER', 'AI_PLATFORM')
FROM dual;

SELECT DBMS_METADATA.GET_DDL('INDEX', 'IDX_FULLSEARCH_TXT_EMBEDDING', 'AI_PLATFORM')
FROM dual;

SPOOL OFF

其中一个索引创建语句如下:

CREATE INDEX "AI_PLATFORM"."IDX_FULLSEARCH_TXT_EMBEDDING"
ON "AI_PLATFORM"."KBOT_BIZ_TXT_EMBEDDING" ("CONTENT")
INDEXTYPE IS "CTXSYS"."CONTEXT"
PARAMETERS ('lexer chinese_lexer')

本次处理时,先删除处于 failed 状态的异常索引:

DROP INDEX AI_PLATFORM.IDX_FULLSEARCH_TXT_EMBEDDING FORCE;

03 | 修复后重新验证

处理完相关索引后,再次检查状态,Domain Index 已恢复正常:

OWNER INDEX_NAME COLUMN_NAME INDEX_TYPE STATUS DOMIDX_STATUS DOMIDX_OPSTATUS
AI_PLATFORM IDX_FULLSEARCH_TXT_EMBEDDING CONTENT DOMAIN VALID VALID VALID

OWNER INDEX_NAME COLUMN_NAME INDEX_TYPE STATUS DOMIDX_STATUS DOMIDX_OPSTATUS
AI_PLATFORM IDX_FULLSEARCH_TXT_HEADER HEADER DOMAIN VALID VALID VALID

OWNER INDEX_NAME COLUMN_NAME INDEX_TYPE STATUS DOMIDX_STATUS DOMIDX_OPSTATUS
AI_PLATFORM IDX_FULLSEARCH_TXT_SEARCH_HELPER SEARCH_HELPER DOMAIN VALID VALID VALID

随后上传同一个文件,解析成功:

2026-07-12 08:15:31: Worker received task, preparing to parse
2026-07-12 08:17:47: Successfully saved 1 chunks with embeddings

这次排查的关键点是:当知识库文件解析报出 Oracle batch insert text chunks failed 时,不要只看文件内容或解析程序,也要检查写入表上的 Domain Index 状态。

image.png

关注我,和AI一起成长~