Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Generic "Can I extend?" check

Re: Generic "Can I extend?" check

From: Connor McDonald <connor_mcdonald_at_yahoo.com>
Date: Thu, 08 Aug 2002 21:37:01 +0100
Message-ID: <3D52D66D.4AC0@yahoo.com>


Niall Litchfield wrote:
>
> "Connor McDonald" <connor_mcdonald_at_yahoo.com> wrote in message
> news:3D518D84.4A77_at_yahoo.com...
> > I've been asked to write a generic routine to determine if a segment can
> > extend. Easy enough except for auto-alloc lmt's where 'next_extent' is
> > null (ie indeterminate) in xxx_SEGMENTS.
> >
> > So here is my current compromise (in pseudo-code)
> >
> > where nvl(next_extent,
> > case
> > when initial_extent < 1m then
> > case when extents < 16 then next = 64k,
> > when extents < 80 then next = 1m,
> > when extents < 200 then next = 8m,
> > else next = 64m
> > when initial_extent >= 1m then
> > case when extents < 64 then next = 1m,
> > when extents < 184 then next = 8m,
> > else next = 64m )
> > > largest_free_space_chunk_in_tablespace
> >
> > The rough translation being:
> > - auto-alloc extents are 16x64k, then 64x1m, then 120x8m, then 64m, when
> > the initial_extent is less than 1m
> > - auto-alloc extents are 64x1m, then 120x8m, then 64m, when the
> > initial_extent is equal/more than 1m
> >
> > In the spirit of "open source", I'm throwing this out the community
> > asking for counter-examples which break the above formula.
>
> Jonathan pointed out to me back in March that the results you get above are
> what happens when you test creating one table in an otherwise empty
> tablespace, (and that even these values differ between oracle versions yours
> looks like it came from 9i). This discussion is here
>
> http://shrinkalink.com/307
>
> I haven't actually done the test (I'm in the middle of upgrading our ERP
> system so don't get much time for playing) but I suspect that you would be
> able to break your code by filling a small tablespace with a number of
> differently sized objects leaving random chunks of differently sized free
> space scattered about the place. In other words if the tablespace has say a
> 64k and a 1m chunk of free space left but you are now in the 8mb extent
> range I rather suspect that an autoallocate tablespace will allocate first
> the 1m and then the 64 k as required.
>
> --
> Niall Litchfield
> Oracle DBA
> Audit Commission UK
> *****************************************
> Please include version and platform
> and SQL where applicable
> It makes life easier and increases the
> likelihood of a good answer
>
> ******************************************

Exactly.

I did some basic playing - like leaving (say) some 800k chunks free in a tspace and then trying "(initial 2m)" and seeing if Oracle was smart enough to divvy it up...and it did not.

But I appreciate the testing you did - thats what I'm after. I'm keen to have someone break (and thus improve) my formula

Cheers
Connor

-- 
==============================
Connor McDonald

http://www.oracledba.co.uk

"Some days you're the pigeon, some days you're the statue..."
Received on Thu Aug 08 2002 - 15:37:01 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US