Re: Oracle's automatic extent allocation (next extent) size algorithm - anyone?

  • From: Jonathan Lewis <jlewisoracle@xxxxxxxxx>
  • To: Chris Taylor <christopherdtaylor1994@xxxxxxxxx>
  • Date: Tue, 30 Mar 2021 17:30:06 +0100

I don't think a complete algorithm has ever been published because there
are so many possible variations depending on whether it's a single-file or
multi-file tablespace, depending on what's been created and dropped
previously and what holes are arround, whether or not the insert is
parallel or not, and whether you're creating a partitioned object.  There
may be other complications.

In the simplest case in the 8KB block size it seems to be:
16 extents at 64KB (8 blocks) - to get to 1MB extent
63 extents at 1MB (128 blocks) - to get to a total of 64MB extent
120 extents at 8MB (1024 blocks) - to get to 1GB
-- after that I think it may be 64MB extents all the way, but I have a
vague memory of someone testing to a very large segment size and finding
256MB as the next size.


Regards
Jonathan Lewis





On Tue, 30 Mar 2021 at 16:47, Chris Taylor <christopherdtaylor1994@xxxxxxxxx>
wrote:

Env: 12.1.0.2
Linux x86-64

For Oracle segments in Locally Managed Tablespaces with *AUTOMATIC* extent
allocation (instead of UNIFORM extent allocation) , does anyone have the
algorithm that Oracle uses to determine the next extent size that is based
on the size of the segment?

I used to have it where it went something like:

IF segment > xG , then next extent = xGB
IF Segment > xMB then next extent = xMB

I'm trying to find it but can't quickly locate it (because I'm not sure
what keywords to search for)

Chris

Other related posts: