目录
1、创建二级分区表,主分区按时间范围每月一分,子分区按任务编码哈希分。
2、查询每个主分区下的子分区数量
3、查询所有数据每月的数据总量
4、查询每个主分区下的行数和累加行数
5、查询子分区的名称(32分区,默认名为 DMHASHPART0-DMHASHPART31)
6、查询主分区‘P202411’下子分区的数据分布和累加行数(子分区表名格式为 TABLENAME_PARTITIONNAME_SUBPARTITION)
7、切换和还原分区表
CREATE TABLE ORDER_RESULT_2P
(
"ID" VARCHAR2(36) NOT NULL,
"CREATOR_ID" VARCHAR2(36),
"CREATE_TIME" TIMESTAMP(6) DEFAULT SYSDATE,
"UPDATE_TIME" TIMESTAMP(6) DEFAULT SYSDATE,
"UPDATOR_ID" VARCHAR2(36),
"DATA_FROM" VARCHAR2(80),
"RULE_TEXT" CLOB,
"AMOUNT" NUMBER(20,2),
"REPLACE_AMOUNT" NUMBER(20,2),
"ACCOUNT_MESSAGE" VARCHAR2(1024),
"IS_AUTO_CREATE" VARCHAR2(4),
"DELETE_FLAG" VARCHAR2(2),
"TASK_CODE" VARCHAR2(40),
"ACCOUNTING_MONTH" VARCHAR2(40),
NOT CLUSTER PRIMARY KEY("ID"))
PARTITION BY RANGE(ACCOUNTING_MONTH) -- 主分区:按时间范围(每月一个主分区)
SUBPARTITION BY HASH(TASK_CODE) -- 子分区:按任务编码哈希
SUBPARTITIONS 32 -- 每个主分区的子分区数
(
PARTITION P202401 VALUES EQU OR LESS THAN ('2024-01'),
PARTITION P202402 VALUES EQU OR LESS THAN ('2024-02'),
PARTITION P202403 VALUES EQU OR LESS THAN ('2024-03'),
PARTITION P202404 VALUES EQU OR LESS THAN ('2024-04'),
PARTITION P202405 VALUES EQU OR LESS THAN ('2024-05'),
PARTITION P202406 VALUES EQU OR LESS THAN ('2024-06'),
PARTITION P202407 VALUES EQU OR LESS THAN ('2024-07'),
PARTITION P202408 VALUES EQU OR LESS THAN ('2024-08'),
PARTITION P202409 VALUES EQU OR LESS THAN ('2024-09'),
PARTITION P202410 VALUES EQU OR LESS THAN ('2024-10'),
PARTITION P202411 VALUES EQU OR LESS THAN ('2024-11'),
PARTITION P202412 VALUES EQU OR LESS THAN ('2024-12'),
PARTITION P202501 VALUES EQU OR LESS THAN ('2025-01'),
PARTITION P202502 VALUES EQU OR LESS THAN ('2025-02'),
PARTITION P202503 VALUES EQU OR LESS THAN ('2025-03'),
PARTITION P202504 VALUES EQU OR LESS THAN ('2025-04'),
PARTITION P202505 VALUES EQU OR LESS THAN ('2025-05'),
PARTITION P202506 VALUES EQU OR LESS THAN ('2025-06'),
PARTITION P202507 VALUES EQU OR LESS THAN ('2025-07'),
PARTITION P202508 VALUES EQU OR LESS THAN ('2025-08'),
PARTITION P202509 VALUES EQU OR LESS THAN ('2025-09'),
PARTITION P202510 VALUES EQU OR LESS THAN ('2025-10'),
PARTITION P202511 VALUES EQU OR LESS THAN ('2025-11'),
PARTITION P202512 VALUES EQU OR LESS THAN ('2025-12'),
PARTITION P202601 VALUES EQU OR LESS THAN ('2026-01'),
PARTITION P202602 VALUES EQU OR LESS THAN ('2026-02'),
PARTITION P202603 VALUES EQU OR LESS THAN ('2026-03'),
PARTITION P202604 VALUES EQU OR LESS THAN ('2026-04'),
PARTITION P202605 VALUES EQU OR LESS THAN ('2026-05'),
PARTITION P202606 VALUES EQU OR LESS THAN ('2026-06'),
PARTITION P202607 VALUES EQU OR LESS THAN ('2026-07'),
PARTITION P202608 VALUES EQU OR LESS THAN ('2026-08'),
PARTITION P202609 VALUES EQU OR LESS THAN ('2026-09'),
PARTITION P202610 VALUES EQU OR LESS THAN ('2026-10'),
PARTITION P202611 VALUES EQU OR LESS THAN ('2026-11'),
PARTITION P202612 VALUES EQU OR LESS THAN ('2026-12'),
PARTITION P202701 VALUES EQU OR LESS THAN ('2027-01'),
PARTITION P202702 VALUES EQU OR LESS THAN ('2027-02'),
PARTITION P202703 VALUES EQU OR LESS THAN ('2027-03'),
PARTITION P202704 VALUES EQU OR LESS THAN ('2027-04'),
PARTITION P202705 VALUES EQU OR LESS THAN ('2027-05'),
PARTITION P202706 VALUES EQU OR LESS THAN ('2027-06'),
PARTITION P202707 VALUES EQU OR LESS THAN ('2027-07'),
PARTITION P202708 VALUES EQU OR LESS THAN ('2027-08'),
PARTITION P202709 VALUES EQU OR LESS THAN ('2027-09'),
PARTITION P202710 VALUES EQU OR LESS THAN ('2027-10'),
PARTITION P202711 VALUES EQU OR LESS THAN ('2027-11'),
PARTITION P202712 VALUES EQU OR LESS THAN ('2027-12')
);
SELECT partition_name,
subpartition_count,
composite,
high_value,
tablespace_name
FROM dba_tab_partitions
WHERE table_name = UPPER ('ORDER_RESULT_2P')
ORDER BY partition_position;
select accounting_month, count(*) from ORDER_RESULT_2P
group by accounting_month
order by accounting_month asc;
WITH p AS
(
SELECT 'P202401' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202401) UNION ALL
SELECT 'P202402' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202402) UNION ALL
SELECT 'P202403' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202403) UNION ALL
SELECT 'P202404' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202404) UNION ALL
SELECT 'P202405' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202405) UNION ALL
SELECT 'P202406' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202406) UNION ALL
SELECT 'P202407' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202407) UNION ALL
SELECT 'P202408' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202408) UNION ALL
SELECT 'P202409' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202409) UNION ALL
SELECT 'P202410' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202410) UNION ALL
SELECT 'P202411' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202411) UNION ALL
SELECT 'P202412' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202412) UNION ALL
SELECT 'P202501' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202501) UNION ALL
SELECT 'P202502' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202502) UNION ALL
SELECT 'P202503' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202503) UNION ALL
SELECT 'P202504' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202504) UNION ALL
SELECT 'P202505' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202505) UNION ALL
SELECT 'P202506' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202506) UNION ALL
SELECT 'P202507' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202507) UNION ALL
SELECT 'P202508' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202508) UNION ALL
SELECT 'P202509' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202509) UNION ALL
SELECT 'P202510' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202510) UNION ALL
SELECT 'P202511' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202511) UNION ALL
SELECT 'P202512' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202512) UNION ALL
SELECT 'P202601' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202601) UNION ALL
SELECT 'P202602' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202602) UNION ALL
SELECT 'P202603' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202603) UNION ALL
SELECT 'P202604' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202604) UNION ALL
SELECT 'P202605' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202605) UNION ALL
SELECT 'P202606' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202606) UNION ALL
SELECT 'P202607' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202607) UNION ALL
SELECT 'P202608' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202608) UNION ALL
SELECT 'P202609' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202609) UNION ALL
SELECT 'P202610' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202610) UNION ALL
SELECT 'P202611' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202611) UNION ALL
SELECT 'P202612' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202612) UNION ALL
SELECT 'P202701' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202701) UNION ALL
SELECT 'P202702' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202702) UNION ALL
SELECT 'P202703' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202703) UNION ALL
SELECT 'P202704' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202704) UNION ALL
SELECT 'P202705' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202705) UNION ALL
SELECT 'P202706' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202706) UNION ALL
SELECT 'P202707' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202707) UNION ALL
SELECT 'P202708' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202708) UNION ALL
SELECT 'P202709' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202709) UNION ALL
SELECT 'P202710' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202710) UNION ALL
SELECT 'P202711' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202711) UNION ALL
SELECT 'P202712' AS pars, COUNT(*) AS num FROM ORDER_RESULT_2P PARTITION (P202712)
)
SELECT pars, num, SUM(num) OVER(order by pars rows unbounded preceding) row_sum FROM p;
select * from all_objects
where object_name like '%ORDER_RESULT_2P%'
AND OBJECT_TYPE = 'TABLE SUBPARTITION';
WITH P AS(
select 'DMHASHPART0' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART0
union
select 'DMHASHPART1' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART1
union
select 'DMHASHPART2' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART2
union
select 'DMHASHPART3' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART3
union
select 'DMHASHPART4' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART4
union
select 'DMHASHPART5' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART5
union
select 'DMHASHPART6' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART6
union
select 'DMHASHPART7' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART7
union
select 'DMHASHPART8' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART8
union
select 'DMHASHPART9' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART9
union
select 'DMHASHPART10' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART10
union
select 'DMHASHPART11' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART11
union
select 'DMHASHPART12' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART12
union
select 'DMHASHPART13' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART13
union
select 'DMHASHPART14' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART14
union
select 'DMHASHPART15' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART15
union
select 'DMHASHPART16' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART16
union
select 'DMHASHPART17' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART17
union
select 'DMHASHPART18' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART18
union
select 'DMHASHPART19' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART19
union
select 'DMHASHPART20' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART20
union
select 'DMHASHPART21' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART21
union
select 'DMHASHPART22' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART22
union
select 'DMHASHPART23' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART23
union
select 'DMHASHPART24' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART24
union
select 'DMHASHPART25' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART25
union
select 'DMHASHPART26' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART26
union
select 'DMHASHPART27' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART27
union
select 'DMHASHPART28' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART28
union
select 'DMHASHPART29' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART29
union
select 'DMHASHPART30' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART30
union
select 'DMHASHPART31' as pars, count(*) as num from ORDER_RESULT_2P_P202411_DMHASHPART31
)
SELECT pars, num, SUM(num) OVER(order by pars rows unbounded preceding) row_sum FROM p;
-- 切换
ALTER TABLE ORDER_RESULT RENAME TO ORDER_RESULT_TEMP;
ALTER TABLE ORDER_RESULT_2P RENAME TO ORDER_RESULT;
-- 还原
-- ALTER TABLE ORDER_RESULT RENAME TO ORDER_RESULT_2P;
-- ALTER TABLE ORDER_RESULT_TEMP RENAME TO ORDER_RESULT;
其他内容可参考》》》达梦官方技术文档分区表 | 达梦技术文档