The key problem in database is sometimes you want change it structure or definition, while at the same time maintaining it as online accessible to user:
anyone can still insert/delete/update the tables, while you are modifying its structure.
Oracle provide DBMS_REDEFINITION package for this purpose:
As quoted from:
http://www.dba-oracle.com/t_dbms_redefinition_example.htm
Now with all that said, Oracle provides a robust and reliable package for performing many common online table level reorganizations - dbms_redefinition.
The different stored procedures in the DBMS_REDEFINITION have to be use following a procedure, which is described in detail in the above link.
For a summary of the procedure is listed here, for details please see the link above:
1. Verify that the table is a candidate for online redefinition
2. Create an interim table
3. Enable parallel DML operations
4. Start the redefinition process (and do not stop until step 9 is done)
5. Copy dependent objects
6. Check for any errors
7. Synchronize the interim table (optional)
8. Complete the redefinition
9. Drop the interim table