Oracle 数据库拥有大量强大但被低估或使用率较低的特性,这些功能在特定场景下能极大提升开发效率、运维自动化水平或系统性能,但由于文档分散、认知门槛高或“惯性思维”,很多 DBA 和开发者并未充分利用。
以下是 10 个“好用但冷门”的 Oracle 特性(含 19c/21c 新特性),附典型应用场景:
1. Flashback Data Archive (FDA) —— 闪回归档
- 作用:自动记录表的历史变更(行级版本),支持任意时间点查询,无需触发器或日志解析。
- 为什么冷门:常被误认为是“Flashback Query”的替代品,实则用于长期审计/合规。
- 典型场景:
- 满足 GDPR “数据变更追溯”要求
- 金融交易历史回溯(保留7年)
- 替代自建历史表 + 触发器
- 示例:
sql
编辑
CREATE FLASHBACK ARCHIVE fla_7y TABLESPACE tbs_fda RETENTION 7 YEAR; ALTER TABLE orders FLASHBACK ARCHIVE fla_7y; -- 查询2023年1月1日的数据状态 SELECT * FROM orders AS OF TIMESTAMP DATE '2023-01-01';
✅ 优势:零应用改造、压缩存储、不影响主表性能。
2. Real Application Security (RAS) —— 细粒度应用安全
- 作用:基于用户角色+应用上下文的动态数据过滤(比 VPD 更灵活)。
- 为什么冷门:多数人只用基础 RLS(VPD),RAS 需要应用集成。
- 典型场景:
- SaaS 多租户数据隔离(
WHERE tenant_id = SYS_CONTEXT('app_ctx','tenant')) - 医疗系统按科室隔离患者数据
- SaaS 多租户数据隔离(
- 优势:安全策略与应用解耦,DB 层强制执行。
3. In-Memory Column Store (IM Column Store) —— 列式内存分析
- 作用:将表/分区以列式格式加载到内存,加速分析查询(OLAP)。
- 为什么冷门:需额外 License(In-Memory Option),且常被误认为“只是缓存”。
- 典型场景:
- 实时报表(混合 OLTP + OLAP 负载)
- 替代物化视图做聚合计算
- 示例:
sql
编辑
ALTER TABLE sales INMEMORY; -- 自动启用列存 SELECT region, SUM(amount) FROM sales GROUP BY region; -- 秒级响应
💡 注意:21c 支持 Hybrid Row/Column,热数据行存,冷数据列存。
4. Edition-Based Redefinition (EBR) —— 零停机应用升级
- 作用:在不锁表、不停服的情况下升级数据库对象(表结构、PL/SQL)。
- 为什么冷门:实施步骤复杂,需应用配合切换“Edition”。
- 典型场景:
- 7x24 核心系统在线 DDL
- 灰度发布新版本存储过程
- 流程:
- 创建新 Edition(如
V2) - 在
V2中修改对象 - 应用切换会话到
V2 - 旧 Edition 无会话后清理
- 创建新 Edition(如
✅ 效果:升级期间用户无感知,彻底告别
ORA-00054。
5. Database Resident Connection Pooling (DRCP) —— 数据库连接池
- 作用:在数据库端维护连接池,减少中间件连接开销。
- 为什么冷门:多数人依赖应用层连接池(如 HikariCP),不知 DB 层也可池化。
- 典型场景:
- Web 应用短连接风暴(PHP/Python)
- 降低 PGA 内存消耗(共享会话内存)
- 配置:
sql
编辑
EXEC DBMS_CONNECTION_POOL.START_POOL(); -- 应用连接串加 (SERVER=POOLED)
6. Automatic Indexing (19c+) —— 自动索引创建与删除
- 作用:AI 驱动自动创建/删除索引,优化 SQL 性能。
- 为什么冷门:DBA 习惯手动管理索引,担心“失控”。
- 典型场景:
- 动态查询模式的 OLTP 系统(如 BI 工具直连)
- 减少人工调优成本
- 启用:
sql
编辑
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
⚠️ 注意:仅对 CBO 无法优化的 SQL 生效,非万能。
7. Hybrid Partitioned Tables (19c+) —— 混合分区表
- 作用:单表同时包含内部段 + 外部文件(Parquet/CSV)。
- 为什么冷门:传统观念认为“外部表=只读”,混合分区打破此限制。
- 典型场景:
- 冷热数据分层(热数据在 DB,冷数据在 S3)
- 无缝对接数据湖(Spark 直读 Parquet)
- 示例:
sql
编辑
CREATE TABLE logs (... ) EXTERNAL PARTITION ATTRIBUTES (TYPE ORACLE_PARQUET ...) PARTITION BY RANGE (log_time) ( PARTITION p_hot VALUES LESS THAN (...) , -- 内部 PARTITION p_cold VALUES LESS THAN (...) EXTERNAL LOCATION ('logs.parquet') -- 外部 );
8. Temporal Validity (12c+) —— 有效时间维度建模
- 作用:原生支持业务有效时间(非事务时间),简化时态查询。
- 为什么冷门:多数人用两个 DATE 字段模拟,不知有专用语法。
- 典型场景:
- 员工职位历史(
VALID TIME BETWEEN '2020-01-01' AND '2023-12-31') - 产品价格有效期
- 员工职位历史(
- 示例:
sql
编辑
CREATE TABLE employees ( emp_id NUMBER, name VARCHAR2(100), PERIOD FOR employee_duration (start_date, end_date) ); -- 查询2022年在职员工 SELECT * FROM employees AS OF PERIOD FOR employee_duration DATE '2022-06-01';
9. Sharding (12.1.2+) —— 原生分片架构
- 作用:Oracle 官方分片方案,支持跨 shard 分布式事务 + 全局一致性。
- 为什么冷门:被误认为“只有 MySQL/PostgreSQL 才需要分片”,实则适合超大规模 OLTP。
- 典型场景:
- 电信用户数据分片(按 user_id)
- 全球多活部署
- 优势:兼容 Oracle 所有企业级特性(RAC, DG, 加密等)。
10. JSON Relational Duality Views (23c) —— JSON/关系双模视图
- 作用:同一份数据既可当关系表查,也可当 JSON 文档查。
- 为什么冷门:23c 新特性,尚未普及。
- 典型场景:
- 灵活 schema 的 IoT 设备数据
- 同时服务关系型应用和 NoSQL 客户端
- 示例:
sql
编辑
CREATE DUALITY VIEW device_view AS SELECT id, name, status FROM devices; -- 关系查询 SELECT name FROM device_view WHERE status = 'active'; -- JSON 查询 GET /device_view/101 --> 返回 { "id":101, "name":"sensor-A", ... }
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




