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: bypass rollback for large insert statements

Re: bypass rollback for large insert statements

From: Connor McDonald <connor_mcdonald_at_yahoo.com>
Date: 2000/06/24
Message-ID: <39542507.1740@yahoo.com>#1/1

ddf_dba_at_my-deja.com wrote:
>
> In article <39534BBA.7E8_at_yahoo.com>,
> connor_mcdonald_at_yahoo.com wrote:
> > ddf_dba_at_my-deja.com wrote:
> > >
> > > In article <39536CB2.A4B7B25_at_italdata.it>,
> > > Gennaro Napolitano <gennaro.napolitano_at_italdata.it> wrote:
> > > > Hy
> > > >
> > > > I think you are talking about using the direct path loading,
> > >
> > > Direct path loading is available only via SQL*Loader. The 'append'
 hint
> > > is different.
> > >
> > > > if this is
> > > > true you need to use the append HINT as shown into the following
 code
> > > > block:
> > > >
> > > > INSERT /*+append */ INTO table_name (....)
> > > > SELECT (...) FROM table_name
> > > >
> > >
> > > This will only avoid searching the freelist for available entries in
 the
> > > table by starting the inserts into the first empty data block. This
> > > does NOT eliminate creation of rollback entries, although it will
> > > perform more quickly than a garden-variety insert.
> > >
> > > > or furthermore you can use the clause NOLOGGING to avoid writing
 redo
> > > > information to the redo log buffer:
> > > >
> > > > INSERT /*+append */ INTO table_name (....) NOLOGGING
> > > > SELECT (...) FROM table_name
> > > >
> > >
> > > NOLOGGING is an option to INSERT in Oracle 8.x but not for Oracle
 7.3.4
> > > which is the version running against the application. The only way
 to
> > > disable redo logging in 7.3.4 is to create the object being inserted
> > > into as UNRECOVERABLE. The object has to have been created as an
> > > unrecoverable object to bypass the redo log entries for all
 transactions
> > > against that object. That STILL does NOT eliminate rollback entries
 for
> > > the transaction.
> > >
> > > > Hope this helps
> > > >
> > > > Ciao Gennaro
> > > >
> > > > jim shorts wrote:
> > > >
> > > > > I have an application that is updating a very large Oracle 7.3.4
> > > > > database. at the end of the application are some insert
 statements
 that
> > > > > affect about 100K rows of data. i've tested the statements and
 I'm
 sure
> > > > > they complete successfully. I'm trying to find out if their is a
 clause
> > > > > I can add to the insert statements that will bypass the rollback
> > > > > segments and just update the database. For example:
> > > > > insert into tablename (col1, col2, col3) values (data, data+1,
 data)
> > > > > norollback;
> > > > >
> > > > > any input would be greatly appreciated. thanks.
> > > >
> > > >
> > >
> > > --
> > > David Fitzjarrell
> > > Oracle Certified DBA
> > >
> > > Sent via Deja.com http://www.deja.com/
> > > Before you buy.
> >
> > I'll think you'll find that it does achieve (almost) zero rollback
 since
> > the only thing needed to reset is the hwm if things go wrong.
> >
> > You can prove this relatively easily - turn all your rollbacks offline
> > and create a tiny one (say 16k maxextents 2) - your insert will still
> > work.
> >
> > HTH
> > --
> > ===========================================
> > Connor McDonald
> > http://www.oracledba.co.uk
> >
> > We are born naked, wet and hungry...then things get worse
> >
>
> My question is: are you running 7.3.4.4 or 8.x? NOLOGGING is not
> available in 7.3.4.4 and I don't believe that the UNRECOVERABLE clause
> is available in 7.3.4.4 with respect to the INSERT statement.
>
> --
> David Fitzjarrell
> Oracle Certified DBA
>
> Sent via Deja.com http://www.deja.com/
> Before you buy.

Agreed.

-- 
===========================================
Connor McDonald
http://www.oracledba.co.uk

We are born naked, wet and hungry...then things get worse
Received on Sat Jun 24 2000 - 00:00:00 CDT

Original text of this message

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