【Oracle Database 分区表】之新特性_18c(三)

概述

Oracle Database 18c在分区技术的在线操作性、外部集成和灵活性方面有显著增强,为构建现代化数据管理平台提供强大支撑。

核心新特性

特性一:分区外部表 (Partitioned External Tables)

特性描述
  • 允许将外部存储(HDFS、操作系统文件系统)的文件映射为Oracle数据库的分区表
  • 外部数据分区可与内部数据分区在同一条SQL中透明查询
  • 支持分区修剪(Partition Pruning)
  • 为19c混合分区表奠定基础
核心优点

实现"数据湖"中低成本存储文件的高性能原地查询,无需数据导入

语法示例
sql 复制代码
-- 创建按时间范围分区的外部表,映射到HDFS目录
CREATE TABLE external_sales_partitioned (
    prod_id     NUMBER,
    cust_id     NUMBER,
    time_id     DATE,
    amount_sold NUMBER
)
ORGANIZATION EXTERNAL (
    TYPE ORACLE_HDFS  -- 使用ORACLE_HDFS驱动访问Hadoop
    DEFAULT DIRECTORY hadoop_dir
    ACCESS PARAMETERS (...)
)
PARTITION BY RANGE (time_id)
(
    PARTITION sales_2023_q1 VALUES LESS THAN (TO_DATE('2023-04-01', 'YYYY-MM-DD'))
      LOCATION ('/hadoop/sales/data_2023_q1'),
    PARTITION sales_2023_q2 VALUES LESS THAN (TO_DATE('2023-07-01', 'YYYY-MM-DD'))
      LOCATION ('/hadoop/sales/data_2023_q2')
);

-- 利用分区修剪优化查询
SELECT SUM(amount_sold) FROM external_sales_partitioned 
WHERE time_id BETWEEN DATE '2023-04-01' AND DATE '2023-04-30';

特性二:全面的在线分区维护操作

特性描述
  • 所有分区维护操作都支持在线完成
  • 允许在维护期间进行并发的DML和查询操作
核心操作
  1. 在线合并分区
  2. 在线更改分区表类型(如哈希分区转范围分区)
语法示例
sql 复制代码
-- 1. 在线合并两个分区
ALTER TABLE orders 
  MERGE PARTITIONS orders_q1_2023, orders_q2_2023 
  INTO PARTITION orders_h1_2023
ONLINE UPDATE INDEXES;

-- 2. 在线更改分区类型(哈希分区表转范围分区表)
ALTER TABLE sales_hash 
  MODIFY PARTITIONING TYPE TO RANGE (sale_date)
  (PARTITION p_hist VALUES LESS THAN (DATE '2023-01-01'),
   PARTITION p_current VALUES LESS THAN (MAXVALUE))
ONLINE UPDATE INDEXES;
核心优点

支持7×24小时不间断运维,提升生产系统灵活性和可用性

特性三:间隔分区支持组合分区

特性描述
  • 扩展间隔分区能力,支持作为顶级分区策略用于组合分区
  • 支持多种组合类型:
    • INTERVAL-RANGE
    • INTERVAL-LIST
    • INTERVAL-HASH
核心优点

实现自动分区创建的同时,使用二级子分区进行精细数据划分

语法示例
sql 复制代码
-- 创建间隔-列表组合分区表
CREATE TABLE call_detail_records (
    id NUMBER,
    date_of_call DATE,
    region VARCHAR2(10),
    ...
)
PARTITION BY RANGE (date_of_call)
  INTERVAL (NUMTODSINTERVAL(1, 'DAY'))  -- 顶级分区:按日间隔自动创建
  SUBPARTITION BY LIST (region)          -- 子分区:按地区列表划分
  SUBPARTITION TEMPLATE (                -- 定义子分区模板
      SUBPARTITION east VALUES ('NY', 'NJ'),
      SUBPARTITION west VALUES ('CA', 'WA'),
      SUBPARTITION other VALUES (DEFAULT)
  )
(PARTITION p_initial VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')));

特性四:只读分区 (Read-Only Partitions)

特性描述
  • 可为特定分区单独设置只读属性
  • 只读分区允许查询但禁止DML修改
  • 适用于历史归档分区管理
语法示例
sql 复制代码
-- 1. 创建表时指定只读分区
CREATE TABLE archived_orders (
    order_id NUMBER,
    order_date DATE,
    ...
)
PARTITION BY RANGE (order_date)
(
    PARTITION p_2020 VALUES LESS THAN (DATE '2021-01-01') READ ONLY,
    PARTITION p_2021 VALUES LESS THAN (DATE '2022-01-01') READ ONLY,
    PARTITION p_current VALUES LESS THAN (MAXVALUE) READ WRITE
);

-- 2. 修改已有分区为只读
ALTER TABLE archived_orders MODIFY PARTITION p_2022 READ ONLY;

-- 向只读分区插入数据会失败
INSERT INTO archived_orders VALUES (1, DATE '2020-06-15', ...) 
  PARTITION (p_2020);
-- ORA-14466: Data in a read-only partition or subpartition cannot be modified

总结

三大关键词

  1. "向外扩展" (Extend Outward)

    通过分区外部表将分区功能扩展到大数据平台

  2. "彻底在线" (Complete Online)

    全面的在线维护操作提升业务敏捷性和可用性

  3. "更加灵活" (More Flexible)

    间隔组合分区和只读分区提供更丰富的数据管理策略

演进意义

这些特性为Oracle 19c更强大的混合分区表铺平道路,构建了现代化、高可用企业级数据管理平台的技术基础。

相关推荐
九章-2 小时前
集中式数据库 vs 分布式数据库:2026 最新对比,选哪个更合适?
数据库·分布式·集中式
softshow10262 小时前
Redis 分布式锁必避问题及解决方案
数据库·redis·分布式
韩立学长2 小时前
【开题答辩实录分享】以《足球球员数据分析系统开题报告》为例进行选题答辩实录分享
java·数据库·mysql
Gauss松鼠会2 小时前
【openGauss】openGauss 如何进行数据库例行维护
数据库·sql·database·opengauss
萧咕2 小时前
理解MySQL数据可视化的核心概念
数据库·mysql·信息可视化
wWYy.2 小时前
详解redis(5):Gossiping 协议
数据库·redis·缓存
霖霖总总2 小时前
[小技巧40]MySQL中的MVCC:多版本并发控制的深度解析
数据库·mysql
德彪稳坐倒骑驴2 小时前
DataX将数据在MySQL和HDFS之间互相迁移
数据库·mysql·hdfs
结衣结衣.2 小时前
Redis中的Hash哈希
数据库·redis·哈希算法