Oracle Advanced Compression 详解

Oracle Advanced Compression 详解

适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

Advanced Compression 高级压缩[1]:

详细见:Oracle 表压缩技术


2. 类型

2.1 表压缩

- COMPRESS BASIC
- COMPRESS FOR OLTP
- COMPRESS FOR QUERY
- COMPRESS FOR ARCHIVE

2.2 索引压缩

- COMPRESS
- Advanced Index Compression

2.3 网络压缩

- SQL*Net
- 数据传输

2.4 备份压缩

- RMAN
- Data Pump

2.5 LOB 压缩

- SecureFiles
- COMPRESS

3. 表压缩

3.1 Basic

CREATE TABLE emp COMPRESS BASIC;
ALTER TABLE emp COMPRESS BASIC;
ALTER TABLE emp MOVE COMPRESS BASIC;

3.2 OLTP

CREATE TABLE emp COMPRESS FOR OLTP;
ALTER TABLE emp COMPRESS FOR OLTP;
ALTER TABLE emp MOVE COMPRESS FOR OLTP;

3.3 Warehouse

CREATE TABLE sales COMPRESS FOR QUERY;
CREATE TABLE sales COMPRESS FOR QUERY HIGH;

3.4 Archive

CREATE TABLE sales_archive COMPRESS FOR ARCHIVE;
CREATE TABLE sales_archive COMPRESS FOR ARCHIVE HIGH;

4. 压缩级别

4.1 Basic

- 直接路径加载
- 压缩比 2-4x
- 无 DML 压缩

4.2 OLTP

- 所有操作
- 压缩比 2-4x
- OLTP 适合

4.3 Query

- 仓库
- 压缩比 3-5x
- 查询

4.4 Archive

- 归档
- 压缩比 10-20x
- 历史数据

5. 索引压缩

5.1 基本

CREATE INDEX idx_emp ON emp (name, dept) COMPRESS 1;

5.2 Advanced

CREATE INDEX idx_emp ON emp (name, dept) 
  COMPRESS ADVANCED LOW;

5.3 优势

- 空间节省
- Buffer Cache
- I/O 减少

6. RMAN 压缩

6.1 配置

CONFIGURE COMPRESSION ALGORITHM 'HIGH';
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
CONFIGURE COMPRESSION ALGORITHM 'LOW';

6.2 备份

BACKUP AS COMPRESSED BACKUPSET DATABASE;

6.3 优势

- 空间节省
- 网络
- 恢复

7. Data Pump 压缩

7.1 导出

expdp ... COMPRESSION=ALL
expdp ... COMPRESSION=DATA_ONLY
expdp ... COMPRESSION=METADATA_ONLY

7.2 优势

- 文件小
- 传输快
- 存储

8. 网络压缩

8.1 配置

# sqlnet.ora
SQLNET.COMPRESSION = ON
SQLNET.COMPRESSION_LEVELS = LOW/HIGH

8.2 优势

- 网络流量
- 远程
- 性能

9. 性能

9.1 CPU

- 压缩 CPU
- I/O 减少
- 平衡

9.2 内存

- Buffer Cache
- 压缩块
- 更多数据

9.3 I/O

- 减少
- 性能

10. 监控

10.1 压缩比

SELECT table_name, compression, compress_for
FROM user_tables
WHERE compression = 'ENABLED';

SELECT segment_name, bytes/1024/1024 AS mb
FROM user_segments;

10.2 性能

SELECT name, value FROM v$sysstat 
WHERE name LIKE '%compress%';

11. 应用场景

11.1 OLTP

- OLTP 压缩
- DML
- 节省

11.2 仓库

- Query 压缩
- 大表
- 性能

11.3 归档

- Archive 压缩
- 历史
- 节省

12. 常见问题

12.1 CPU 高

- 压缩开销
- 评估
- 监控

12.2 DML 慢

- OLTP 压缩
- 监控
- 调整

12.3 压缩比低

- 数据类型
- 评估
- 优化

13. 最佳实践

  1. OLTP:FOR OLTP
  2. 仓库:FOR QUERY
  3. 归档:FOR ARCHIVE
  4. 监控:CPU
  5. 测试:性能
  6. 索引:Advanced
  7. 备份:RMAN
  8. 网络:压缩
  9. 文档:配置
  10. 演练:定期

14. 参考资料

[1] Oracle Advanced Compression Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/adcomp/