So far I haven't seen anyone suggest an IOT. I'd imagine that this sort of table would make a reasonably good candidate for an IOT (depending I guess on whether you end up using overflow segments or not). It seems, at least at first glance, to have enough similarities to a queue or message table to be worth exploring. On Wed, Jan 26, 2011 at 7:58 AM, LS Cheng <exriscer@xxxxxxxxx> wrote: > Thanks! > > I am not sure if we can change the entire table logic in the short term > though, this is a third party developed package and although they are > willing to make changes to implement this they might take months. > > So back to my question if I make insert select in a ordered fashion should > the fragmentation improve? > > Thanks > > > > > On Wed, Jan 26, 2011 at 1:18 AM, Tim Gorman <tim@xxxxxxxxx> wrote: > >> LSC, >> >> Attached is a SQL*Plus script with a demo test case for partitioned >> UNION-ALL views, in case you're interested in seeing how easy it is? I've >> had this script (or one like it) since Oracle7 days... >> >> Hope this helps... >> >> Tim Gorman >> consultant -> Evergreen Database Technologies, Inc. >> postal => 13087 West Cedar Drive #225, Lakewood CO 80228 >> website => http://www.EvDBT.com/ <http://www.evdbt.com/> >> email => Tim@xxxxxxxxx >> mobile => +1-303-885-4526 >> fax => +1-303-484-3608 >> Lost Data? => http://www.ora600.be/ for info about DUDE... >> >> >> On 1/25/2011 1:41 PM, Stephens, Chris wrote: >> >> Why not just roll your own weekly partitions? >> >> >> >> A table for each week + UNION ALL view + some PL/SQL to truncate oldest >> weekly table + possibly some modifications to either the existing loading >> procedures. >> >> >> >> >> >> >> >> >> >> *From:* oracle-l-bounce@xxxxxxxxxxxxx [ >> mailto:oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx>] *On >> Behalf Of *LS Cheng >> *Sent:* Tuesday, January 25, 2011 2:10 PM >> *To:* Oracle Mailinglist >> *Subject:* reduce table fragmentation by design >> >> >> >> Hi >> >> We have a database which receives statistics data every 5 minutes and this >> data goes to a heap table, not partitioned because this is Standard Edition >> 10.2.0.4. >> >> The table has around 50 million of rows, most data are inserted using >> insert into select........., around 80%, the rest 20% plain insert into... >> values.... >> >> The table is formed by a surrogate key, a timestamp and several columns >> which stores numbers, every week or so there is a purge process whcih >> retains 45 days data, the column used to purge is the timestamp. >> >> The problem is after sometime the table is so fragmentated that to read >> 10000 rows through 10000 index scans each row is stored in different data >> blocks. So basically for each 10000 scan 10000 blocks must be read (plus the >> index scan but that is little, only 60 blocks or so). The way to relieve >> this performance problem is rebuild the table and the indexes. >> >> I wonder if following would help to reduce fragmentation, in the insert... >> select statement add an order by timestamp clause so all rows are inserted >> in order, since the purge process is based on timestamp this will remove >> rows sequentially (located in same extent). >> >> I have some other ideas such as shrink table compact space once a couple >> of times a day and shrink the table once 2 days, then every month rebuild >> the table once using alter table move. >> >> I am also thiking to move the table to manually segment space management >> with old freelists and pctused. >> >> >> Thanks >> >> -- >> LSC >> >> CONFIDENTIALITY NOTICE: >> This message is intended for the use of the individual or entity to which >> it is addressed and may contain information that is privileged, confidential >> and exempt from disclosure under applicable law. If the reader of this >> message is not the intended recipient or the employee or agent responsible >> for delivering this message to the intended recipient, you are hereby >> notified that any dissemination, distribution or copying of this >> communication is strictly prohibited. If you have received this >> communication in error, please notify us immediately by email reply. >> >> >> > -- Niall Litchfield Oracle DBA http://www.orawin.info