Oracle LOB 架构详解
Oracle LOB 架构详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
LOB(Large Object)存储大对象数据[1]:
详细见:Oracle 数据块结构与 PCTFREE PCTUSED、Oracle 段类型与分配。
2. 类型
2.1 CLOB
- 字符大对象
- 文本
- 字符集
2.2 BLOB
- 二进制大对象
- 图片/视频
- 二进制
2.3 NCLOB
- 国家字符集 CLOB
- 多字节
2.4 BFILE
- 外部文件
- 只读
- 文件指针
3. 存储
3.1 BasicFiles
- 传统 LOB
- 11g 之前
- 默认(11g 之前)
3.2 SecureFiles
- 11g+
- 高级
- 压缩/加密/去重
3.3 存储位置
- INLINE:小 LOB 存行内
- OUT OF LINE:大 LOB 存 LOB Segment
4. 创建
4.1 BasicFiles
CREATE TABLE docs (
id NUMBER,
content CLOB
) LOB(content) STORE AS BASICFILE (
TABLESPACE users
ENABLE STORAGE IN ROW
CHUNK 8192
PCTVERSION 10
RETENTION
NOCACHE
);
4.2 SecureFiles
CREATE TABLE docs (
id NUMBER,
content CLOB
) LOB(content) STORE AS SECUREFILE (
TABLESPACE users
COMPRESS HIGH
DEDUPLICATE
ENCRYPT
CACHE
);
5. 参数
5.1 ENABLE STORAGE IN ROW
- 行内存储
- < 4000 字节
- 性能
5.2 DISABLE STORAGE IN ROW
- 全部 LOB Segment
- 行外
5.3 CHUNK
- LOB 块大小
- 表空间块倍数
- 默认 8K
5.4 RETENTION / PCTVERSION
- 一致性读
- RETENTION:时间
- PCTVERSION:百分比
5.5 CACHE / NOCACHE
- CACHE:缓存
- NOCACHE:不缓存
- CACHE READS:读缓存
6. SecureFiles 特性
6.1 压缩
COMPRESS HIGH
-- 压缩 LOB
-- 节省空间
6.2 去重
DEDUPLICATE
-- 相同内容共享
-- 节省空间
6.3 加密
ENCRYPT USING 'AES256'
-- TDE
-- 安全
7. 操作
7.1 DBMS_LOB
DECLARE
v_lob CLOB;
BEGIN
SELECT content INTO v_lob FROM docs WHERE id = 1 FOR UPDATE;
DBMS_LOB.WRITEAPPEND(v_lob, 100, '...');
COMMIT;
END;
/
7.2 常用
DBMS_LOB.READ
DBMS_LOB.WRITE
DBMS_LOB.APPEND
DBMS_LOB.SUBSTR
DBMS_LOB.INSTR
DBMS_LOB.GETLENGTH
DBMS_LOB.COPY
DBMS_LOB.ERASE
DBMS_LOB.TRIM
8. 性能
8.1 INLINE
- 小 LOB 行内
- 单次读
- 快
8.2 CACHE
- 缓存
- 频繁读
8.3 CHUNK
- 合理
- I/O
9. 监控
9.1 视图
SELECT table_name, column_name, segment_name,
in_row, chunk, cache
FROM user_lobs;
9.2 大小
SELECT segment_name, bytes/1024/1024 AS mb
FROM user_segments
WHERE segment_type = 'LOBSEGMENT';
9.3 等待
SELECT event, time_waited
FROM v$system_event
WHERE event LIKE 'lob%';
10. 应用场景
10.1 文档
- CLOB
- 文本
- 内容管理
10.2 多媒体
- BLOB
- 图片/视频
- 存储
10.3 XML
- XMLType
- CLOB
- 存储
11. 常见问题
11.1 LOB 空间
- 高水位
- RETENTION
- 清理
11.2 性能
- CACHE
- CHUNK
- INLINE
11.3 ORA-01555
- LOB 一致性
- RETENTION
- 调整
12. 最佳实践
- SecureFiles:11g+
- INLINE:小 LOB
- CACHE:频繁读
- CHUNK:合理
- RETENTION:一致性
- 压缩:SecureFiles
- 加密:敏感
- 监控:大小
- 文档:设计
- 演练:定期
13. 参考资料
[1] Oracle Database SecureFiles and Large Objects Developer’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/adlob/