 |
|
Find unused columns with dba_unused_col_tabs
Oracle Database Tips by Donald Burleson |
Question:
How can I find unused columns within an Oracle table?
Answer:
There are a variety of ways to see if a column is being
used, the most common approach being the use of AWR. You
have several choices, and you can use the 10g AWR if the column
is indexed by querying the invocation of the indexed column.
If you want to know about specific columns, consider creating an
index on all suspected columns, wait awhile, and then run an
AWR index usage report. If the column is unused, the index
will not show as being invoked.
Invocation Counts for cust_index
Begin
Interval
Invocation
time
Search Columns Count
-------------------- -------------- -----------
04-10-21 15
1 3
04-10-10 16
0 1
04-10-10 19
1 1
04-10-11 02
0 2
04-10-11 04
2 1
04-10-11 06
3 1
04-10-11 11
0 1
Using dba_unused_col_tabs
Another less desirable approach is
setting a column as unused and querying with the
dba_unused_col_tabs view. The downside is that the
column becomes unavailable for your production SQL and it can
cause an undesired interruption in production processing.
You can "mark" as column as logically deleted, meaning that it
will disappear from the table for SQL, but it will continue to
exist internally.
alter table mytab set unused
column mycol;
You can then query the dba_unused_col_tabs view which displays a
list of all tables with un-used columns, including counts of the
number of columns within a table that are unused.
select * from
dba_unused_col_tabs;
Once you have decided to
physically drop the column you can issue this DDL:
alter table mytab drop unused
columns;
 |
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. |