powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Удалить быстро индексы и построить заново
32 сообщений из 32, показаны все 2 страниц
Удалить быстро индексы и построить заново
    #35557691
IndexDropper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет, всем

Кто знает как эффективно дропнуть(или отключить?) все индексы по табличке, а потом после заливки данных восстановить их? Как это можно сделать без особых усилий, спасибо

Oracle 10g
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35557707
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
ALTER INDEX ... UNUSABLE

...

ALTER INDEX ... REBUILD [ONLINE]
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35557751
IndexDropper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спос. Все равно скрипт писать придется для удаления всех индексов, жаль, что нет команды типа ALTER TABLE SET ALL INDEXES UNUSABLE....

Кстати, если так
Код: plaintext
ALTER INDEX ... REBUILD NOLOGGING
то будет быстрее по идее ?
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35557766
G.M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IndexDropperСпос. Все равно скрипт писать придется для удаления всех индексов, жаль, что нет команды типа ALTER TABLE SET ALL INDEXES UNUSABLE....

Кстати, если так
Код: plaintext
ALTER INDEX ... REBUILD NOLOGGING
то будет быстрее по идее ?

Еще быстрее будет, если в параллельном режиме их создавать:
Код: plaintext
ALTER INDEX ... REBUILD NOLOGGING PARALLEL
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35557897
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До 10.2.0.4 лучше грохать индексы вместо ребилда.
см. Note 6455161 Higher CPU / Higher "cache buffer chains" latch gets / Higher "consistent gets" after truncate/Rebuild.
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35558931
IndexDropper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия,как раз 10.2.0.4

Дело в другом, сделал индексы UNUSABLE, теперь при инсертах ругается
Код: plaintext
ORA- 01502 : index 'TEST.IX_TEST' or partition of such index is in unusable state

Что делать то?
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35558943
sql+
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IndexDropperВерсия,как раз 10.2.0.4

Дело в другом, сделал индексы UNUSABLE, теперь при инсертах ругается
Код: plaintext
ORA- 01502 : index 'TEST.IX_TEST' or partition of such index is in unusable state

Что делать то?

Включить обратно
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35558963
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IndexDropperВерсия,как раз 10.2.0.4

Дело в другом, сделал индексы UNUSABLE, теперь при инсертах ругается
Код: plaintext
ORA- 01502 : index 'TEST.IX_TEST' or partition of such index is in unusable state

Что делать то?

Почитать про параметр базы skip_unusable_indexes
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35558976
IndexDropper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skip_unusable_indexes = true

Дело в том, что это был уникальный индекс и на него это не действует, так что его анюзить не буду, пожалуй.
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35560040
Фотография bastrakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стало интересно.
а что будет, если все индексы изначально были организованны в отдельном tablespace и вот его и пересоздать. после этого дать комманду на пересоздание всех индексов.

другой вариант того же вопроса: я хочу перенести все индексы на другой драйв.

чем чревато?

заранее спасибо. во
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #35560479
>см. Note 6455161

Оппа. Так вот какая букашка нам жисть портит.
Thnx, Timm.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Удалить быстро индексы и построить заново
    #39749191
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IndexDropperskip_unusable_indexes = true

Дело в том, что это был уникальный индекс и на него это не действует, так что его анюзить не буду, пожалуй.

У меня схожая ситуация что и у автора. Но мой вопрос: почему ORA-01502 на удаление выскакивает? Я понимаю аргументацию орaкла на вставку, но удаление ведь уже никак уникалность не нарушит. Тогда почему?
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749205
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mikron,

