Connor and Chris will both be at AI World from October 12 to October 17 , the premier Oracle conference of 2025. If you're in Vegas, please come say Hi or pop into our sessions
Thanks for the question, donki.
Asked: February 07, 2018 - 9:40 pm UTC
Last updated: December 12, 2018 - 3:40 am UTC
Version: Oracle 11g
Viewed 10K+ times! This question is
--CHECKING COUNT OF ORIGINAL TABLE SELECT COUNT(1) FROM ALL_OBJECTS --1051227 --CREATING A DUP CREATE TABLE TMP.TMP_ALL_OBJECTS AS SELECT * FROM all_objects --CHECKING THE DUP IS IDENTICAL SELECT COUNT(1) FROM TMP.TMP_ALL_OBJECTS --1051227 --CHECKING FOR STALE_STATS IN NEW TABLE SELECT STALE_STATS FROM DBA_TAB_STATISTICS WHERE TABLE_NAME = 'TMP_ALL_OBJECTS' --NULL --GATHERING STATS BEGIN dbms_stats.gather_table_stats('TMP','TMP_ALL_OBJECTS',cascade=>TRUE); END; --CHECKING FOR STALE_STATS AFTER STATS GATHERING SELECT STALE_STATS FROM ALL_TAB_STATISTICS WHERE TABLE_NAME = 'TMP_ALL_OBJECTS' --NO --DELETEING 35% OF RECORDS DELETE FROM CIT_INFRA_REPOS.TMP_ALL_OBJECTS WHERE OWNER='FIXED_INCOME'; COMMIT; SELECT COUNT(1) FROM CIT_INFRA_REPOS.TMP_ALL_OBJECTS --651677 --checking the threshold SELECT DBMS_STATS.GET_PREFS('STALE_PERCENT', 'TMP', 'TMP_ALL_OBJECTS') STALE_PERCENT FROM DUAL; --10 --CHECKING STALE_STATS SELECT STALE_STATS FROM ALL_TAB_STATISTICS WHERE TABLE_NAME = 'TMP_ALL_OBJECTS' --NO
SQL> SELECT COUNT(1) FROM ALL_OBJECTS; COUNT(1) ---------- 73853 1 row selected. SQL> CREATE TABLE TMP_ALL_OBJECTS AS SELECT * FROM all_objects; Table created. SQL> SELECT COUNT(1) FROM TMP_ALL_OBJECTS; COUNT(1) ---------- 73853 1 row selected. SQL> SELECT STALE_STATS FROM DBA_TAB_STATISTICS WHERE TABLE_NAME = 'TMP_ALL_OBJECTS'; STA --- NO 1 row selected. SQL> exec dbms_stats.gather_table_stats('','TMP_ALL_OBJECTS',cascade=>TRUE); PL/SQL procedure successfully completed. SQL> SELECT STALE_STATS FROM ALL_TAB_STATISTICS WHERE TABLE_NAME = 'TMP_ALL_OBJECTS'; STA --- NO 1 row selected. SQL> DELETE FROM TMP_ALL_OBJECTS WHERE rownum <= 30000; 30000 rows deleted. SQL> COMMIT; Commit complete. SQL> SELECT COUNT(1) FROM TMP_ALL_OBJECTS; COUNT(1) ---------- 43853 1 row selected. SQL> SELECT DBMS_STATS.GET_PREFS('STALE_PERCENT', user, 'TMP_ALL_OBJECTS') STALE_PERCENT FROM DUAL; STALE_PERCENT ---------------------------------------------------------------------------------------------------------------------------------- 10 1 row selected. SQL> SELECT STALE_STATS FROM ALL_TAB_STATISTICS WHERE TABLE_NAME = 'TMP_ALL_OBJECTS'; STA --- NO 1 row selected. <b>SQL> exec dbms_stats.flush_database_monitoring_info;</b> PL/SQL procedure successfully completed. SQL> SELECT STALE_STATS FROM ALL_TAB_STATISTICS WHERE TABLE_NAME = 'TMP_ALL_OBJECTS'; STA --- YES 1 row selected. SQL> SQL>
Yaniv, February 08, 2018 - 3:04 am UTC
A reader, February 09, 2018 - 7:46 am UTC
Shira, December 06, 2018 - 8:25 am UTC
Get all the information about database performance in the Database Performance guide.