2.1k views
2 votes
How to check table fragmentation in oracle

1 Answer

6 votes

Final answer:

To check table fragmentation in Oracle, you can use DBA_TABLES or USER_TABLES views, the ANALYZE TABLE command, DBA_INDEXES or USER_INDEXES views, and the DBMS_SPACE package to obtain detailed statistics on space usage and fragmentation.

Step-by-step explanation:

To check table fragmentation in Oracle, you can use the following methods:


  • DBA_TABLES or USER_TABLES views to look at statistics like 'average row length' and 'chain count'.

  • Using the ANALYZE TABLE command to validate and collect statistics on the table structure.

  • DBA_INDEXES or USER_INDEXES views to see the status of the indexes on the table, as indexes can also become fragmented.

  • Using segment space management tools such as the DBMS_SPACE package, which can provide reports on segment space usage and fragmentation.

For example, you can run the following SQL query to get fragmentation details for a table:

SELECT
table_name,
round((blocks*8),2) "Size (KB)",
round((num_rows*avg_row_len/1024),2) "Actual Data (KB)",
round((blocks*8)-(num_rows*avg_row_len/1024),2) "Fragmented Space (KB)"
FROM
user_tables
WHERE
table_name = 'YOUR_TABLE_NAME';

This will give you an estimate of the fragmented space in a table. Remember, it's vital to have an appropriate maintenance plan to regularly check and address table fragmentation.

User Mike Hanrahan
by
8.2k points