BEGIN DBMS_STATS.GATHER_SCHEMA_STATS( ownname => 'HR', options => 'GATHER STALE', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE, degree => 4 );
INSERT INTO stats_collection_log VALUES (SYSDATE, 'HR', 'SUCCESS'); COMMIT; END; /
BEGIN DBMS_STATS.EXPORT_TABLE_STATS( ownname => 'HR', tabname => 'EMPLOYEES', stattab => 'STATS_BACKUP' );
DBMS_STATS.GATHER_TABLE_STATS( ownname => 'HR', tabname => 'EMPLOYEES', estimate_percent => 100, method_opt => 'FOR ALL INDEXED COLUMNS SIZE 254', cascade => TRUE, no_invalidate => FALSE ); END; /
SELECT t.table_name, t.num_rows, t.last_analyzed, ROUND((SYSDATE - t.last_analyzed), 1) as days_old, m.inserts, m.updates, m.deletes, CASE WHEN t.num_rows > 0 THEN ROUND((m.inserts + m.updates + m.deletes) / t.num_rows * 100, 2) ELSE 0 END as change_percent FROM user_tables t LEFT JOIN user_tab_modifications m ON t.table_name = m.table_name WHERE t.num_rows > 1000 ORDER BY change_percent DESC NULLS LAST;
|