Renaming columns? Hmmm. Sometimes I expect our developer doing unexpected moves. That's why I put views on top of the tables in such cases. Easier to rename columns :) Have a good day, guys, Vadim
-----Original Message----- Sent: Wednesday, May 15, 2002 11:19 AM To: Multiple recipients of list ORACLE-L Joe, I'm of the school of wishing...oh please..oh please...let us be able to easily rename columns and constraints in the next version.... That is until I am disappointed, then I'm of the school of whining and complaining...@#(*&) Oracle sucks...I hate renaming columns...I hate constraints...I hate 9i. And then Oracle announces a new version and I'm back in the school of wishing....oh please................................ -----Original Message----- Sent: Tuesday, May 14, 2002 11:03 PM To: Multiple recipients of list ORACLE-L Chris, i'm of the school of thought, UNTIL I use it and see it work, its vaporware. joe Grabowy, Chris wrote: > And constraints....and DBAs can revoke/grant other schemas objects.... > > -----Original Message----- > *From:* Toepke, Kevin M [mailto:[EMAIL PROTECTED]] > *Sent:* Tuesday, May 14, 2002 3:48 PM > *To:* Multiple recipients of list ORACLE-L > *Subject:* RE: {9i New Features: Online Reorg or DBMS_REDEFINITION > Package} > > A quick followup to this... > > > > I've done some testing of this package and concur with Joe. Its > kewl. Outside of renaming a column, it can be used to quickly > partition a non-partitioned table. Its much faster and easier than > using exchange partition. > > > > The 9iR2 new features whitepaper hints at a native rename column > command..... > > > > Caver > > -----Original Message----- > *From:* JOE TESTA [mailto:[EMAIL PROTECTED]] > *Sent:* Tuesday, May 14, 2002 2:58 PM > *To:* Multiple recipients of list ORACLE-L > *Subject:* {9i New Features: Online Reorg or DBMS_REDEFINITION > Package} > > Welcome to the next installment of 9i New Features, today's > topic is Online changes of objects, specifically we'll cover > the new package called DBMS_REDEFINITION. > > > > The spec for this package is located where all of the other > package sources are: > > > > ORACLE_HOME/rdbms/admin. The file is dbmshord.sql > > > > So what does this package give us? Well it gives the > capability to do online reorganization of a table. Ok so now > if you're not confused, you should be :) > > > In easy to understand terms, in the past when you wanted to > move a table to a new tablespace, drop a column, add a column, > change a column datatype, it require a exclusive lock on the > table during the operation(which if it was a large table could > lock it up for a long time). Well that is no longer the case, > those kinds of changes can be done while DML is still being > applied to the object. > > > > Let's take for an example something that all of us have been > asking for YEARS, the rename of a column. > > > > Look at this code, I've included comments within it so its > pretty much self-explanatory and you can run it against your > 9i database to see what if it really works. > > > > > -------------------------- BEGINNING OF SCRIPT > ----------------------------------- > > > > > set serveroutput on size 100000; > > > > -- let's drop a couple of tables so if we re-run we won't get > errors > drop table sales; > drop table sales_temp; > > > > -- create a new table, handful of columns with the last one > named incorrectly. > > > > create table sales > (sales_id number not null, > sales_amount number(10,2) not null, > salesman_id number(5) not null, > tax_amount number(5,2) not null, > bad_column_name varchar2(20) not null); > > > > -- add a PK since for online reorg it's required > > > > alter table sales add primary key(sales_id)- > > > > -- insert some data > > insert into sales values(1,20,4,5.70,'bogus'); > insert into sales values(2,30,6,6.70,'no way'); > insert into sales values(3,40,7,7.70,'XX way'); > insert into sales values(4,50,8,8.70,'YY way'); > insert into sales values(5,60,9,9.70,'ZZ way'); > insert into sales values(6,70,1,0.70,'AA way'); > insert into sales values(7,80,2,1.70,'BB way'); > insert into sales values(8,90,3,2.70,'CC way'); > insert into sales values(9,10,4,3.70,'DD way'); > insert into sales values(10,25,5,4.70,'EE way'); > > > > -- commit the data > > > > commit; > > > > > -- run the proc to see if this table can be reorganized > online, if we get an error, > -- then its not possible, otherwise we're good to go. > > > > execute dbms_redefinition.can_redef_table(USER,'SALES'); > > > > > -- we must create the temp table for this reorg to happen > manually, either with a > -- create table statement or via a create table as > select(no rows please to be copied) > -- this exercise is going to be to do a rename on the column, > so we need to create > -- the table making sure we have the new column name > > > > > > > > create table sales_temp > (sales_id number not null, > sales_amount number(10,2) not null, > salesman_id number(5) not null, > tax_amount number(5,2) not null, > good_column_name varchar2(20) not null); > > > > > -- have to have a PK on the temp table also. > > > > alter table sales_temp add primary key(sales_id); > > > > > -- lets desc the original to see what it looks like before > > > > prompt this is the sales desc before the change > desc sales; > > > > > -- ok lets fire up the redefinition, the parms are(SCHEMA, > OLD_TBL, TEMP_TBL, > -- then column mapping, notice we're mapping > bad_column_name to good_column_name). > > > > execute > dbms_redefinition.start_redef_table(USER,'SALES','SALES_TEMP', - > 'sales_id sales_id, sales_amount sales_amount, salesman_id > salesman_id, - > tax_amount tax_amount, bad_column_name good_column_name'); > > > > > -- at this point its YOUR responsiblity to put the triggers, > other FK constraints(disabled) > -- and indexes on the "temp" table before calling the next > part to do the "switch". > > > > -- DO THE OTHER INDEXES, ETC HERE > > > > -- ok time to finish up > > > > execute > dbms_redefinition.finish_redef_table(USER,'SALES','SALES_TEMP'); > > > > prompt this is the definition of sales AFTER the change > desc sales; > select * from sales; > > > > ------------------------------- END OF SCRIPT > ----------------------------------- > > > > So what you think, pretty kewl(geek kids spelling)????? > > > > Check out the docs on dbms_redefinition for limitations, etc, > don't want to give you all > the answers. > > > > > > Until next time all hate mail to /dev/null , all good stuff > to [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > > > Joe > > > > PS: I did receive a request for PGA* init.ora parm, its on the > list to do. > > > > > > > > > > > -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Joe Testa 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). -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Grabowy, Chris 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). -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Vadim Gorbounov 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).