Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: Breaking a Table Data into Partitions
Chuck / Joe
Qs. Is Following the BEST / Correct Way ? :-
AIM A Sample Test to Convert a NON-partitioned Table "sol1" into a Partitioned Table "sol2" :-
7 rows selected.
CAUSE This Will Allow to Exchange partition of the COMPLETE NON-partitioned Table with the partitioned Table
Table altered.
SQL> ALTER TABLE SOL2 SPLIT PARTITION
solrg1 at ('0028') INTO
( PARTITION solrg1 storage (initial 5M next 5M pctincrease 0),
PARTITION solrg2 storage (initial 5M next 5M pctincrease 0));
Table altered.
NOTE - We Continue to use the SAME partition Name "solrg1" when Splitting
the
Single partition "solrg1" into 2 partitions "solrg1" & "solrg2" .
Qs. Is there Any Space management Advantage gained by doing the Same ?
RESULT - The Size of Each partition is Explicitly Specified as 5M ,
therefore the Size of
the Total Table CONTINUES to be 10M i.e. Same as it's Size in the
NON-partitioned State
Qs. Is 10M taken from FREE SPACE (sys.dba_free_space) or is the Existing
Already Allocated
Space to Table SOL2 RE-Used Suitably ?
Chuck : I Could NOT Follow what you meant by COPY . Can COPY be used in the Above Aimed Scenario ?
> -----Original Message----- > From: Chuck Hamilton [SMTP:chuck_hamilton_at_yahoo.com] > Sent: Friday, February 16, 2001 8:06 PM > To: Multiple recipients of list ORACLE-L > Subject: Re: Breaking a Table Data into Partitions > > If you're going to split a table into multiple tables, then exchange them > for partitions, why not just create the partitioned table and copy the > original table right into that? I'd only use the "exchange" route when > converting partitioned views into a partitioned table. > > > "Joseph S. Testa" <teci_at_oracle-dba.com> wrote: > > > to do an exchange, you must have ONLY the rows that pertain to that > partition in the table, hence my original message: > > >>the easiest is to figure out your partition key, split the data > into > >>separate table based on the partition key, then do a alter table > >>exchange partition command. > > NOTICE, split the data into separate table(s) based on the partition > key, the error you received is why i said what i said. > > Besides did you look up: > ORA-14099: all rows in table do not qualify for specified partition > > 14099, 00000, "all rows in table do not qualify for specified > partition" > // *Cause: There is at least one row in the non partitioned table > which > // does not qualify for the partition specified in the ALTER > TABLE > // EXCHANGE PARTITION > // *Action: Ensure that all the rows in the segment qualify for the > partition. > // P! ! erform the alter table operation with the NO CHECKING > option. > // Run ANALYZE table VALIDATE on that partition to find out the > // invalid rows and delete them. > > > Does this make sense? > > Joe > VIVEK_SHARMA wrote: > > > > Joe > > > > AIM A Sample Test to Convert a NON-partitioned Table into a > Partitioned > > Table Failing :- > > > > - Table sol1 = NON-partitioned Table > > ------------------------------------- > > select sol_id from sol1; > > SOL_ID > > -------- > > 0004 > > 0018 > > 0026 > > 0028 > > 0032 > > 0036 > > 0038 > > > > 7 rows selected. > > > > - Table sol2 = Partitioned Table - Created in the SAME Tablespace > as sol1 > > > -------------------------------------------------------------------------- > > create table SOL2 > > ( > > sol_id varchar(8), > > del_flg char(1), > > - - - > > - - - > > ) > > TABLESPACE TBA_TEMP > ! ! > storage (initial 2 ) > > partition by range ( sol_id ) > > (partition solrg1 values less than ('0028'), > > partition solrg2 values less than ('0039')); > > > > - Exchange Partition FAILING :- > > ------------------------------- > > SQL> alter table sol2 > > 2 exchange partition solrg1 with table sol1 with validation; > > exchange partition solrg1 with table sol1 with validation > > * > > ERROR at line 2: > > ORA-14099: all rows in table do not qualify for specified > partition > > > > Qs. WHERE IS THE PROBLEM ? Where am i making a mistake ? > > > > NOTE - OBSERVATIONS - Following Commands Succeeding though > > ------------------------------------------------------------ > > > > SQL> insert into sol2 select * from sol1; > > 7 rows created. > > > > SQL> select sol_id from sol2 partition (solrg1); > > SOL_ID > > -------- > > 0004 > > 0018 > > 0026 > > ! ! 3 rows selected. > > > > SQL> select sol_id from sol2 partition (solrg2); > > SOL_ID > > -------- > > 0028 > > 0032 > > 0036 > > 0038 > > 4 rows selected. > > > > SQL> select sol_id from sol2; > > SOL_ID > > -------- > > 0004 > > 0018 > > 0026 > > 0028 > > 0032 > > 0036 > > 0038 > > > > 7 rows selected. > > > > Qs. Is the Above Approach Taken for Conversion from > NON-partitioned to > > partitioned Table Correct OR are there better ways ? > > > > Qs. What Happens after the Exchange partition is Successful ? > > Should the Original Table be Dropped & the NEW partitioned Table > be > > RENAMED as the Original > > NON-partitioned Table ? > > > > Qs. Is as much FREE SPACE Required for The Partitioned Table as is > Taken Up > > by the Original NON-partitioned Table OR Will the Used Space in > the > > NON-partitioned Table be Simply RE-Assig! ! ned to the NEW > Partitioned Table > > Assuming that Both the NON-partitioned Table & the partitioned > Tableexist in > > the SAME Tablespace ? > > > > > -----Original Message----- > > > From: Joseph S. Testa [SMTP:teci_at_oracle-dba.com] > > > Sent: Wednesday, February 14, 2001 5:40 PM > > > To: Multiple recipients of list ORACLE-L > > > Subject: Re: Breaking a Table Data into Partitions > > > > > > the easiest is to figure out your partition key, split the data > into > > > separate table based on the partition key, then do a alter table > > > exchange partition command. > > > > > > joe > > > VIVEK_SHARMA wrote: > > > > > > > > To Convert a Regular NON-Partitioned Table into Partitions , > what > > > approaches > > > > may be Taken ? >
-- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: VIVEK_SHARMA INET: VIVEK_SHARMA_at_infy.com 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: ListGuru_at_fatcity.com (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).Received on Mon Feb 19 2001 - 03:40:18 CST
![]() |
![]() |