Oracle数据库添加分区(oracle添加分区)

Oracle 数据库添加分区是通过alter table 语句来实现的,主要分为四类:Range Partition(范围分区)、Hash Partition (哈希分区)、List Partition(列表分区)和 Composite Partition(复合分区)。

假设有一张表TBL_ORDERS,要将其分成4个范围分区,按照订单的创建日期划分,日期范围分别是20210101-20210630,20210701-20210930,20211020-20211130,20211131-20220131 ,可以使用如下语句操作:

— 建立一个表,根据日期范围进行分区

CREATE TABLE tbl_orders (

order_id NUMBER(20) NOT NULL,

order_name VARCHAR2(50) NOT NULL,

create_date DATE NOT NULL

)

PARTITION BY RANGE (create_date)

(

— 前两个分区每个分区最多包含3个月的数据

PARTITION orders_part_1 VALUES LESS THAN (TO_DATE(‘2021-07-01 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’, ‘NLS_CALENDAR=GREGORIAN’))

PARTITION orders_part_2 VALUES LESS THAN (TO_DATE(‘2021-10-1 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’, ‘NLS_CALENDAR=GREGORIAN’))

PARTITION orders_part_3 VALUES LESS THAN (TO_DATE(‘2021-12-1 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’, ‘NLS_CALENDAR=GREGORIAN’))

PARTITION orders_part_4 VALUES LESS THAN (TO_DATE(‘2022-02-01 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’, ‘NLS_CALENDAR=GREGORIAN’))

);

— 新增一个分区

ALTER TABLE tbl_orders

reorg partition by range (create_date)

(partition orders_part_5

values less than (to_date(‘2022-04-01 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’, ‘NLS_CALENDAR=GREGORIAN’))

);

在分区表中,可以在插入数据时,根据具体的范围自动把数据放入相应的分区。比如,当插入数据订单号为131415且订单创建日期是2021-12-19时,就可以把此条数据放入orders_part_3 分区。

INSERT INTO TBL_ORDERS

(order_id,order_name,create_date)

VALUES

(131415,’Order_1′,’2021-12-19′);

注意:在使用Range分区的时候,如果需要新增一个分区,则必须先合并已经存在的若干个分区,再新增新的分区。除了范围分区,类似于哈希分区(Hash Partition)、列表分区(List Partition)以及复合分区(Composite Partition)也可以使用alter table语句来添加分区。

通过在Oracle数据库中通过alter table使用专门的分区管理功能,可以解决大量数据存储和表处理时所带来的性能问题,使得系统性能得到提升,大大减轻DBA在数据库管理上的工作量。


数据运维技术 » Oracle数据库添加分区(oracle添加分区)