 |
|
"alter table move tablespace" tips
Oracle Database Tips by Donald Burleson |
Question:
I want to use the "alter table move tablespace" command to
reorganize tables to remove fragmentation. Does the "alter table move
tablespace" command preserve my index and
constraint definitions?
Answer:
Oracle has many ways to reorganize tables, including "alter
table move", plus create table as select (CTAS), dbms_redefinition, and data pump
export import (expdp,
impdp).
When using the alter table move tablespace
syntax, make sure to define two tablespaces of the same
size to receive the tables, back-and-forth. I use the
names tablename_flip and tablename_flop.
alter table fred move tablespace fred_flip;
Also make sure that the target tablespace has enough room to
accept the new table
ORA-01652: unable to extend temp segment by
16384 in tablespace FRED_FLOP;
According Rampant author
Mike
Hordila, the alter table move tablespace syntax preserves the index and
constraint definitions:
"The table move will change the ROWIDs of the
table rows, and as such the indexes, which are based on ROWIDs, will become
invalid (UNUSABLE).
Therefore, the need to execute step two
immediately after step one - rebuild the invalid indexes on the current
table.
At the same time an advantage of using the
table move procedure is all constraints are preserved, and index definitions
are also saved, so that re-indexing is possible using the fast index REBUILD
method, rather than the slower index DROP and CREATE method."
Also, see my notes here:
 |
If you like Oracle tuning, see the book "Oracle
Tuning: The Definitive Reference", with 950 pages of tuning tips and
scripts.
You can buy it direct from the publisher for 30%-off and get
instant access to the code depot of Oracle tuning scripts. |