【Oracle】Oracle给已有分区表上添加分区(含子分区)

【Oracle】Oracle给已有分区表上添加分区(含子分区)


一、原有分区表结构

create table TZQ_LOG_T(
  log_id           NUMBER not null,
  log_name         VARCHAR2(50),
  log_title        VARCHAR2(200),
  log_content      VARCHAR2(4000),
  log_type         NUMBER default 1,
  log_account_no   VARCHAR2(200),
  active_date      DATE default SYSDATE not null,
  delete_flag      NUMBER default 0,
  created_by       NUMBER not null,
  creation_date    DATE default SYSDATE not null,
  last_updated_by  NUMBER not null,
  last_update_date DATE default SYSDATE not null,
  description      VARCHAR2(4000),
)
partition    by range (CREATION_DATE)
subpartition by list  (log_type)
(
  partition TZQ_LOG_T_P1 values less than (TO_DATE(' 2014-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P1_SUBP1 values (1),
    subpartition TZQ_LOG_T_P1_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P2 values less than (TO_DATE(' 2015-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P2_SUBP1 values (1),
    subpartition TZQ_LOG_T_P2_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P3 values less than (TO_DATE(' 2016-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P3_SUBP1 values (1),
    subpartition TZQ_LOG_T_P3_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P4 values less than (TO_DATE(' 2017-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P4_SUBP1 values (1),
    subpartition TZQ_LOG_T_P4_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P5 values less than (TO_DATE(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P5_SUBP1 values (1),
    subpartition TZQ_LOG_T_P5_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P6 values less than (TO_DATE(' 2019-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P6_SUBP1 values (1),
    subpartition TZQ_LOG_T_P6_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P7 values less than (TO_DATE(' 2020-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P7_SUBP1 values (1),
    subpartition TZQ_LOG_T_P7_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P8 values less than (TO_DATE(' 2021-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P8_SUBP1 values (1),
    subpartition TZQ_LOG_T_P8_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P9 values less than (TO_DATE(' 2022-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P9_SUBP1 values (1),
    subpartition TZQ_LOG_T_P9_SUBP2 values (2)
  ),
  partition TZQ_LOG_T_P10 values less than (TO_DATE(' 2023-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  (
    subpartition TZQ_LOG_T_P10_SUBP1 values (1),
    subpartition TZQ_LOG_T_P10_SUBP2 values (2)
  )
);
COMMENT ON TABLE  TZQ_LOG_T IS 'TZQ日志表';
COMMENT ON COLUMN TZQ_LOG_T.LOG_ID IS '日志表ID,主键';
COMMENT ON COLUMN TZQ_LOG_T.LOG_NAME IS '日志名';
COMMENT ON COLUMN TZQ_LOG_T.LOG_TITLE IS '日志标题';
COMMENT ON COLUMN TZQ_LOG_T.LOG_CONTENT IS '日志内容';
COMMENT ON COLUMN TZQ_LOG_T.LOG_TYPE IS '日志类型:1-超级日志;2-普通日志';
COMMENT ON COLUMN TZQ_LOG_T.LOG_ACCOUNT_NO IS '日志账户编号';
COMMENT ON COLUMN TZQ_LOG_T.ACTIVE_DATE IS '生效日期';
COMMENT ON COLUMN TZQ_LOG_T.DELETE_FLAG IS '删除标识:记录该记录是否删除,Y/N';
COMMENT ON COLUMN TZQ_LOG_T.CREATED_BY IS '创建人: IT审计字段';
COMMENT ON COLUMN TZQ_LOG_T.CREATION_DATE IS '创建时间:IT审计字段';
COMMENT ON COLUMN TZQ_LOG_T.LAST_UPDATED_BY IS '最后修改人:IT审计字段';
COMMENT ON COLUMN TZQ_LOG_T.LAST_UPDATE_DATE IS '最后修改时间:IT审计字段';
COMMENT ON COLUMN TZQ_LOG_T.DESCRIPTION IS '对本条记录的说明:IT审计字段';
/* INDEX */
ALTER  TABLE TZQ_LOG_T ADD CONSTRAINT PK_TZQ_LOG_T PRIMARY KEY (LOG_ID);
CREATE UNIQUE INDEX UK_TZQ_LOG_1 ON TZQ_LOG_T (CASE  WHEN (DELETE_FLAG=0 AND LOG_TYPE=1) THEN LOG_ACCOUNT_NO ELSE NULL END, CASE  WHEN (DELETE_FLAG=0 AND LOG_TYPE=1) THEN ACTIVE_DATE ELSE NULL END);
CREATE INDEX IDX_TZQ_LOG_1 ON TZQ_LOG_T (LOG_TYPE);
CREATE INDEX IDX_TZQ_LOG_2 ON TZQ_LOG_T (DELETE_FLAG);
CREATE INDEX IDX_TZQ_LOG_3 ON TZQ_LOG_T (CREATION_DATE);
CREATE INDEX IDX_TZQ_LOG_4 ON TZQ_LOG_T (LAST_UPDATE_DATE);
CREATE INDEX IDX_TZQ_LOG_5 ON ETS_SWHTH_CASH_STAT_HEAD_T (LOG_ID, TO_NUMBER(LOG_ACCOUNT_NO), DELETE_FLAG, CREATION_DATE);
CREATE SEQUENCE TZQ_LOG_S;

二、添加分区(含子分区)

alter table TZQ_LOG_T
add partition TZQ_LOG_T_P12 values less than (TO_DATE(' 2025-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
(subpartition TZQ_LOG_T_P12_SUBP1 values (1),
 subpartition TZQ_LOG_T_P12_SUBP2 values (2));
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以回答这个问题。 对于 Oracle 数据库,添加范围分区表的语法规则如下: CREATE TABLE table_name ( column1 datatype, column2 datatype, ... ) PARTITION BY RANGE (column_name) ( PARTITION partition_name1 VALUES LESS THAN (value1), PARTITION partition_name2 VALUES LESS THAN (value2), PARTITION partition_name3 VALUES LESS THAN (value3), ... ); 其中,column_name 是用来进行分区的列名,value1、value2、value3 等是用来指定分区范围的值。 例如,我们可以创建一个按照时间范围进行分区的表: CREATE TABLE sales ( sale_id NUMBER(10), sale_date DATE, sale_amount NUMBER(10,2) ) PARTITION BY RANGE (sale_date) ( PARTITION sales_q1_2021 VALUES LESS THAN (TO_DATE('2021-04-01', 'YYYY-MM-DD')), PARTITION sales_q2_2021 VALUES LESS THAN (TO_DATE('2021-07-01', 'YYYY-MM-DD')), PARTITION sales_q3_2021 VALUES LESS THAN (TO_DATE('2021-10-01', 'YYYY-MM-DD')), PARTITION sales_q4_2021 VALUES LESS THAN (TO_DATE('2022-01-01', 'YYYY-MM-DD')) ); 对于 PostgreSQL 数据库,添加范围分区表的语法规则如下: CREATE TABLE table_name ( column1 datatype, column2 datatype, ... ) PARTITION BY RANGE (column_name) ( PARTITION partition_name1 START (value1) END (value2), PARTITION partition_name2 START (value2) END (value3), PARTITION partition_name3 START (value3) END (value4), ... ); 其中,column_name 是用来进行分区的列名,value1、value2、value3 等是用来指定分区范围的值。 例如,我们可以创建一个按照时间范围进行分区的表: CREATE TABLE sales ( sale_id INTEGER, sale_date DATE, sale_amount NUMERIC(10,2) ) PARTITION BY RANGE (sale_date) ( PARTITION sales_q1_2021 START ('2021-01-01') END ('2021-04-01'), PARTITION sales_q2_2021 START ('2021-04-01') END ('2021-07-01'), PARTITION sales_q3_2021 START ('2021-07-01') END ('2021-10-01'), PARTITION sales_q4_2021 START ('2021-10-01') END ('2022-01-01') ); 希望这个回答对您有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tzq@2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值