powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Испорченная БД
54 сообщений из 54, показаны все 3 страниц
Испорченная БД
    #39167375
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

FB WI-V6.3.5.26952 CS

При подключении к БД из isql происходит следующее:
Код: powershell
1.
2.
3.
4.
SQL> connect localhost:c:\data\damage.fdb user SYSDBA password masterkey;
Statement failed, SQLSTATE = 08006
Unable to complete network request to host "localhost".
-Error writing data to the connection.



Без указания хоста:
Код: powershell
1.
2.
3.
SQL> connect c:\data\damage.fdb user SYSDBA password masterkey;
Statement failed, SQLSTATE = 08006
connection lost to database



Запускаю gfix:
Код: powershell
1.
2.
C:\FireBird\bin>gfix -mend -user SYSDBA -password masterkey c:\data\damage.fdb
connection lost to database



Если в IBExpert загрузить файл БД через Tools/Database Inside, то появляется вкладка Errors, на которой в гриде одна строка,
у которой Message:
Код: powershell
1.
Unsupported RDB$FORMATS record length: 20



Что именно произошло с БД, точно сказать не могу. Вроде бы при активных подключениях в несколько таблиц было добавлено целочисленное поле, которое сразу же апдейтилось в 0. Под активными подключениями понимается около 5-7 коннектов, которые массово апдейтят таблицы, в которые добавлялось поле. Размер БД 11 гигов. Более точной информации нету.

Эту БД можно вылечить каким-либо штатным способом?

P.S. Данные из БД не нужны - был восстановлен бэкап.

С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39167542
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovПри подключении к БД из isql происходит следующее:
Что в firebird.log?

PolesovЭту БД можно вылечить каким-либо штатным способом?
Скорее всего - нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39167556
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧто в firebird.log?
Увы, с момента порчи БД сервер (в смысле, железяка) был переустановлен. Логов нет.

PolesovЭту БД можно вылечить каким-либо штатным способом?
Dimitry SibiryakovСкорее всего - нет.

Кстати, забыл упомянуть - в окне Database Inside IBExpert-а список таблиц на вкладке Extract Data\Metadata пуст.
Судя по
Код: powershell
1.
Unsupported RDB$FORMATS record length: 20

безнадежно запорчена системная таблица RDB$FORMATS

Ну, а вообще такую БД вылечить как-либо можно?

С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39167565
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧто в firebird.log?

Если вопрос был про содержимое лога на момент попытки подключения к битой БД:

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
WDWS12 (Client)	Wed Feb 10 10:51:00 2016
	INET/inet_error: read errno = 10054


WDWS12 (Client)	Wed Feb 10 10:54:07 2016
	XNET error: Server shutdown detected


WDWS12 (Client)	Wed Feb 10 10:55:35 2016
	INET/inet_error: read errno = 10054


WDWS12 (Client)	Wed Feb 10 11:13:31 2016
	XNET error: Server shutdown detected



С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39167582
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovКстати, забыл упомянуть - в окне Database Inside IBExpert-а список таблиц на вкладке Extract Data\Metadata пуст.


Если невозможно прочитать RDB$FORMATS, смысла ковырять все остальное просто нет.
А базу можно поиметь?
...
Рейтинг: 0 / 0
Испорченная БД
    #39167585
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovНу, а вообще такую БД вылечить как-либо можно?
Теоретически - да. Воссоздать недостающий формат не так уж и сложно. Я думаю, ребята из
IBSurgeon справятся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39167589
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

сервер просто падает, что в логе и показано

а размер файла какой. такое ощущение, что не "безнадежно запорчена системная таблица RDB$FORMATS" а вообще весь заголовок убит перехлёстом через 4 гб

какой конкретно сервер ib/fb стоял на старом серере
...
Рейтинг: 0 / 0
Испорченная БД
    #39167591
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.ibase.ru/devinfo/db_repair.htm#self

см. про размер файла БД
...
Рейтинг: 0 / 0
Испорченная БД
    #39167686
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertА базу можно поиметь?

Думаю, что руководство не одобрит.
...
Рейтинг: 0 / 0
Испорченная БД
    #39167691
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа размер файла какой.

