【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更强大的混合分区表铺平道路,构建了现代化、高可用企业级数据管理平台的技术基础。

相关推荐
山岚的运维笔记16 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
roman_日积跬步-终至千里17 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科17 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦17 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
晚霞的不甘18 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
市场部需要一个软件开发岗位19 小时前
JAVA开发常见安全问题:纵向越权
java·数据库·安全
海奥华219 小时前
mysql索引
数据库·mysql
2601_9495936520 小时前
深入解析CANN-acl应用层接口:构建高效的AI应用开发框架
数据库·人工智能
javachen__20 小时前
mysql新老项目版本选择
数据库·mysql
Dxy123931021620 小时前
MySQL如何高效查询表数据量:从基础到进阶的优化指南
数据库·mysql