You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中创建索引时是否会锁定表禁止读取操作?

结论

Oracle 中未指定 ONLINE 参数执行 CREATE INDEX 建索引时,仅会禁止对表的DML写入操作,不会阻塞普通SELECT查询,逻辑和PostgreSQL的普通非并发建索引一致,和SQL Server非ONLINE模式建聚集索引的逻辑不同。

机制说明

Oracle默认离线建索引的锁规则如下:

  • 建索引启动时会对目标表加模式共享锁(S锁),该锁只阻塞其他会话的表结构修改操作、DML写入(增删改)操作
  • 共享模式锁不会阻塞任何只读查询请求,所有SELECT语句都可以正常执行读取数据

三类数据库行为对比

  • PostgreSQL:普通模式建索引时禁止写入、允许读取,加CONCURRENTLY参数后允许写入
  • SQL Server:非ONLINE模式建非聚集索引时禁止写入、允许读取;建聚集索引时读写都禁止,加ONLINE参数后允许读写
  • Oracle:非ONLINE模式建索引时禁止写入、允许读取,加ONLINE参数后允许写入

内容的提问来源于stack exchange,提问作者iwis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 16:06:00