какой конкретно сервер ib/fb стоял на старом серере

БД - 11 гигов, FB WI-V6.3.5.26952 CS
...
Рейтинг: 0 / 0
Испорченная БД
    #39167698
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochсм. про размер файла БД

Думаю, это не тот случай
...
Рейтинг: 0 / 0
Испорченная БД
    #39167751
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Classic Server...

кто-нибудь дуриком подсоеднилися старой версией Классика или embedded...

или расширение GDB

вообще коненчо хрен теперь разберешься
...
Рейтинг: 0 / 0
Испорченная БД
    #39167753
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gstat - заголовок файла читает ?

http://www.ibase.ru/devinfo/getstat.htm
...
Рейтинг: 0 / 0
Испорченная БД
    #39167757
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovВроде бы при активных подключениях в несколько таблиц было добавлено целочисленное поле, которое сразу же апдейтилось в 0. Под активными подключениями понимается около 5-7 коннектов, которые массово апдейтят таблицы, в которые добавлялось поле.

ой блин, у вас же классик......

PolesovFB WI-V6.3.5.26952 CS
...
Рейтинг: 0 / 0
Испорченная БД
    #39167809
Roman Simakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

при таких конкретных подозрениях на сценарий воспроизведения, я думаю все были бы вам благодарны, если бы вы смогли или хотя бы постарались воспроизвести эту поломку.
...
Рейтинг: 0 / 0
Испорченная БД
    #39167815
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch, читает
...
Рейтинг: 0 / 0
Испорченная БД
    #39167826
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochкто-нибудь дуриком подсоеднилися старой версией Классика или embedded...
Ну, что было (или были) подключения через FBClient предыдущей версии от FB 2.5.4 ненулевая вероятность имеется.
Подключение через Embedded гарантированно не возможно - его просто нет.

Произошло все это где-то во второй половине декабря прошлого года.
Человек, который мог бы рассказать, как все было, тут уже не работает.
Сервер был переустановлен с нуля. Осталась только битая база. Как-то так.

С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39167833
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesovчерез FBClient предыдущей версии

ничего, дело не в клиенте, а в сервере: клиент к файлу БД доступа не имеет

судя по всему вы просто нарвались на изменение метаданных на работающей БД

это крайне не рекомендуется на SuperServer и в принципе запрещено на Classic'ах

а у вас, вы выше, написали "CS"
...
Рейтинг: 0 / 0
Испорченная БД
    #39167837
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman SimakovPolesov,

при таких конкретных подозрениях на сценарий воспроизведения, я думаю все были бы вам благодарны, если бы вы смогли или хотя бы постарались воспроизвести эту поломку.

Ну, сценарий не замысловат - имеется 5-7 коннектов, которые массово апдейтят, ну скажем 5 таблиц. В это время в эти таблицы добавляется целочисленное поле not null. После добавления поле в рамках, скажем так DDL-ного коннекта, апдейтится в 0. В какой-то момент новый коннект к БД не возможен.

Думаю, подобный сценарий можно легко воспроизвести - вопрос, сломается ли при этом БД?

Кстати, тут же на форуме нашел идентичный случай
http://www.sql.ru/forum/1167594/kakov-mehanizm-porchi-bazy?hl=ques

С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168002
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovДумаю, подобный сценарий можно легко воспроизвести - вопрос, сломается ли
при этом БД?
Делать создание/изменение таблицы и добавление/изменение данных в ней в одной транзакции -
известный и надёжный способ сломать БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39168011
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovсоздание/изменение таблицы и добавление/изменение данных в ней в одной транзакции

Ну, в данном случае транзакции были все же разные.
Понятно, что применять DDL при наличии активных коннектов не есть хорошо...
...
Рейтинг: 0 / 0
Испорченная БД
    #39168028
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesovв данном случае транзакции были все же разные.
Уверен? И несколько изменений одной таблицы в одной транзакции тоже не было?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39168274
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovнесколько изменений одной таблицы в одной транзакции тоже не было?


