Oracle通過最小分割槽增加分割槽的SQL
阿新 • • 發佈:2020-10-23
以下是參照changjian的分割槽指令碼建立的從最小分割槽split分割槽的指令碼,供參考。 --split partition from min partition_name DECLARE V_BEGIN_DT DATE; IN_PART_TYPE VARCHAR2(30):= 'PD_MAX'; STR_PART_DT VARCHAR2(30); STR_DT VARCHAR2(30); v_partitionName VARCHAR2(500); BEGIN FOR I IN(SELECT TABLE_NAME,MIN(PARTITION_NAME) ASPARTITION_NAME FROM USER_TAB_PARTITIONS T INNER JOIN CITI_WORKFLOW_TASK_CONFIG T1 ON T.TABLE_NAME = 'TEST_TABLE' WHERE PARTITION_NAME NOT IN('PD_MAX') GROUP BY TABLE_NAME) LOOP V_BEGIN_DT := TO_DATE(SUBSTR(I.PARTITION_NAME,4),'YYYYMMDD'); v_partitionName:=i.partition_name; WHILE V_BEGIN_DT >= DATE'2018-01-31' --擴充套件至20171231 LOOP STR_PART_DT := trim(TO_CHAR(trunc(V_BEGIN_DT,'mm'), 'YYYY-MM-DD HH24:MI:SS')); STR_DT := TO_CHAR(last_day(add_months(V_BEGIN_DT,-1)),'YYYYMMDD'); ||' AT(TO_DATE('||''||STR_PART_DT||''',''YYYY-MM-DD HH24:MI:SS'')) INTO (PARTITION PD_'||STR_DT||',PARTITION '||v_partitionName||')'); EXECUTE IMMEDIATE 'ALTER TABLE '||I.TABLE_NAME||' SPLIT PARTITION '||v_partitionName ||' AT(TO_DATE('''||STR_PART_DT||''',''YYYY-MM-DD HH24:MI:SS'')) INTO (PARTITION PD_'||STR_DT||',PARTITION '||v_partitionName||')'; V_BEGIN_DT := ADD_MONTHS(V_BEGIN_DT,-1); V_PARTITIONNAME:='PD_'||STR_DT; END LOOP; END LOOP; END;