Re: Local Index Size

From: David Fitzjarrell <oratune_at_yahoo.com>
Date: Tue, 10 Jul 2012 09:03:43 -0700 (PDT)
Message-ID: <1341936223.58532.YahooMailNeo_at_web121605.mail.ne1.yahoo.com>



Which release of Oracle are you using?

David Fitzjarrell



From: Dba DBA <oracledbaquestions_at_gmail.com> To: ORACLE-L <oracle-l_at_freelists.org> Sent: Tuesday, July 10, 2012 9:49 AM
Subject: Local Index Size

I have a range partitioned table where each partition has a vastly different size. We recently ran a purge (over several months) to remove alot of old data. So it makes sense to explore rebuilding the tables to shrink them. When we rebuild the Table below, we shrink the size of the table. However, we have a local index that is the primary key. When we rebuild this index, it becomes much larger in size. All of the partitioned indexes become the same size. In many cases the size of the index in a partition is larger than the amount of data.
Why does oracle does? I am not sure why local indexes need to be the same size. I am guessing the 8gb size is based on the largest partition.

Note that the table name below has been changed.

TABLEA is range partitioned and has 10 partitions. TABLEA is not the real name of the table.
The partition sizes have a huge difference in size. This is a legacy system, so this was designed years ago. I can't just change this on the fly.
TABLEA has a Primary key local index. Fields: Partition Key, Sequence based counter

We have been running a purge process for several months that is deleting older data based on a complex set of logic. It makes sense to look at rebuilding the table to save space.
Here are the current sizes of each partition before rebuilding.

I copied the table to a test database. I rebuilt the partitions and they shrunk considerable.
PARTITION TABLEA_P000 is down to about 50mbs, but partition TABLEA_P001 is still 20 gbs.

I then rebuilt the primary key index, partition by partition. The overall size of the index increased. The index after rebuilding is 8gbs for each partition. In many cases the index
is larger than the data in the partition.

*So it looks like when you rebuild a local index, oracle makes each partition index the exact same size. Does anyone know why that is? *

so segment: TABLEA_PK_I_P000  (index segment)        grows from: 524,288,000 to 8gbs after the rebuild, but we do not have much data in that partition. This index is much larger than the segment that houses it. All of the index segments are 8 gbs.

Table Size by Partition before Rebuild

PARTITION_NAME                            BYTES
------------------------------ ----------------

TABLEA_P000                      524,288,000
TABLEA_P001                    33,554,432,000
TABLEA_P002                    7,864,320,000
TABLEA_P003                    9,961,472,000
TABLEA_P004                    18,350,080,000
TABLEA_P005                    12,582,912,000
TABLEA_P006                    9,437,184,000
TABLEA_P007                    18,874,368,000
TABLEA_P008                    10,485,760,000
TABLEA_P009                    12,058,624,000

Index Size before rebuild:

PARTITION_NAME                            BYTES
------------------------------ ----------------

TABLEA_PK_I_P000                      524,288,000
TABLEA_PK_I_P001                    16,252,928,000
TABLEA_PK_I_P002                    3,145,728,000
TABLEA_PK_I_P003                    3,670,016,000
TABLEA_PK_I_P004                    6,815,744,000
TABLEA_PK_I_P005                    4,718,592,000
TABLEA_PK_I_P006                    3,670,016,000
TABLEA_PK_I_P007                    7,340,032,000
TABLEA_PK_I_P008                    4,194,304,000
TABLEA_PK_I_P009                    4,718,592,000


--

http://www.freelists.org/webpage/oracle-l
--

http://www.freelists.org/webpage/oracle-l Received on Tue Jul 10 2012 - 11:03:43 CDT

Original text of this message