Exforsys.com
 
Home Tutorials Oracle 10g
 

Oracle 10g Tutorials: Altering Tables

 

Oracle 10g Tutorials: Altering Tables - Page 2

Page 2 of 2

.


.


Dropping Table Columns

You can drop columns that are no longer needed from a table, including an index-organized table. This provides a convenient means to free space in a database, and avoids your having to export/import data then re-create indexes and constraints.


You cannot drop all columns from a table, nor can you drop columns from a table owned by SYS. Any attempt to do so results in an error.


Removing Columns from Tables

When you issue an ALTER TABLE ... DROP COLUMN statement, the column descriptor and the data associated with the target column are removed from each row in the table. You can drop multiple columns with one statement. The ALTER TABLE ... DROP COLUMN statement is not supported for tables using table compression.


The following statements are examples of dropping columns from the employee table. The first statement drops only the sal column:


ALTER TABLE employee DROP COLUMN sal;



Figure 8. Alter Table Drop Column


The next statement drops both the bonus and comm columns:


ALTER TABLE employee DROP (bonus, comm);




Figure 9. Alter Table Drop Columns


Marking Columns Unused

If you are concerned about the length of time it could take to drop column data from all of the rows in a large table, you can use the ALTER TABLE ... SET UNUSED statement. This statement marks one or more columns as unused, but does not actually remove the target column data or restore the disk space occupied by these columns. However, a column that is marked as unused is not displayed in queries or data dictionary views, and its name is removed so that a new column can reuse that name. All constraints, indexes, and statistics defined on the column are also removed.


To mark the hiredate and mgr columns as unused, execute the following statement:


ALTER TABLE admin_emp_dept SET UNUSED (hiredate, mgr);




Figure 9. Alter Table Unused Columns


You can later remove columns that are marked as unused by issuing an ALTER TABLE ... DROP UNUSED COLUMNS statement. Unused columns are also removed from the target table whenever an explicit drop of any particular column or columns of the table is issued.


The data dictionary views USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS, or DBA_UNUSED_COL_TABS can be used to list all tables containing unused columns. The COUNT field shows the number of unused columns in the table.


SELECT * FROM DBA_UNUSED_COL_TABS;


OWNER TABLE_NAME COUNT


--------------------------- --------------------------- ----------------------------


SYSTEM ADMIN_EMP_DEPT 2



Figure 10. Select Unused Columns


.
Removing Unused Columns

The ALTER TABLE ... DROP UNUSED COLUMNS statement is the only action allowed on unused columns. It physically removes unused columns from the table and reclaims disk space.


In the ALTER TABLE statement that follows, the optional clause CHECKPOINT is specified. This clause causes a checkpoint to be applied after processing the specified number of rows, in this case 250. Checkpointing cuts down on the amount of undo logs accumulated during the drop column operation to avoid a potential exhaustion of undo space.


ALTER TABLE admin_emp_dept DROP UNUSED COLUMNS CHECKPOINT 250;




Figure 11. Alter table drop unused columns




First Page: Oracle 10g Tutorials: Altering Tables


Read Next: Oracle 10g Tutorials -Creating Index-Organized Tables



 

 

Comments



Post Your Comment:

Members Please Login
Your Name:*
e-mail ID:(required for notification)*
Image Verification: 
 
 Subscribe    

Sponsored Links

 

Subscribe via RSS


Get Daily Updates via Subscribe to Exforsys Free Training via email


Get Latest Free Training Updates delivered directly to your Inbox...

Enter your email address:


 

Subscribe to Exforsys Free Training via RSS
 

 
Partners -  Privacy and Legal Policy -  Site News -  Contact   Sitemap  

Copyright © 2000 - 2009 exforsys.com. All Rights Reserved

Page copy protected against web site content infringement by Copyscape