Oracle 普通表至分区表的分区交换

交换分区

这种方法只是对数据字典中分区和表的定义进行了修改,没有数据的修改或复制,效率最高。适用于包含大数据量的表转到分区表中的一个分区的操作。尽量在业务空闲的时候进行操作。

交换分区的操作步骤如下

1、创建分区表p_tb,假设有2个分区,P1,P2.

2、创建表tb_p1存放P1规则的数据。

3、创建表tb_p2 存放P2规则的数据。

4、用表tb_p1 和P1 分区交换,把表tb_p1的数据放到到P1分区

5、用表tb_p2和P2 分区交换,把表tb_p2的数据存放到P2分区。

测试交换

创建分区表:

create table p_tb

(id number,time date)

partition by range(time)

(

partition p1 values less than (to_date('2024-02-01', 'yyyy-mm-dd')),

partition p2 values less than (to_date('2024-03-01', 'yyyy-mm-dd'))

);

创建2个分别对应分区的基表并插入数据:

CREATE TABLE tb_p1(id number,t_time date);

CREATE TABLE tb_p2(id number,t_time date);

insert into tb_p1 values(1,to_date('2024-01-10','YYYY-MM-DD'));

insert into tb_p1 values(2,to_date('2024-01-20','YYYY-MM-DD'));

insert into tb_p2 values(1,to_date('2024-02-10','YYYY-MM-DD'));

insert into tb_p2 values(2,to_date('2024-02-20','YYYY-MM-DD'));

commit;

将2个普通表与2个分区进行交换:

alter table p_tb exchange partition p1 with table tb_p1;

alter table p_tb exchange partition p2 with table tb_p2;

查询2个分区交换后的数据:

select count(*) from p_tb partition(p1);

COUNT(*)


2

select count(*) from p_tb partition(p2);

COUNT(*)


2
注意:看到交换后数据和之前的基表数据一致。

在查询原来的2个基表,发现数据已经没有了,数据已经交换至分区表对应的分区:

select count(*) from tb_p2;

COUNT(*)


0

select count(*) from tb_p1;

COUNT(*)


0

注意:一般情况下,我们在创建分区表的时候,都会创建一个MAX分区,用来存放不匹配分区规则的数据。这里我只创建了2个分区,没有创建maxvalue分区。 现在我来插入一条不满足规则的数据,看结果 :

insert into p_tb values(3,to_date('2024-03-10','yyyy-mm-dd'));

*

第 1 行出现错误:

ORA-14400: 插入的分区关键字未映射到任何分区
注意:如果插入的数据不满足分区规则,并且没有MAX分区则会会报 ORA-14400 错误。

相关推荐
要开心吖ZSH16 分钟前
一文搞懂:JDK 21 虚拟线程 vs N种异步方案,到底该怎么选?
java·数据库·jdk·虚拟线程
guodingdingh5 小时前
软件开发工作问题总结0718
java·开发语言·数据库
GuWenyue7 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
Csvn8 小时前
📊 SQL 入门 Day 8:集合操作 — 用 SQL 做数学里的"并交差"
后端·sql
苏州IT威翰德8 小时前
算力资产“续命”专家:苏州威翰德科技赋能NVIDIA高端AI芯片芯片级维修
大数据·人工智能
Miao121319 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
SeaTunnel9 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
CodexDave9 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
碎光拾影9 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
曾阿伦9 小时前
MongoDB 查询语句备忘手册
数据库·mongodb