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