Что подразумевается под "изменений одной таблицы в одной транзакции"?
Если транзакция на массовый апдейт таблицы, в течение активности которой
был применен DDL, то вполне возможно.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168277
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДелать создание/изменение таблицы и добавление/изменение данных в ней в одной транзакции -
известный и надёжный способ сломать БД.
попробуй создать таблицу и залить в нее данные в той же транзакции. О результатах доложи.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168398
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

несколько последовательных DDL

например добавить столбец, а потом добавить еще один столбец computed by по предыдущему

хотя на мое imho достаточно "классика" с изменением метаданных на лету
...
Рейтинг: 0 / 0
Испорченная БД
    #39168433
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrпопробуй создать таблицу и залить в нее данные в той же транзакции. О результатах доложи.
На выходных попробую, доложу.

В данном случае, на сколько удалось выяснить, сценарий был таков:
- массовые апдейты производились из некой клиентской программы (обычная 2-звенка, FIBplus, длинная читающая транзакция и пишущая транзакция на апдейт);
- из IBE в уже существующую таблицу сотрудник добавляет целочисленное поле not null;
- сразу же после добавления в SQLEditor-е выполняется что-то типа
Код: plsql
1.
2.
update SOME_TABLE
   set NOT_NUL_INT = 0;


Создания таблицы и заливки в нее данных в той же транзакции не было.

С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168448
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov- из IBE в уже существующую таблицу сотрудник добавляет целочисленное поле not null;
- сразу же после добавления в SQLEditor-е выполняется что-то типа
прекрасно. т.е. столбец добавляется неизвестно каким способом (я надеюсь, что ИБЕ тут использует alter table),
и кроме того, добавление столбца и update выполняются в разных транзакциях
...
Рейтинг: 0 / 0
Испорченная БД
    #39168449
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

это не должно приводить к разрушению БД. И ещё есть более правильный путь

Код: sql
1.
2.
alter table SOME_TABLE
add NOT_NUL_INT int default 0 not null;



который ещё и работает быстрее.

P.S. В трёшке если таблица содержит данные, то FB не даст тебе добавить NOT NULL столбец без указания кляузы DEFAULT
...
Рейтинг: 0 / 0
Испорченная БД
    #39168463
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrО результатах доложи.

Не стал ждать выходных.
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> create table TEST ( ID integer not null primary key );
SQL> insert into TEST values( 1 );
Statement failed, SQLSTATE = 42S02
Dynamic SQL Error
-SQL error code = -204
-Table unknown
-TEST
-At line 1, column 13
SQL>


В общем-то, все ожидаемо, но БД не повредилась. Все же, это несколько другой случай. IMHO.

С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168467
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovНе стал ждать выходных.
предложено было не тебе, а Сибирякову

PolesovВсе же, это несколько другой случай. IMHO
именно
...
Рейтинг: 0 / 0
Испорченная БД
    #39168472
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvдобавление столбца и update выполняются в разных транзакциях
В принципе, я об этом же и говорил.


Симонов Денисэто не должно приводить к разрушению БД
По идее да, но все же имеются прецеденты...

Речь идет не о том, как при активных коннектах применять к БД DDL, а можно ли выяснить причину падения БД и исправить ошибку в исходном коде сервера.

Все же на выходных попробую воспроизвести сценарий порчи БД.

С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168498
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrпопробуй создать таблицу и залить в нее данные в той же транзакции. О
результатах доложи.
Я знаю, что с этого направления вы уже давно поставили заборчик из костылей, но у ТСа-то
не CREATE TABLE, а ALTER TABLE ADD COLUMN.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39168501
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЯ знаю, что с этого направления вы уже давно поставили заборчик из костылей, но у ТСа-то
не CREATE TABLE, а ALTER TABLE ADD COLUMN.
1) его поставили в борланде, насколько я помню
2) ну и нефиг тогда было писать про "создание" таблицы
...
Рейтинг: 0 / 0
Испорченная БД
    #39168505
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrнефиг тогда было писать про "создание" таблицы
Кстати, с alter table все то же самое:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> alter table TEST add VC varchar(16) not null;
SQL> update TEST set VC = ID;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-VC
-At line 1, column 17
SQL>


С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168516
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

