Hoje o post é curto , porém, interessante.
Precisei atuar em um ambiente consideravelmente grande, onde havia uma tabela e suas várias partições.
O cliente solicitou o TRUNCATE em apenas uma partição. Eu atuei, o cliente validou e reportou que houve sucesso. Fiquei contente =)
Segue log de atuação:
-- Consultando partições da tabela
SQL> SELECT TABLE_NAME, PARTITION_NAME, TABLESPACE_NAME FROM DBA_TAB_PARTITIONS WHERE TABLE_NAME = 'TABLE_FISCAL';
TABLE_NAME PARTITION_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
TABLE_FISCAL UU_OO201205 MM_MM_ORA201205
TABLE_FISCAL UU_OO201206 MM_MM_ORA201206
TABLE_FISCAL UU_OO201207 MM_MM_ORA201207
TABLE_FISCAL UU_OO201208 MM_MM_ORA201208
TABLE_FISCAL UU_OO201209 MM_MM_ORA201209
TABLE_FISCAL UU_OO201210 MM_MM_ORA201210
TABLE_FISCAL UU_OO201211 MM_MM_ORA201211
TABLE_FISCAL UU_OO201212 MM_MM_ORA201212
TABLE_FISCAL UU_OO201301 MM_MM_ORA201301
TABLE_FISCAL UU_OO201302 MM_MM_ORA201302
TABLE_FISCAL UU_OO201303 MM_MM_ORA201303
O cliente solicitou para truncar a partição do mês de março de 2013. Logo, deveria truncar a partição UU_OO201303.
-- Comando para truncar a partição
SQL> ALTER TABLE TABLE_FISCAL TRUNCATE PARTITION UU_OO201303;
Table truncated.
-- Validando STATUS dos índices da tabela TABLE_FISCAL
SQL> SELECT OWNER, INDEX_NAME, STATUS FROM DBA_INDEXES WHERE TABLE_NAME = 'TABLE_FISCAL';
OWNER INDEX_NAME STATUS
------------------------------ ------------------------------ --------
SYS IX_TABLE_FISCAL_001 N/A
SYS IX_TABLE_FISCAL_002 N/A
N/A siginifica que o índice também é particionado. Está normal. Teríamos problemas se os índices estivessem UNUSABLE. Falaremos de UNUSABLE index posteriormente.
Até a próxima galera.
-->