Could you preserve the constraints and indices if you do somthing similar
like

  create table temp as select * from table1 nologging
  TRUNCATE table table1
                                                                                       
 
                                                             ALTER TABLE table1        
 
                                                           NOLOGGING;                  
 
                                                                                       
 



  ALTER TABLE table1 MODIFY(column...);

  Do a direct load insert
                                                                                       
 
                                                            ALTER TABLE table1 
LOGGING; 
                                                                                       
 
                                                                                       
 



  DROP TABLE temp

I have not done direct load insert but read it can be done for NOLOGGING
Rick



                                                                                       
                
                    DENNIS WILLIAMS                                                    
                
                    <DWILLIAMS@LIFE       To:     Multiple recipients of list ORACLE-L 
                
                    TOUCH.COM>             <[EMAIL PROTECTED]>                      
                
                    Sent by:              cc:                                          
                
                    [EMAIL PROTECTED]       Subject:     RE: Suggestions solicited - 
Change Column       
                    m                      Datatype from Number to                     
                
                                                                                       
                
                                                                                       
                
                    10/24/2002                                                         
                
                    04:35 PM                                                           
                
                    Please respond                                                     
                
                    to ORACLE-L                                                        
                
                                                                                       
                
                                                                                       
                




Deepak, If there are many columns on these tables, your method may be best.
However, this will generate a lot of redo. You can usually accomplish this
with a CTAS nologging, which won't generate redo. If you really don't want
to change the location, you can:
    create table temp as select * from table1 nologging
    drop table table1
    create table table1 (column, column . . . ) as select * from temp
nologging
    drop table temp




Dennis Williams
DBA, 40%OCP
Lifetouch, Inc.
[EMAIL PROTECTED]

-----Original Message-----
Sent: Thursday, October 24, 2002 3:15 PM
To: Multiple recipients of list ORACLE-L


We have a need to change the datatype of several columns in a table from
number to varchar2. Most of the rows have data in these columns hence a
direct 'alter table ...' will not work.

We plan to create a temp table, move the data from these colums to that
table, modify the column datatype from number to varchar2 and then update
the colums with the data that was moved to the temp table.

Any suggestions/comments or a better way to do this ? Oh, and we are on
8.1.7.1

thanx
deepak


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

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
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).




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

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
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