ну так невозможно проапдейтить ещё не существующий столбец, а вот любой другой легко (DML не видит результаты DDL ещё незавершённой транзакции). И вообще все DDL выполняются только по коммиту.
Я же вроде правильный путь показал.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168530
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr1) его поставили в борланде, насколько я помню

1) Я отлично помню, что Firebird 1 и даже, возможно, 1.5, этого заборчика не имели.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39168550
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDML не видит результаты DDL ещё незавершённой транзакции
Более того, в другом коннекте не видит даже после commit в DDL-соединении - только после переподключения.
...
Рейтинг: 0 / 0
Испорченная БД
    #39168563
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesovв другом коннекте не видит даже после commit в DDL-соединении - только после переподключения.

Потому что Classic
...
Рейтинг: 0 / 0
Испорченная БД
    #39169153
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Симонов Денис]Polesov,

это не должно приводить к разрушению БД. И ещё есть более правильный путь

Код: sql
1.
2.
alter table SOME_TABLE
add NOT_NUL_INT int default 0 not null;



который ещё и работает быстрее.

Если я правильно помню то default срабатывает при вставке записи.
Если добавить такой командой поле в таблицу где уже есть записи то в имеющихся записях будет NULL несмотря на default.
Надо делать update.
...
Рейтинг: 0 / 0
Испорченная БД
    #39169221
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,

ты бы проверил что ли. Конечно если добавить DEFAULT к ранее созданному полю NULL значения останутся на своих местах. А вот для нового NOT NULL с DEFAULT поля для всех существующих ранее записей в этом поле будет значение по умолчанию. Причём этот оператор отработает очень быстро, потому что он на самом деле не делает UPDATE, а лишь создаёт новый формат к которому будут приведены существующие записи при выборке. Это как раз я проверял.

Думаешь зря в тройке запретили добавление NOT NULL полей в таблицу с данными без предложения DEFAULT?
Одно это изменение + запрет на модификацию системных таблиц убирают 50% причин возникновения так называемых "невосстановимых" бэкапов.
...
Рейтинг: 0 / 0
Испорченная БД
    #39169226
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> в тройке запретили добавление NOT NULL полей
Симонов Денис> в таблицу с данными без предложения DEFAULT?

Серьёзно? Какой ужас.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39169229
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

а зачем оно нужно? Чтобы битые базы создавать?
...
Рейтинг: 0 / 0
Испорченная БД
    #39169243
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,
допустим DEFAULT нам не нужен. Тогда мы можем сделать вот так.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
alter table SOME_TABLE
add NOT_NUL_INT int default 0 not null;

commit;

update SOME_TABLE
set NOT_NUL_INT = NOT_NUL_INT;

commit;

alter table SOME_TABLE
alter NOT_NUL_INT drop default;

commit;



по крайней мере после выполнения каждого оператора БД остаётся в консистентном состоянии. Последний оператор не меняет номер формата.
...
Рейтинг: 0 / 0
Испорченная БД
    #39169257
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисfraks,

ты бы проверил что ли. Конечно если добавить DEFAULT к ранее созданному полю NULL значения останутся на своих местах. А вот для нового NOT NULL с DEFAULT поля для всех существующих ранее записей в этом поле будет значение по умолчанию. Причём этот оператор отработает очень быстро, потому что он на самом деле не делает UPDATE, а лишь создаёт новый формат к которому будут приведены существующие записи при выборке. Это как раз я проверял.

Проверил. Действительно, на FB 2.5 это работает.
Возможно раньше это было не так (работаю с FB начиная с IB 4.2.1) и потом поправлено,
а может был комплект граблей которые я неправильно опознал.

Симонов ДенисДумаешь зря в тройке запретили добавление NOT NULL полей в таблицу с данными без предложения DEFAULT?
Одно это изменение + запрет на модификацию системных таблиц убирают 50% причин возникновения так называемых "невосстановимых" бэкапов.

Буквально на днях прошелся по сходным граблям.
В таблицу добавил поле INTEGER DEFAULT -1 NOT NULL и при помощи UPDATE заполнил существующие записи.
Косяк в том что делал это при наличи работающих коннектов. В итоге к вечеру в таблице таки были записи где это поле было с NULL и бэкап не ресторился.
...
Рейтинг: 0 / 0
Испорченная БД
    #39169276
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> Тогда мы можем сделать вот так.

