Dont use a PL/SQL cursor and loop, when bulk deletes are a possibility.

Delete from table where rownum < 1000;
commit;
Delete from table where rownum < 1000;
commit;
.....................................................

I would prefer this approach. 200000 is not much. With a create table as
you suggest, a lot of things to take care of. Viz. grants, rename, rebuild
indexes, space, backup after the creation, drop the old table, drop
indexes, et all.

Raj




                                                                                       
                             
                    Gurelei                                                            
                             
                    <gurelei@yaho        To:     Multiple recipients of list ORACLE-L 
<[EMAIL PROTECTED]>        
                    o.com>               cc:                                           
                             
                    Sent by:             Subject:     Delete performance               
                             
                    root@fatcity.                                                      
                             
                    com                                                                
                             
                                                                                       
                             
                                                                                       
                             
                    August 01,                                                         
                             
                    2002 10:03 AM                                                      
                             
                    Please                                                             
                             
                    respond to                                                         
                             
                    ORACLE-L                                                           
                             
                                                                                       
                             
                                                                                       
                             




Hi all:

Someone at my shop wants to delete about 20% of roes
in a table (200000 rows out of a million). He wants to
set  a commit frequency (like every 1000 records or
so)
to keep the rbs under control.  I am not aware of any
easy way to do it other then writing a procedure, but
I may be missing something here. Is there any simple
way to accomplish this?

Also I have suggested instead of deleting 20% of the
rows, create a new table as a select and insert the
rest of the rows into it (then rebuild the indices and
rename). This can be done in nologging mode, without
redo logs and rbs segments. Is this a good idea to
try?

thanks for any info

Gene


-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: 
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to