Пример показывает:
- как заблокировать сбор статистики;
- что происходит когда Вы попытаетесь собрать на такой таблице статистику;
- как разблокировать сбор статистики на таблицу.
Создаём таблицу
SQL> create table test ( x number );
Table created.
Создаём индекс
SQL> create index test_idx on test(x);
Index created.
Запрос возвращает NULL когда статистика не заблокирована
SQL> SELECT stattype_locked FROM dba_tab_statistics WHERE table_name = 'TEST' and owner = 'SCOTT';
STATT
—–
Заблокируем сбор статистики на таблице
SQL> exec dbms_stats.lock_table_stats('scott', 'test');
PL/SQL procedure successfully completed.
Запрос возвращает ALL когда статистика заблокирована
SQL> SELECT stattype_locked FROM dba_tab_statistics WHERE table_name = 'TEST' and owner = 'SCOTT';
STATT
—–
ALL
Пробуем собрать статистику на "залоченной" таблице
SQL> exec dbms_stats.gather_index_stats('scott', 'test_idx');
BEGIN dbms_stats.gather_index_stats('scott', 'test_idx'); END;
*
ERROR at line 1:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at “SYS.DBMS_STATS”, line 10640
ORA-06512: at “SYS.DBMS_STATS”, line 10664
ORA-06512: at line 1
Пробуем собрать статистику на индексе используя analyze
SQL> analyze index ajaffer.test_idx compute statistics;
analyze index ajaffer.test_idx compute statistics
*
ERROR at line 1:
ORA-38029: object statistics are locked
Разблокируем сбор статистики на таблице
SQL> exec dbms_stats.unlock_table_stats('scott', 'test');
PL/SQL procedure successfully completed.
SQL> create table test ( x number );
Table created.
Создаём индекс
SQL> create index test_idx on test(x);
Index created.
Запрос возвращает NULL когда статистика не заблокирована
SQL> SELECT stattype_locked FROM dba_tab_statistics WHERE table_name = 'TEST' and owner = 'SCOTT';
STATT
—–
Заблокируем сбор статистики на таблице
SQL> exec dbms_stats.lock_table_stats('scott', 'test');
PL/SQL procedure successfully completed.
Запрос возвращает ALL когда статистика заблокирована
SQL> SELECT stattype_locked FROM dba_tab_statistics WHERE table_name = 'TEST' and owner = 'SCOTT';
STATT
—–
ALL
Пробуем собрать статистику на "залоченной" таблице
SQL> exec dbms_stats.gather_index_stats('scott', 'test_idx');
BEGIN dbms_stats.gather_index_stats('scott', 'test_idx'); END;
*
ERROR at line 1:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at “SYS.DBMS_STATS”, line 10640
ORA-06512: at “SYS.DBMS_STATS”, line 10664
ORA-06512: at line 1
Пробуем собрать статистику на индексе используя analyze
SQL> analyze index ajaffer.test_idx compute statistics;
analyze index ajaffer.test_idx compute statistics
*
ERROR at line 1:
ORA-38029: object statistics are locked
Разблокируем сбор статистики на таблице
SQL> exec dbms_stats.unlock_table_stats('scott', 'test');
PL/SQL procedure successfully completed.
Комментариев нет:
Отправить комментарий