Stale stat gather does not gather stats on locked objects:
12:33:06 SQL> exec dbms_stats.lock_table_stats(null, 'XEMP1');
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.04
12:33:18 SQL> select owner,'.',table_name,LAST_ANALYZED,GLOBAL_STATS,USER_STATS,STATTYPE_LOCKED,STALE_STATS from dba_tab_statistics where table_name='XEMP1';
OWNER '.' TABLE_NAME LAST_ANAL GLO USE STATT STA
------------------------------ -------------------------------- ------------------------------ --------- --- --- ----- ---
SCOTT . XEMP1 NO NO ALL
Elapsed: 00:00:00.01
12:33:29 SQL> exec dbms_stats.gather_schema_stats ('&OWNER', cascade=>TRUE,FORCE=>TRUE,Degree=>16,estimate_percent=>5,options=>'GATHER STALE');
Enter value for owner: SCOTT
PL/SQL procedure successfully completed.
Elapsed: 00:00:04.81
12:33:58 SQL> select owner,'.',table_name,LAST_ANALYZED,GLOBAL_STATS,USER_STATS,STATTYPE_LOCKED,STALE_STATS from dba_tab_statistics where table_name='XEMP1';
OWNER '.' TABLE_NAME LAST_ANAL GLO USE STATT STA
------------------------------ -------------------------------- ------------------------------ --------- --- --- ----- ---
SCOTT . XEMP1 NO NO ALL
Stale stat gather does not gather stats on locked objects unless explicitly gathered with force=true:
12:34:07 SQL> EXEC dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'XEMP1',estimate_percent=>5, degree=>16,cascade => TRUE) ;
BEGIN dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'XEMP1',estimate_percent=>5, degree=>16,cascade => TRUE) ; END;
*
ERROR at line 1:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 24281
ORA-06512: at "SYS.DBMS_STATS", line 24332
ORA-06512: at line 1
Elapsed: 00:00:00.02
12:38:30 SQL> EXEC dbms_stats.gather_table_stats(ownname=>'&OWNER',tabname=>'&TABLE',estimate_percent=>5, degree=>16,cascade => TRUE, FORCE => TRUE) ;
Enter value for owner: SCOTT
Enter value for table: XEMP1
PL/SQL procedure successfully completed.
Elapsed: 00:00:02.39
12:40:13 SQL> select owner,'.',table_name,LAST_ANALYZED,GLOBAL_STATS,USER_STATS,STATTYPE_LOCKED,STALE_STATS from dba_tab_statistics where table_name='XEMP1';
OWNER '.' TABLE_NAME LAST_ANAL GLO USE STATT STA
------------------------------ -------------------------------- ------------------------------ --------- --- --- ----- ---
SCOTT . XEMP1 07-OCT-16 YES NO ALL NO
Elapsed: 00:00:00.15
12:40:22 SQL> select num_rows from dba_tables where table_name='XEMP1';
NUM_ROWS
----------
7418660
12:33:06 SQL> exec dbms_stats.lock_table_stats(null, 'XEMP1');
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.04
12:33:18 SQL> select owner,'.',table_name,LAST_ANALYZED,GLOBAL_STATS,USER_STATS,STATTYPE_LOCKED,STALE_STATS from dba_tab_statistics where table_name='XEMP1';
OWNER '.' TABLE_NAME LAST_ANAL GLO USE STATT STA
------------------------------ -------------------------------- ------------------------------ --------- --- --- ----- ---
SCOTT . XEMP1 NO NO ALL
Elapsed: 00:00:00.01
12:33:29 SQL> exec dbms_stats.gather_schema_stats ('&OWNER', cascade=>TRUE,FORCE=>TRUE,Degree=>16,estimate_percent=>5,options=>'GATHER STALE');
Enter value for owner: SCOTT
PL/SQL procedure successfully completed.
Elapsed: 00:00:04.81
12:33:58 SQL> select owner,'.',table_name,LAST_ANALYZED,GLOBAL_STATS,USER_STATS,STATTYPE_LOCKED,STALE_STATS from dba_tab_statistics where table_name='XEMP1';
OWNER '.' TABLE_NAME LAST_ANAL GLO USE STATT STA
------------------------------ -------------------------------- ------------------------------ --------- --- --- ----- ---
SCOTT . XEMP1 NO NO ALL
Stale stat gather does not gather stats on locked objects unless explicitly gathered with force=true:
12:34:07 SQL> EXEC dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'XEMP1',estimate_percent=>5, degree=>16,cascade => TRUE) ;
BEGIN dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'XEMP1',estimate_percent=>5, degree=>16,cascade => TRUE) ; END;
*
ERROR at line 1:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 24281
ORA-06512: at "SYS.DBMS_STATS", line 24332
ORA-06512: at line 1
Elapsed: 00:00:00.02
12:38:30 SQL> EXEC dbms_stats.gather_table_stats(ownname=>'&OWNER',tabname=>'&TABLE',estimate_percent=>5, degree=>16,cascade => TRUE, FORCE => TRUE) ;
Enter value for owner: SCOTT
Enter value for table: XEMP1
PL/SQL procedure successfully completed.
Elapsed: 00:00:02.39
12:40:13 SQL> select owner,'.',table_name,LAST_ANALYZED,GLOBAL_STATS,USER_STATS,STATTYPE_LOCKED,STALE_STATS from dba_tab_statistics where table_name='XEMP1';
OWNER '.' TABLE_NAME LAST_ANAL GLO USE STATT STA
------------------------------ -------------------------------- ------------------------------ --------- --- --- ----- ---
SCOTT . XEMP1 07-OCT-16 YES NO ALL NO
Elapsed: 00:00:00.15
12:40:22 SQL> select num_rows from dba_tables where table_name='XEMP1';
NUM_ROWS
----------
7418660