As we know the ‘update indexes’ clause is used to drop the local indexes and update the global index when we drop a partition. So the indexes will still be VALID”
The following example shows when we drop an empty partition, the ” Update Indexes” clause is not required.
1) Create partition table
SQL>CREATE TABLE TEST_TBL
(
id number,
name varchar2(80)
)
PARTITION BY RANGE ( id )
( PARTITION p1 VALUES LESS THAN (1000),
PARTITION p2 VALUES LESS THAN (2000)
);
Table created.
2) Insert records into partition
SQL>begin
for i in 1..1800 loop
insert into TEST_TBL values (i, 'TEST'||to_char(i) );
end loop;
commit;
end;
PL/SQL procedure successfully completed.
3)Create global index:
SQL> create index id_idx on TEST_TBL (id) global;
Index created.
SQL> select index_name, index_type, status
from all_indexes
where index_name='ID_IDX';
INDEX_NAME INDEX_TYPE STATUS
------------- ----------- --------
ID_IDX NORMAL VALID
4) Empty partition p2 by deleting all records in p2 partition
SQL> select count(*) from TEST_TBL ;
COUNT(*)
----------
1800
SQL> select count(*) from TEST_TBL partition ( p1);
COUNT(*)
----------
999
SQL> select count(*) from TEST_TBL partition ( p2);
COUNT(*)
----------
801
SQL> delete from TEST_TBL where ID >= 1000;
801 rows deleted.
SQL>commit;
Commit complete
5) Drop the empty partition p2, and confirm the global index is still valid
SQL>alter table TEST_TBL drop partition p2;
Table altered.
SQL> select index_name, index_type, status
from all_indexes
where index_name='ID_IDX';
INDEX_NAME INDEX_TYPE STATUS
-------------------- --------------------------- --------
ID_IDX NORMAL VALID