ораклу для поддержки уникальности нужен валидный индекс, соответственно при отключении индекса, оракл будет ругаться при изменении ключа уникальности, независимо какая DML операция проходит и даже, если этот констрейнт deferred (естественно, кроме вставки/удаления NULL'ов и апдейта на то же значение). Так что просто дропните/отключите констрейнт, все равно вам потом индекс заново ребилдить/строить:
1. если отключите или дропнете констрейнт и грохните индекс, то при включении констрейнта оракл сам построит индекс
2. если же сначала отдельно восстановите уникальный индекс, то при включении/создании констрейнта его даже валидировать не надо будет.
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749247
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

Индекс перевожу в unusable, constraint запрещаю, делаю delete и ошибка остаётся.
Я не понимаю смысл проверки уникальности при удалении.
Он есть и я его не вижу или баг?

Удалять constraint не хочу.
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749276
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronЯ не понимаю смысл проверки уникальности при удалении.Результат нарушения уникальности это ora-1.
ora-1502 это запрет dml над unusable уникальным индексом.
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749301
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mikronconstraint запрещаюне понял? что значит запрещаю? покажите ddl таблицы
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749307
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mikronИндекс перевожу в unusable, constraint запрещаю, делаю delete и ошибка остаётся.что-то не так делаете:
alter table ... disable constraint ...
Код: 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.
SQL> create table test(a int,b int, constraint uq_a unique (a));

Table created.

SQL> insert into test select level,level from dual connect by level<=15;

15 rows created.

SQL> commit;

Commit complete.

SQL> alter index uq_a unusable;

Index altered.

SQL> delete from test where b=15;
delete from test where b=15
*
ERROR at line 1:
ORA-01502: index 'XTENDER.UQ_A' or partition of such index is in unusable state


SQL> alter table test disable constraint uq_a;

Table altered.

SQL> delete from test where b=15;

1 row deleted.

deferred/delete/insert
Код: 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.
78.
79.
80.
81.
82.
SQL> create table test(a int,b int);

Table created.

SQL> create index nonunique on test(a);

Index created.

SQL> alter table test add constraint uq_a unique(a) deferrable initially deferred using index nonunique;

Table altered.

SQL> insert into test select level,level from dual connect by level<=15;

15 rows created.

SQL> commit;

Commit complete.

SQL> alter index nonunique unusable;

Index altered.

SQL> delete from test where b=15;
delete from test where b=15
*
ERROR at line 1:
ORA-01502: index 'XTENDER.NONUNIQUE' or partition of such index is in unusable state


SQL> update test set a=null;
update test set a=null
*
ERROR at line 1:
ORA-01502: index 'XTENDER.NONUNIQUE' or partition of such index is in unusable state


SQL> insert into test values(null,null);

1 row created.

SQL> commit;

Commit complete.

SQL> delete from test where b is null;

1 row deleted.

SQL> commit;

Commit complete.

SQL> alter table test disable constraint uq_a;

Table altered.

SQL> delete from test where b=15;

1 row deleted.

SQL>
SQL> drop index nonunique;

Index dropped.

SQL> select index_name from user_indexes where table_name='TEST';

no rows selected

SQL> alter table test enable constraint uq_a;

Table altered.

SQL> select index_name from user_indexes where table_name='TEST';

INDEX_NAME
--------------------------------------------------------------
UQ_A

1 row selected.

...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749312
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtendermikronconstraint запрещаюне понял? что значит запрещаю?
Код: plsql
1.
alter table table_name modify constraint constraint_name disable
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749323
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mikron,

покажите полный текст ошибки и детали:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select * from user_constraints where table_name='&your_tab_name';

select c.* from user_constraints c,user_constraints p 
where p.table_name='&your_tab_name' and c.r_owner=p.owner and c.r_constraint_name=p.constraint_name;

select i.index_name,i.index_type,i.uniqueness,i.status
      ,ic.column_position
      ,ic.column_name
from user_indexes i,user_ind_columns ic 
where i.table_name='&your_tab_name' and i.index_name=ic.index_name;
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749367
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

Код: 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.
>> select CONSTRAINT_NAME, constraint_type, STATUS from user_constraints where table_name='QUOTE_VALUE_INTRADAY';


CONSTRAINT_NAME                C STATUS  
------------------------------ - --------
CT_PRIMARYKEY_456              P DISABLED
SYS_C001554782                 C ENABLED 
SYS_C001554783                 C ENABLED 
SYS_C001554784                 C ENABLED 
SYS_C001554785                 C ENABLED 
SYS_C001554786                 C ENABLED 
SYS_C001554787                 C ENABLED 

7 rows selected. 

>> select c.* 
from user_constraints c,user_constraints p 
where p.table_name='QUOTE_VALUE_INTRADAY' and c.r_owner=p.owner and c.r_constraint_name=p.constraint_name;

no rows selected


>> select i.index_name,i.index_type,i.uniqueness,i.status
      ,ic.column_position
      ,ic.column_name
from user_indexes i,user_ind_columns ic 
where i.table_name='QUOTE_VALUE_INTRADAY' and i.index_name=ic.index_name;

INDEX_NAME                     INDEX_TYPE                  UNIQUENES STATUS   COLUMN_POSITION
------------------------------ --------------------------- --------- -------- ---------------
COLUMN_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IDX_QUOTE_VALUE_INTR5          NORMAL                      NONUNIQUE UNUSABLE               1 
QUOTE_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

IDX_QUOTE_VALUE_INTR6          NORMAL                      NONUNIQUE UNUSABLE               1 
QUOTE_DATE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

CT_PRIMARYKEY_456              NORMAL                      UNIQUE    UNUSABLE               1 
QUOTE_SET_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              


INDEX_NAME                     INDEX_TYPE                  UNIQUENES STATUS   COLUMN_POSITION
------------------------------ --------------------------- --------- -------- ---------------
COLUMN_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CT_PRIMARYKEY_456              NORMAL                      UNIQUE    UNUSABLE               2 
QUOTE_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

CT_PRIMARYKEY_456              NORMAL                      UNIQUE    UNUSABLE               3 
QUOTE_DATETIME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              




И вроде бы всё прибрано, но:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
alter session set skip_unusable_indexes=True
/


Session altered.


delete from quote_value_intraday 
where not exists (select 1 from del_quote_value_intraday s 
		where s.quote_set_name = quote_value_intraday.quote_set_name
		  and s.quote_name = quote_value_intraday.quote_name
		  and s.quote_date = quote_value_intraday.quote_date)
/

Error starting at line : 27 in command -
delete from quote_value_intraday 
where not exists (select 1 from del_quote_value_intraday s 
		where s.quote_set_name = quote_value_intraday.quote_set_name
		  and s.quote_name = quote_value_intraday.quote_name
		  and s.quote_date = quote_value_intraday.quote_date)
Error report -
ORA-01502: index 'CALYPSO_C03.CT_PRIMARYKEY_456' or partition of such index is in unusable state

...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749465
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mikron,

какая версия оракла? выложите полный ддл таблицы. И попробуйте просто грохнуть индекс(не констрейнт). Вообще если индекс был создан автоматически при создании констрейнта, то при отключении констрейнта, у вас индекс сам должен был дропнуться, но тк у вас не удалился, значит создавали отдельно.
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749590
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

Код: plaintext
1.
2.
3.
4.
5.
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE	11.2.0.4.0	Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

У меня сейчас нет много времени ковырять ошибку. Вернусь позже к ней.

Теоретический вопрос для понимания.
mikronЯ не понимаю смысл проверки уникальности при удалении.
Он есть и я его не вижу или баг?
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749605
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronТеоретический вопрос для понимания.
mikronЯ не понимаю смысл проверки уникальности при удалении.
Он есть и я его не вижу или баг?
... есть ли смысл учить пулю различать где свой, а где чужой? Или единый механизм надёжнее?
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749631
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronТеоретический вопрос для понимания.
mikronЯ не понимаю смысл проверки уникальности при удалении.
Он есть и я его не вижу или баг?


Ты зашорился в своей ситуации. Oracle понятия не имеет "живой" ли unusable индекс или нет. Вот тебе пример "дохлого" индекса

Код: 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.
SQL> create table tbl as select * from emp;

Table created.

SQL> alter table tbl add constraint tbl_pk primary key(empno);

Table altered.

SQL> create table tbl_child(empno number);

Table created.

SQL> alter table tbl_child add constraint tbl_child_fk foreign key(empno) references tbl;

Table altered.

SQL> alter table tbl move;

Table altered.

SQL> alter session set skip_unusable_indexes = true;

Session altered.

SQL> delete tbl where rownum = 1;
delete tbl where rownum = 1
*
ERROR at line 1:
ORA-01502: index 'SCOTT.TBL_PK' or partition of such index is in unusable state


SQL> 
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749722
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SY,

А доп.таблица с внешним ключом в примере зачем? Без неё точно так же все будет
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749887
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYmikronТеоретический вопрос для понимания.
пропущено...

Ты зашорился в своей ситуации. Oracle понятия не имеет "живой" ли unusable индекс или нет. Вот тебе пример "дохлого" индекса

Я вроде чётко вопрос обрисовал, но попробуем ещё раз. Я вижу ошибку "ORA-01502", я понимаю что она значит.
Я не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении?
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39749908
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronЯ не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении?

Если нет PK/UK + SKIP_UNUSABLE_INDEXES то ему этот индекс и при INSERT и UPDATE и DELETE побоку. А если есть constraint PK/UK то могут быть таблицы дети a при DELETE (или UPDATE) проверка таблиц детей осуществляется через PK/UK индекс папаши. В принципе Oracle мог бы проверить есть ли таблицы дети и если нет то разрешать DELETE при SKIP_UNUSABLE_INDEXES, enabled PK/UK и его unusable индексе но зачем так заморачиваться?

SY.
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39750010
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYА если есть constraint PK/UK то могут быть таблицы дети a при DELETE (или UPDATE) проверка таблиц детей осуществляется через PK/UK индекс папаши.
SY.

"Дети" это referencing tables?
Не логично: для проверки констраинтов "детей" при удалении в "родителе" индекс "родителя" не нужен. Нужен индекс на таблицах "детей".
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39750450
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mikronЯ не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении?xtenderораклу для поддержки уникальности нужен валидный индекс, соответственно при отключении индекса, оракл будет ругаться при изменении ключа уникальности, независимо какая DML операция проходит и даже, если этот констрейнт deferred (естественно, кроме вставки/удаления NULL'ов и апдейта на то же значение).
Еще раз: Для проверки уникальности оракл пользуется связанным индексом. Соответственно, для поддержки уникальности оракл должен быть уверен, что все его изменения проходят без ошибок, т.е индекс актуален.
Простой пример:
Код: 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.
-- создадим табличку из 3 полей:
SQL> create table test(a int,b int,c int);

Table created.
-- создадим обычный индекс на двух из них
SQL> create index nonunique on test(a,b);

Index created.

-- создадим unique констрейнт только на A, причем он deferred - то есть 
-- реальная проверка должна проводиться только при коммите:
SQL> alter table test add constraint uq_a unique(a) deferrable initially deferred using index nonunique;

Table altered.

SQL> insert into test select level,level,level from dual connect by level<=15;

15 rows created.

SQL> commit;

Commit complete.

-- переведем индекс в Unusable:
SQL> alter index nonunique unusable;

Index altered.

-- без проблем обновляем третий столбец, который не входит ни в список полей индекса,
-- ни в список полей констрейнта:
SQL> update test set c=null;

15 rows updated.

-- а теперь попробуем обновить поле, которое входит в индекс, но не в констрейнт:
SQL> update test set b=null;
update test set b=null
*
ERROR at line 1:
ORA-01502: index 'XTENDER.NONUNIQUE' or partition of such index is in unusable state



зы. Ну и кроме того, нет смысла усложнять код отдельными проверками при разных операциях (insert/update/merge...)
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39750459
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderЕще раз: Для проверки уникальности оракл пользуется связанным индексом. Соответственно, для поддержки уникальности оракл должен быть уверен, что все его изменения проходят без ошибок, т.е индекс актуален.

Причинноследственная связь нарушена.
проходят без ошибок != индекс актуален.
И ваш пример тому подтверждение: оракл различает что меняем.
Вы можете привести пример удаления, который бы нарушил unique constraint?

xtenderзы. Ну и кроме того, нет смысла усложнять код отдельными проверками при разных операциях (insert/update/merge...)
IMHO проверки на вставку и удаление очень разные.
Об усложнении кода тут вряд ли стоит рассчитывать.
Конкуренты Оракла не ленятся и заработывют бонусы :)
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39750535
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mikronпроходят без ошибок != индекс актуален.будет пример в контексте сабжа?
По-моему, вполне очевидно, что если индекс не валиден, значит нельзя использовать его для проверок.

mikronИ ваш пример тому подтверждение: оракл различает что меняем.У меня сильное подозрение, что вы не поняли пример. Можете объяснить своими словами, что в примере происходит?

mikronКонкуренты Оракла не ленятся и заработывют бонусы :)
Какие именно конкуренты?
Postgres и DB2 не позволяют отключать индексы, их можно только дропнуть вместе с констрейнтом.
Чтобы заработали бонусы, они должны хотя бы научиться временно их отключать.
А в MS SQL отключение индекса, автоматически отключает связанные с ним констрейнты, хорошо хоть выводит, что именно наотключал.
Так про что речь?
...
Рейтинг: 0 / 0
Удалить быстро индексы и построить заново
    #39750562
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronПричинноследственная связь нарушена.Так продай свой патент Oreacle-у. Чего ты тут распыляешься?
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Удалить быстро индексы и построить заново
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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