Oracle通过指定日期删除对应的分区

您所在的位置:网站首页 oracle删除某个分区 Oracle通过指定日期删除对应的分区

Oracle通过指定日期删除对应的分区

2024-03-20 17:37| 来源: 网络整理| 查看: 265

当使用时间字段作为分区字段,使用间隔分区的时候,分区名称是由系统指定的,所以我们在删除分区的时候就没办法指定分区名称。这个时候我们如果要删除指定分区,通过时间来指定是一个很好的方法。

语法示例:

ALTER TABLE table_name DROP PARTITION FOR(TO_DATE('20200702','yyyymmdd')) UPDATE GLOBAL INDEXES;

下面我们来简单的演示一下:

-- 创建测试表 CREATE TABLE T_TEST_PARTITION ( "C_ID" NUMBER, "C_DATE" DATE ) PARTITION BY RANGE (C_DATE) INTERVAL (NUMTODSINTERVAL(1,'DAY')) (PARTITION P1 VALUES LESS THAN(TO_DATE('2020-07-01', 'yyyy-mm-dd'))); -- 插入测试数据 insert into T_TEST_PARTITION values(1,to_date('20200701 09:09:09','yyyymmdd hh24:mi:ss')); insert into T_TEST_PARTITION values(2,to_date('20200702 09:09:09','yyyymmdd hh24:mi:ss')); insert into T_TEST_PARTITION values(3,to_date('20200703 09:09:09','yyyymmdd hh24:mi:ss')); insert into T_TEST_PARTITION values(4,to_date('20200704 09:09:09','yyyymmdd hh24:mi:ss')); insert into T_TEST_PARTITION values(5,to_date('20200705 09:09:09','yyyymmdd hh24:mi:ss')); commit; -- 这里可以看到插入5条数据成功 SELECT * FROM T_TEST_PARTITION; C_ID C_DATE ---------- ------------------- 1 2020-07-01 09:09:09 2 2020-07-02 09:09:09 3 2020-07-03 09:09:09 4 2020-07-04 09:09:09 5 2020-07-05 09:09:09 -- 插入的5条数据对应创建了5个分区,P1是建表时候预设的分区 SELECT PARTITION_NAME,HIGH_VALUE FROM DBA_TAB_PARTITIONS WHERE TABLE_NAME='T_TEST_PARTITION'; PARTITION_NAME HIGH_VALUE ------------------------------ -------------------------------------------------------------------------------- P1 TO_DATE(' 2020-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P43 TO_DATE(' 2020-07-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P44 TO_DATE(' 2020-07-03 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P45 TO_DATE(' 2020-07-04 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P46 TO_DATE(' 2020-07-05 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P47 TO_DATE(' 2020-07-06 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA -- 指定删除7月2日对应的分区 ALTER TABLE T_TEST_PARTITION DROP PARTITION FOR(TO_DATE('20200702','yyyymmdd')) UPDATE GLOBAL INDEXES; -- 这里看到,对应的数据(C_ID=2)已经删除了 SELECT * FROM T_TEST_PARTITION; C_ID C_DATE ---------- ------------------- 1 2020-07-01 09:09:09 3 2020-07-03 09:09:09 4 2020-07-04 09:09:09 5 2020-07-05 09:09:09 -- 这里看到,对应的分区(SYS_P44)已经删除了 SELECT PARTITION_NAME,HIGH_VALUE FROM DBA_TAB_PARTITIONS WHERE TABLE_NAME='T_TEST_PARTITION'; PARTITION_NAME HIGH_VALUE ------------------------------ -------------------------------------------------------------------------------- P1 TO_DATE(' 2020-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P43 TO_DATE(' 2020-07-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P45 TO_DATE(' 2020-07-04 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P46 TO_DATE(' 2020-07-05 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA SYS_P47 TO_DATE(' 2020-07-06 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3