Понятно, что сделать можно по-всякому.
Но заставлять писать 2 оператора вместо
одного без необходимости - маразм.
И на это будут справедливо пенять.


P.S. Интересно, при создании таблицы
(а не добавлении поля) тоже такое же
ограничение имеется?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39169282
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksБуквально на днях прошелся по сходным граблям.
В таблицу добавил поле INTEGER DEFAULT -1 NOT NULL и при помощи UPDATE заполнил существующие записи.
Косяк в том что делал это при наличи работающих коннектов. В итоге к вечеру в таблице таки были записи где это поле было с NULL и бэкап не ресторился.
Так точно. На днях так же добавили поле not null с дефолтным значением в домене. Вечером бэкап не восстановился из-за трех строк с NULL. Делали ли полный апдейт всех строк этой таблицы на дефолтное значение - не знаю.
...
Рейтинг: 0 / 0
Испорченная БД
    #39169287
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамP.S. Интересно, при создании таблицы
(а не добавлении поля) тоже такое же
ограничение имеется?


нет конечно. Мало того если таблица пустая то добавить NOT NULL поле можно. Такое же поведение и в Оракле хз с какой версии.
...
Рейтинг: 0 / 0
Испорченная БД
    #39169289
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,

работающие коннекты это совсем из другой оперы, там багов ещё вагон и маленькая тележка и не только с NOT NULL. По крайней мере при использовании такого оператора в моноконнекте нельзя получить битую БД.
...
Рейтинг: 0 / 0
Испорченная БД
    #39169293
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> нет конечно

Ну хоть так.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Испорченная БД
    #39171273
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovВсе же на выходных попробую воспроизвести сценарий порчи БД.

В пустой БД была создана таблица:
Код: 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.
create generator GEN_TEST_ID;

create table TEST (
    ID     integer not null,
    VAL    varchar(10),
    CALC   computed by ((ID + 100) / 10.0),
    STR    computed by (VAL || '=' || CALC),
    INS    timestamp,
    UPD    timestamp
);

alter table TEST
  add constraint PK_TEST primary key (ID);

set term ^ ;

create trigger TEST_BI for TEST
active before insert position 0
as
begin
  new.ID = gen_id( GEN_TEST_ID, 1 );
  if (new.VAL is null) then
    new.VAL = '<NULL>';
  new.INS = current_timestamp;
end ^

create or alter trigger TEST_BU for TEST
active before update position 0
as
begin
  new.UPD = current_timestamp;
end ^

set term ; ^


Закачано 10 млн записей. Далее 10 копий программы-имитатора производили в случайных диапазонах апдейты.
Из ISQL добавлялось поле интежер нот нулл. Далее после соммита добавленое поле апдейтилось в 0. Апдейт постоянно натыкался на дидлок.

Был опробован другой сценарий: 10 копий программы-имитатора коннектились к БД, но ничего не апдейтили. После добавления из ISQL поля и его апдейта в 0 запускались апдейты в программах-имитаторах.

В-общем, сломать БД не получилось.

С уважением, Polesov.
...
Рейтинг: 0 / 0
Испорченная БД
    #39171366
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

классик или суперсервер ?
...
Рейтинг: 0 / 0
Испорченная БД
    #39171587
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochPolesov,

классик или суперсервер ?
Классик. Испорченная БД тоже эксплуатировалась на CS.
...
Рейтинг: 0 / 0
Испорченная БД
    #39174819
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьмите FirstAID ( www.ib-aid.com ) и посмотрите данные в Extractor. Если будет сразу подсвечивать таблицы красным на предмет поломанных форматов, воспользуйтесь функцией External Metadata для подгрузки форматов из старой или аналогичной копии.

С уважением,
Алексей Ковязин
Ibase.ru/IBSurgeon.com
...
Рейтинг: 0 / 0
Испорченная БД
    #39174968
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Alexey KovyazinВозьмите FirstAID
Спасибо, попробую.

P.S. В данном случае нужды восстановить испорченную БД нет. Хотелось бы получить воспроизводимую ошибку, но не получилось.

С уважением, Polesov.
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Испорченная БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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