powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не убивается extended-статистика по столбцам, где есть функциональный индекс
6 сообщений из 6, страница 1 из 1
не убивается extended-статистика по столбцам, где есть функциональный индекс
    #39336023
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, 12-й оракл собрал extended статистику по полю, где есть индекс. Мне нужно эту статистику убить. Использую SYS.DBMS_STATS.DROP_EXTENDED_STATS. При попытке удаления получаю exception, что примечательно 20000.

Код: plaintext
1.
2.
3.
ORA-20000: extension "(DECODE("IS_ACTIVE",'Y','Y',NULL))" is not droppable
ORA-06512: at "SYS.DBMS_STATS", line 47207
ORA-06512: at line 4

кто-нибудь сталкивался с такой проблемой?
...
Рейтинг: 0 / 0
не убивается extended-статистика по столбцам, где есть функциональный индекс
    #39336034
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно конечно убивать индекс, но как-то хотелось написать скрипт, а так он будет усложнён - бэкапить ddl индекса, сносить статистику, восстанавливать его. В общем жесть.
...
Рейтинг: 0 / 0
не убивается extended-статистика по столбцам, где есть функциональный индекс
    #39336158
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,

Как на счет delete_column_stats для виртуальной колонки индекса?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
SQL> create table t(is_active)
  2  as
  3  select decode(mod(object_id,2), 0, 'Y', 'N')
  4    from dba_objects
  5  /
SQL> 
SQL> create index t_i on t(decode(is_active, 'Y', 'Y', null));
SQL> 
SQL> exec dbms_stats.gather_table_stats( '', 't', method_opt=> q'#for columns (DECODE("IS_ACTIVE",'Y','Y',NULL))#')
SQL> 
SQL> -- exec dbms_stats.drop_extended_stats( '', 't', q'#(DECODE("IS_ACTIVE",'Y','Y',NULL))#')
SQL> 
SQL> col table_name for a10
SQL> col extension_name for a40
SQL> col extension like extension_name
SQL> 
SQL> select *
  2    from user_stat_extensions
  3   where table_name = 'T';


TABLE_NAME EXTENSION_NAME                           EXTENSION                                CREATOR            DROPPABLE
---------- ---------------------------------------- ---------------------------------------- ------------------ ---------
T          SYS_NC00002$                             (DECODE("IS_ACTIVE",'Y','Y',NULL))       SYSTEM             NO
SQL> 
SQL> explain plan for select * from t where decode(is_active,'Y', 'Y',null)='Y';
SQL> 
SQL> select * from table(dbms_xplan.display);


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2153619298

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      | 48805 |   190K|    48   (7)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T    | 48805 |   190K|    48   (7)| 00:00:01 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(DECODE("IS_ACTIVE",'Y','Y',NULL)='Y')

Note
-----
   - automatic DOP: Computed Degree of Parallelism is 1 because of parallel threshold
SQL> 
SQL> exec dbms_stats.delete_column_stats( '', 'T', q'#SYS_NC00002$#')
SQL> 
SQL> explain plan for select * from t where decode(is_active, 'Y', 'Y',null)='Y';
SQL> 
SQL> select * from table(dbms_xplan.display);


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2858887366

--------------------------------------------------------------------------------------------
| Id  | Operation                           | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |      |   975 |  3900 |    44   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| T    |   975 |  3900 |    44   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN                  | T_I  |   390 |       |    89   (0)| 00:00:01 |
--------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access(DECODE("IS_ACTIVE",'Y','Y',NULL)='Y')

Note
-----
   - automatic DOP: Computed Degree of Parallelism is 1 because of parallel threshold



Shtockкто-нибудь сталкивался с такой проблемой?
На мой взгляд, ошибка нормальна. Флаг FORCE бы еще добавили в DROP_EXTENDED_STATS разве что.
...
Рейтинг: 0 / 0
не убивается extended-статистика по столбцам, где есть функциональный индекс
    #39336262
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без удаления индекса всё равно не получается, а если расширенная статистика не дропнута, то есть виртуальные колонки. А раз есть виртуальные колонки то при попытке изменения родительских валятся exception.
...
Рейтинг: 0 / 0
не убивается extended-статистика по столбцам, где есть функциональный индекс
    #39336277
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockБез удаления индекса всё равно не получается, а если расширенная статистика не дропнута, то есть виртуальные колонки. А раз есть виртуальные колонки то при попытке изменения родительских валятся exception.Виртуальные столбцы есть и от функционального индекса.
...
Рейтинг: 0 / 0
не убивается extended-статистика по столбцам, где есть функциональный индекс
    #39336304
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то затупил. Ведь при удалении индекса расширенная статистика сама сносится.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не убивается extended-статистика по столбцам, где есть функциональный индекс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]