2013/10/18

Published 10月 18, 2013 by

在Partition Table/Index中,找出最大的Partition Table/Index

在Oracle10G中,常會使用partition table,好處是要刪除資料可以一次drop掉partition table,但
經過一段時間之後,需要增加partition table,若沒有增加,新的資料常會塞不進去,造成異常狀況。


以下的語法,是找出目前最大的Partition table,經過一段時間之後,記的要增加,不要忘記掉了。

Partition table找尋,當然是找ALL_TAB_PARTITIONS這一個TABLE了。

SELECT TABLE_NAME,max(PARTITION_NAME) FROM ALL_TAB_PARTITIONS WHERE TABLE_OWNER='STGC5'<--根據條件修改
group by TABLE_NAME order by max(PARTITION_NAME);

新增語法(以下是新增一季的partition table語法):

select 'ALTER TABLE '||TABLE_NAME||' ADD PARTITION P2014Q4 VALUE LESS THAN ( to_date(''20150101 00:00:00'',''YYYYMMDD HH24:MI:SS'') ) TABLESPACE STGC5_TRG_2014Q4;' 
from dba_tab_partitions t where table_owner='STGC5' AND PARTITION_NAME='P2013Q4';



Partition Index找尋,當然是找ALL_TAB_PARTITIONS這一個TABLE了。

SELECT INDEX_NAME,max(PARTITION_NAME) FROM ALL_IND_PARTITIONS WHERE INDEX_OWNER='STGC5' HAVING MAX(PARTITION_NAME)='P2013Q4' <--這一段根據條件修改
group by INDEX_NAME order by max(PARTITION_NAME);

因這一筆的範列partition index太少,所以只列出語法:

Alter index IDX_COMPDLTYPETIME_600A rebuild partition P2014Q1 tablespace STGC5_TRG_IDX_2014Q1;


Reference:
Partition table種類:

Partition說明/新增/刪除: