Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Работа по реплике и ошибка 710 / 8 сообщений из 8, страница 1 из 1
22.08.2007, 12:39
    #34744482
Работа по реплике и ошибка 710
Коллеги! Подскажите по такой вот ошибке:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create index tmp_magid_idx on tmp_cr_otch(mag_id);
Index created.



 UPDATE tmp_cr_otch set (mag_name,addr)=((SELECT name,addr
 FROM pcr_mag
 WHERE mag_id=tmp_cr_otch.mag_id))
 WHERE mag_id in (select mag_id FROM pcr_mag);
   710 : Table (sop.pcr_mag) has been dropped, altered or renamed.
Error in line  4 
Near character position  43 

Informix 7.3 ОС - ScoUnix 5.06

Что значит эта ошибка при работе с репликой? В описании данная ошибка относится к процедурам - тут-же простой апдейт на временную таблицу (tmp_cr_otch)!
...
Рейтинг: 0 / 0
22.08.2007, 16:09
    #34745252
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа по реплике и ошибка 710
Ну вроде написано , что таблица sop.pcr_mag has been dropped, altered or renamed.
Или это не так?
...
Рейтинг: 0 / 0
22.08.2007, 17:01
    #34745440
Работа по реплике и ошибка 710
Нет - таблица pcr_mag лежит и никаких изменений не было...
...
Рейтинг: 0 / 0
22.08.2007, 18:20
    #34745699
Алексан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа по реплике и ошибка 710
ЧупакальвеКоллеги! Подскажите по такой вот ошибке:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create index tmp_magid_idx on tmp_cr_otch(mag_id);
Index created.



 UPDATE tmp_cr_otch set (mag_name,addr)=((SELECT name,addr
 FROM pcr_mag
 WHERE mag_id=tmp_cr_otch.mag_id))
 WHERE mag_id in (select mag_id FROM pcr_mag);
   710 : Table (sop.pcr_mag) has been dropped, altered or renamed.
Error in line  4 
Near character position  43 

Что значит эта ошибка при работе с репликой? В описании данная ошибка относится к процедурам - тут-же простой апдейт на временную таблицу (tmp_cr_otch)!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Table <table-name> has been dropped, altered or renamed. 

This error can occur with explicitly prepared statements. These statements have the following form:

    PREPARE statement id FROM quoted string

After a statement has been prepared in the database server and before execution of the statement, a table to which the statement refers might have been renamed or altered, possibly changing the structure of the table. Problems might occur as a result. Adding an index to the table after preparing the statement can also invalidate the statement. A subsequent OPEN command for a cursor will fail if the cursor refers to the invalid prepared statement; the failure will occur even if the OPEN command has the WITH REOPTIMIZATION clause.

If an index was added after the statement was prepared, you must prepare the statement again and declare the cursor again. You cannot simply reopen the cursor if it was based on a prepared statement that is no longer valid.

Adding an index to the table after preparing the statement can also invalidate the statement. - это Ваш случай...
...
Рейтинг: 0 / 0
23.08.2007, 16:02
    #34748363
Работа по реплике и ошибка 710
Спасибо!
авторAdding an index to the table after preparing the statement can also invalidate the statement. - это Ваш случай

А если по русски "добавление индекса к таблице после подготовки выражение может 'сломать' это выражение" - правильно?

Тогда такой вопрос - откуда берётся такая ошибка. Дело в том, что это кусок одной здоровой программы. И там таких create index / update подряд большое количество идёт. Как обойти эту ситуацию? Не создавать индексов - тогда запросы/адпейты тормозить будут. Кто знает рецепт решения?
...
Рейтинг: 0 / 0
23.08.2007, 18:16
    #34748934
Алексан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа по реплике и ошибка 710
ЧупакальвеА если по русски "добавление индекса к таблице после подготовки выражение может 'сломать' это выражение" - правильно?Представьте себе, что Вы разработали план пешего путешествия из пункта А в пункт Б, и на Вашем пути есть река. Маршрут предплагалось пройти зимой, и переправляться через речку было не надо... Теперь представьте себе, что ваш план вырван из контекста, и его надо выполнять летом - Вы просто не сможете выполнить план: прибудете к речке, а в плане про то, как её переходить - не слова... Так и с оптимизатором: он приготовил план выполнения запроса в одних условиях, а выполняется запрос - в других...

ЧупакальвеТогда такой вопрос - откуда берётся такая ошибка. Дело в том, что это кусок одной здоровой программы. И там таких create index / update подряд большое количество идёт. Как обойти эту ситуацию? Не создавать индексов - тогда запросы/адпейты тормозить будут. Кто знает рецепт решения? Мне не удалось воспроизвести такую ошибку. А у Вас она повторяема? Расскажите поподробнее: работала ли эта программа раньше, если да, то что изменилось в последнее время (возможно, не в программе, а на сервере)? И что это за программа - ESQL/C, хранимая процедура, ... и как именно она выполняется? Попробуйте выполнять update statistics low on table tmp_cr_otch(mag_id); после создания индекса - это, в любом случае, должно помочь оптимизатору.
...
Рейтинг: 0 / 0
25.08.2007, 12:29
    #34752374
vvg16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа по реплике и ошибка 710
Проверьте уровень изоляции при выполнении DDL sql-операторов,
а также уровень журналирования базы данных.
Такое может быть при одновременном выполнении трех условий:
- при выполнении DDL sql-операторов выставлен уровень изоляции dirty read;
- уровень журналирования БД - buffered logging
- другие пользователи обращаются к этой же таблице.

Я вижу три решения этой проблемы:
1. Изменить уровень журналирования БД.
2. Изменить уровень изоляции перед выполнением
DDL sql-операторов на более высокий.
3. Использовать недокументированную переменную
окружения IFX_DIRTY_WAIT=n.
...
Рейтинг: 0 / 0
27.08.2007, 09:30
    #34753509
Igor Zaiets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа по реплике и ошибка 710
Нормальная ситуация для вторичного сервера.
Подобные ситуации на 9.21 возникают часто.

Если на первичном сервере модифицируется постоянная таблица, то после DDL желательно перегружать вторичный сервер информикс.

Если таблица модифицировалась и не перегружали вторичный сервер - перегрузите информикс на вторичном сервере и проблема должна в 99% случаев уйти, во всяком случае на 9.21 так.
В оставшемся 1% нужно переподымать реплику.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Работа по реплике и ошибка 710 / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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