Модераторы: kdv, dimitr
-
DSKalugin
- Сообщения: 212
- Зарегистрирован: 27 окт 2004, 13:39
INET/inet_error: send errno = 10054
P4 Mon Feb 14 17:35:07 2005
SERVER/process_packet: broken port, server exiting
P4 Mon Feb 14 17:35:07 2005
INET/inet_error: send errno = 10054
P4 Mon Feb 14 17:35:07 2005
SERVER/process_packet: broken port, server exiting
клиентское приложение виснет, на сервере горит индикатор жосткого диска сплошным красным. Приходится через некоторое время срывать программу и подключаться по новой.
Недавно сменил архитектуру с СС на классик версия 1,52
вин2003. В программе изменений никаких не делал.
Может ли это быть из-за того что создал новый индекс во время работы клиентов?
-
Merlin
- Динозавр IB/FB
- Сообщения: 1502
- Зарегистрирован: 27 окт 2004, 11:44
Сообщение
Merlin » 14 фев 2005, 19:54
Events используются?
Других ошибок в логе нет?
Есть привязка к какому-то конкретному действию в приложении?
10054 — это сервер заметил, что издох клиент, не более того. Шнурок оборвал, ресет нажал и т.п. В сочетании с events возникал всякий разный гемор, но вроде ЦПУ жрал, а не диск. Несколько раз провозглашалось, что наконец обнаружено и уборото, но проверка в поле всегда права. Ужор диска при слабом потреблении процессора может говорить о сборке горы мусора. Само создание индекса при клиентах безвредно, но появление нового индекса может вести к изменению планов выполнения каких-либо запросов, у которых раньше возможности его использовать не было, иной раз к фатально неудачному. Это в плане привязки к действиям. Ну и ещё — если он жутко неселективный, это может способствовать образованию горы мусора при массированных удалениях и апдейтах.
-
DSKalugin
- Сообщения: 212
- Зарегистрирован: 27 окт 2004, 13:39
Сообщение
DSKalugin » 14 фев 2005, 20:18
Эвентов не использую, приложения как уже говорил действительно срываю «снять задачу» из за беспробудного висяка
насчет мусора точно подметил
я поставил свипинтервал в 0 и вызываю
gfix -sweep каждую ночь по расписанию
попытка установить обратно автосборку
«C:Program FilesFirebird152bingfix.exe» -housekeeping 30000 -user «SYSDBA» -password «masterkey» C:ShopDBU96.GDB
говорит unavailable database
как это понимать?
-
Merlin
- Динозавр IB/FB
- Сообщения: 1502
- Зарегистрирован: 27 окт 2004, 11:44
Сообщение
Merlin » 14 фев 2005, 20:39
DSKalugin писал(а):Эвентов не использую, приложения как уже говорил действительно срываю «снять задачу» из за беспробудного висяка
Вот тут сервак и пишет 10054. На классике можно бить «зависшие» процессы, если можешь из определить, но риск повредить базу есть, особенно если этот процесс как раз сборкой и занят.
DSKalugin писал(а):
я поставил свипинтервал в 0 и вызываю
gfix -sweep каждую ночь по расписанию
попытка установить обратно автосборку
Не надо. Если мои подозрения верны, то будет только хуже. Индекс, который создал, и его статистику в студию.
DSKalugin писал(а):
«C:Program FilesFirebird152bingfix.exe» -housekeeping 30000 -user «SYSDBA» -password «masterkey» C:ShopDBU96.GDB
говорит unavailable databaseкак это понимать?
да не знаю я ваших виндовых заморочек
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 14 фев 2005, 20:55
насчет unavailable database — это мистическое сообщение лично меня уже достало. ибо у меня на W2000 не воспроизводится, а у людей случается как на FB так и на IB 7.x.
насчет 10054 и т.п. — есть один четкий случай умирания IB 7.1 SP2 на Win2003 Server, с похожими симптомами. Сначала все ОК, потом начинаются 10054, и кончается все это 10093 и неработой IB. На Win2000 все замечательно с тем же IB и тем же приложением. Интересно было бы услышать, не имеет ли кто аналогичных проблем на W2003 + FB 1.5.2, ибо подозрения на какую-то очередную несовместимость с tcp.
-
Merlin
- Динозавр IB/FB
- Сообщения: 1502
- Зарегистрирован: 27 окт 2004, 11:44
Сообщение
Merlin » 14 фев 2005, 22:01
kdv писал(а):
насчет 10054 и т.п. — есть один четкий случай умирания IB 7.1 SP2 на Win2003 Server, с похожими симптомами.
Дим, 10054 он похоже устраивает сам, когда «зависшее» клиентское приложение снимает. А насчёт зависания — помнишь, я рассказывал, как один орёл у меня с похмела на таблице с 10 миллионами записей организовал индекс по полю «дебет/кредит»? Удалить из такой таблицы при наличии такого индекса тысяч 200 — и свип на сутки Причём, если сделать его уникальным, привесив какой-нибудь ID сзаду, то так в глаза бросаться не будет, но запросы с условиями на первый индекс начнут его хватать и перестраивать привычные планы, включая порядок следования таблиц в inner-ах, со всеми вытекающими последствиями. То есть вместо привычных сотых долей секунды можно получить минут 10. А потом начать валить приложения и усугублять происходящее
-
Дмитрий
- Сообщения: 127
- Зарегистрирован: 26 окт 2004, 11:05
Сообщение
Дмитрий » 15 фев 2005, 09:23
У меня на NT 4.0 c IB 7.5 ошибка 10054 лезет постоянно, причем пишет, что с разных компов. Приложение не виснет, коннекты никто не рвет. То же самое, если законекчен один только IBExpert. Такая же фигня была и с IB 6.5, и с IB 5.6.
-
dimitr
- Разработчик Firebird
- Сообщения: 888
- Зарегистрирован: 26 окт 2004, 16:20
Сообщение
dimitr » 15 фев 2005, 11:53
Unavailable database в данном случае вполне понятно — надо указывать хост в gfix, ибо win32-классик поддерживает локальный протокол только начиная с 2.0.
-
DSKalugin
- Сообщения: 212
- Зарегистрирован: 27 окт 2004, 13:39
Сообщение
DSKalugin » 15 фев 2005, 12:14
По порядку теперь:
1-в прошлый четверг сменил сервер с Fb SS 1.5.2 на Fb CS 1.5.2
Причину перехода я тут обосновал (из-за глюка в УДФ на одной базе перегрузился ФБ и отключились аварийно другие БД) Хотел сделать независимые процессы. Но в результате эти отдельные стали работать медленней чем на СС, иногда притормаживать.
2-свипинтервал поставил в 0. Сборку мусора делал ежедневно по расписанию gfix -sweep
3-вчера вечером для ускорения выполнения разовой процедуры создал 5 индексов на работающей БД. Процедура занималась массовым обновлением в пределах 3 тыс записей и удалением «лишних».
Сразу после этого начались длительные висяки. Работать не возможно.
Сегодня сутра тоже висяки были железные. Работать не возможно. Загадки да и только. ИБЭксперт подключаться не захотел. Говорит
Unsuccessful execution caused by an unavailable resource.
unavailable database.
-ИБАналист тоже подобным образом ругнулся
-локальный gfix тоже не хочет выполнять ни одно действие (unavailable database).
-Зато удаленно получилось положить базу в даун и подключиться ибэкспертом.
-FirstAID протестировал и сказал все ок, единственное 5 удаленных индексов показал.
Вобщем решил задачу так. Вернул все на место
перегрузил ВинСерв2003 — не помогло.
-Удаленно ибэкспертом удалил эти злополучные индексы.
-сделал бэкап
-деинсталлировал Fb CS
-установил по новой но уже SS
-провелил БД gfix.exe -v -full
на экране ничего в логе нашол потом
P4 (Client) Tue Feb 15 10:27:22 2005
Control services error 1061
-вернул свипинтервал в 30000 (перед нулем было 20000)
-всех включил, жалоб нет на тормоза.
что это было, так и не понял. Но тяга к экспериментам пропала.
-
DSKalugin
- Сообщения: 212
- Зарегистрирован: 27 окт 2004, 13:39
и еще вопрос
Сообщение
DSKalugin » 15 фев 2005, 12:31
dimitr писал(а):Unavailable database в данном случае вполне понятно — надо указывать хост в gfix, ибо win32-классик поддерживает локальный протокол только начиная с 2.0.
Опа, а я напрямую писал типа C:… без локалхост. В Супере работало наура. Не знал. Спасибо.
Напрашивается еще один вопрос. Не знаю в тему ЛИ? но задам.
Читал
Не надо логиниться к одной базе с разными путями
В этом случае очень вероятно повреждение базы вплоть до ее полного уничтожения. Т.е. не надо использовать link-и на файлы и каталоги БД в unix, и не надо ошибаться и под win писать путь коннекта как c:dirdata.gdb вместо правильного c:dirdata.gdb.
этот совет не относится к разным именам одного и того же сервера в строке коннекта.
http://www.ibase.ru/devinfo/dontdoit.htm
Вопрос : Является ли разными путями подключение
— напрямую через IBObject с указанием P4:C:ShopDBU96.gdb
— через FIBPlus но с использованием алиаса P4:ShopsDB
где в alias.conf четко прописано
ShopsDB = C:ShopDBU96.gdb
А?
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 15 фев 2005, 13:38
DSKalugin писал(а):По порядку теперь:
независимые процессы. Но в результате эти отдельные стали работать медленней чем на СС, иногда притормаживать.
а может, надо было сначала выяснить, почему притормаживает? Может ты задал такой кэш в БД, который для классика смерти подобен.
2-свипинтервал поставил в 0. Сборку мусора делал ежедневно по расписанию gfix -sweep
накопление мусора можно увидеть просмотром статистики. Просто так конечно можно свип в 0 установить, но …
Сразу после этого начались длительные висяки. Работать не возможно.
ну вот. сборка мусора в индексах.
-ИБАналист тоже подобным образом ругнулся
забей ты на локальный протокол. что, нельзя указать соединение как localhost:c:dirdata.gdb???
-вернул свипинтервал в 30000 (перед нулем было 20000)
шаманим…
что это было, так и не понял. Но тяга к экспериментам пропала.
желания почитать хелп к IBAnalyst и www.ibase.ru/devinfo/delmany.htm, а также firebird.conf не появилось?[/quote]
-
dimitr
- Разработчик Firebird
- Сообщения: 888
- Зарегистрирован: 26 окт 2004, 16:20
Сообщение
dimitr » 15 фев 2005, 14:05
Тормоза наверняка из-за кооперативной сборки мусора вместо привычной на супере фоновой… Ну и кеш наверняка влияет.
-
DSKalugin
- Сообщения: 212
- Зарегистрирован: 27 окт 2004, 13:39
Сообщение
DSKalugin » 15 фев 2005, 14:11
читал и хелп и конфиг. Желание учиться, разбираться всегда было и есть. Но вот со временем — попа . Быстрее было вернуть все к исходному стабильному состоянию.
С хелпом проще, там для людей писано, а доку по конфигу под силу осмыслить только профФфессуре, глубоко ежедневно копающейся в недрах кода Firebird. Общем для людей писать надо, а не для киборгов.
Конфиг у меня по умолчанию как стал так я и не трогал его.
Про Локалхост, согласен. Не придавал значения. буду теперь знать.
Спасибо за поддержку
-
DSKalugin
- Сообщения: 212
- Зарегистрирован: 27 окт 2004, 13:39
Сообщение
DSKalugin » 15 фев 2005, 14:17
dimitr писал(а):Тормоза наверняка из-за кооперативной сборки мусора вместо привычной на супере фоновой… Ну и кеш наверняка влияет.
Кстати, тезка, растолкуй… Возможно ли попадание классика в ситуацию, когда 2 и более процесса начинают собирать мусор в одной и тойже базе? Они меж собой не будут конфлктовать или такое не возможно? А как насчет работы в период сбора ?
-
DSKalugin
- Сообщения: 212
- Зарегистрирован: 27 окт 2004, 13:39
Сообщение
DSKalugin » 15 фев 2005, 14:20
а по поводу
Не надо логиниться к одной базе с разными путями см выше
может ктонить прояснить?
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 15 фев 2005, 14:46
если не умеешь указать для одного файла БД разный путь, то лучше не надо не знаешь — спишь спокойно
-
dimitr
- Разработчик Firebird
- Сообщения: 888
- Зарегистрирован: 26 окт 2004, 16:20
Сообщение
dimitr » 15 фев 2005, 15:02
1) Дока по конфигу написано вполне понятно
2) Собирать мусор могут и два процесса классика, никакого конфликта тут нет
3) Алиас — не есть другой пусть к базе
-
DSKalugin
- Сообщения: 212
- Зарегистрирован: 27 окт 2004, 13:39
А вот и развязка!!!
Сообщение
DSKalugin » 15 фев 2005, 19:07
Ура! Причина тормозов разгадана!
Когда я переустанавливал Firebird, я поставил его в другой каталог.
А скрипты подправить забыл, сволачь я ) И себе и вам и юзерам неудобства создал…
Поэтому запланированная сборка мусора из скрипта не происходила!
А Автоматическую я отключил. Ну плюс добавление индексов, массовые insert/update/delete — полный висяк.
Неучел особенность локального подключения с localhost впереди пути
Поэтому не мог достучаться к базе утилитами
Спасибо за внимание. Вопрос объявляю закрытым
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 15 фев 2005, 22:13
ну так ёклмн. ты тут не первый день. взял бы IBAnalyst, почитал как правильно собирать статистику, зарядил бы, посмотрел, ужаснулся…
-
andycat
- Сообщения: 65
- Зарегистрирован: 22 фев 2005, 12:06
Сообщение
andycat » 03 мар 2005, 15:04
В продолжение этой темы и «IB 6.5 Server + W2KSP2 Помогите, плиз, чайнику»:
Вопрос: обязательно/желательно ли ставить IB сервер на отдельную машину.
Проблема продолжается та-же, но реже — ошибки 10053 и 10054 частенько и 2-5 раз в сутки требуется перезапуск IB сервера.
Решал по форуму и докам: обновил все клиентские машины до последних патчей, отключил 2 старые машины на Вынь98 от сервера, поставил ibconsvc на сервер, убрал все не нужное. По логу не получается отследить ошибку — какая-то плавающая: может произойти когда кто-то лезет в 1С или интернет и т.д., от конкретного клиента не зависит, исправил ibconfig:connection_timeout и dummy_packet_intervel — ничего не помогает. Причем если выключить совсем все компьютеры в сети и оставить 3 (основных рабочих включая сервер) и работать только в Interbase программе — все отлично.
Поэтому и вопрос: насколько остальные сетевые программы (The Bat, 1C, EServ/аналог WinGate/ + некоторые MS офисные документы) на сервере сбивают IB сервер?
Firebird log file (firebid.log) can contain a lot of various messages, here you can find the list of most frequent of them, with the explanation of the error.
INET/inet_error: read errno = 10054
Short: Software caused connection abort.
The disconnect of the client from the server. If error text contains with (Client), it means that the client application lost its connection to the server and wrote down this fact to the log.
If error text contains (Server), it means that server lost the connection to the client and reported it to the firebird.log.
The usual reason of 10054 error is an unstable connection, for example, weak Wi-Fi.
Also, it is possible to see this error if a client application doesn’t explicitly close the database connection, i.e., there is no explicit command like «MyDB.Active:=false» on closing the software.
INET/inet_error: read errno = 104
Short: Software caused connection abort.
The same as 10054, but on Linux.
WNET/wnet_error: ReadFile end-of-file errno = 109
In short: Software caused connection abort.
The same as 10054, but this error occurs when client application uses the WNET connection path to the Firebird server instance on Windows, something like this:
\serverpathdatabase.fdb
This is not recommended, better use TCP/IP connections for network connections (in the format server:pathdatabase.fdb or, on Firebird 3, inet://servername:pathdatabase.fdb), and XNET for local connections (local path on 2.5 and xnet://pathdatabase.fdb).
Consider to disable WNET connections, look here how to disable connection protocols for Firebird on Windows.
INET/inet_error: send errno = 10053 (on Windows)
or INET/inet_error: send errno = 103 (on Linux)
Also means broken connection, but WinSock error is 10053.
INET/inet_error: connect errno = 10060 (Windows)
or INET/inet_error: connect errno = 10061 (Windows)
In short: 10061 — Connection refused, 10060 — Connection timed out
In general, this error means that it is not possible to establish a connection between the server and client application.
In case of this error with (Client), It means that the client application tried to connect to Firebird through network connection string, but failed, either Firebird server is not running, or access closed by a firewall.
More details about common Winsock errors is here.
I just upgraded my DB to Firebird 4.0 and all seems to work when connecting to the DB using a database management tool.
So now I try to connect, after making sure I’ve upgarded my ADO.Net to FirebirdSql.Data.FirebirdClient v8.0.1 (latest).
Here is how I create my connection string (yes, db path exists and I made sure that users have modification rights):
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
cs.Database = @"C:/myPath/MyDB.FDB";
cs.DataSource = "localhost";
cs.UserID = "sysdba";
cs.Password = "masterkey";
cs.Dialect = 3;
cs.Pooling = false;
cs.ServerType = FbServerType.Default;
// --- Omitted at first - any of the 3 types leads to errors!
//cs.WireCrypt = FbWireCrypt.Disabled;
var DBConn = new FbConnection(cs.ConnectionString);
DBConn.Open();
Now, notice I left out WireCrypt
option (on purpose to start with). My error is:
Error occurred during login, please check server firebird.log for details
firebird.log
says:
Authentication error No matching plugins on server
So I googled around and found hints it may come from wire encryption. Well ok, so I did try all 3 versions of wire encryption — if I use Required
or Enabled
, I get the above error. If I use the Disabled
, I get
Incompatible wire encryption levels requested on client and server
Furthermore, I tried setting WireCrypt = Disabled
in firebird.conf
and in my code, restarted the service and tested again — now I have the same result as with the first two cases:
Authentication error No matching plugins on server
So I guess I’m missing something here about the encryption plugins — but I couldn’t find any valuable information there, thanks for helping out!
UPDATE: here are the settings I tried and the error I got:
Attempt 1: all firebird.conf
defaults (I posted it here to keep things short here):
Connection string 1:
character set=NONE;data source=localhost;initial catalog=C:UsersDBAccessMYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled
Incompatible wire encryption levels requested on client and server
Connection string 2 (wire crypt=Enabled or Required)
Authentication error No matching plugins on server
Attempt 2:
WireCrypt = Disabled
Connection string 1:
character set=NONE;data source=localhost;initial catalog=C:UsersDBAccessMYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled
Authentication error No matching plugins on server
Connection string 2 (wire crypt=Enabled) => same error!
Attempt 3:
AuthClient = Srp256, Srp
UserManager = Srp
Connection string 1:
character set=NONE;data source=localhost;initial catalog=C:UsersDBAccessMYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled
Incompatible wire encryption levels requested on client and server
Connection string 2 (wire crypt=Enabled or Required)
Authentication error No matching plugins on server
Attempt 4:
AuthClient = Srp256, Srp
UserManager = Srp
WireCryptPlugin = ChaCha, Arc4
WireCrypt = Enabled
ServerMode = Super
Connection string (same result with any wire crypt option in the connection string):
character set=NONE;data source=localhost;initial catalog=C:UsersDBAccessMYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Enabled
Authentication error No matching plugins on server
NOTE: I also see the following message in firebird.log
, which is possibly due to the service restart…
inet_error: read errno = 10054, client host = DESKTOP-1234, address = 127.0.0.1/60348, user = myusername
Последнее обновление – 21.11.2001.
Ошибки идут под буквой E (error), описание ошибки – D (description), возможное решение проблемы – как S (solution).
Описания ошибок приведены на момент существования IB 7.0. Часть ошибок могут проявляться только в предыдущх версиях (6.x, FB,Yaffil, 5.6, 5.5, 5.1, 5.0).
Внимание! Расшифровка ошибок сети на Windows для tcp/ip находится в winsock.pas/c, для UNIX – в errno.h.
E: internal gds software consistency check (partner index description not found (175))
D: «пропал» индекс первичного или вторичного ключа.
D: построен уникальный индекс по полю, по которому уже есть FK (т. е. неуникальный индекс).
S: Теоретически «пропавший» индекс можно обнаружить при помощи запроса
select R.RDB$CONSTRAINT_NAME, R.RDB$INDEX_NAME as REFINDEXNAME, I.RDB$INDEX_NAME as REALINDEX, I.RDB$RELATION_NAME, I.RDB$INDEX_INACTIVE from RDB$INDICES I RIGHT JOIN RDB$RELATION_CONSTRAINTS R on I.RDB$INDEX_NAME = R.RDB$INDEX_NAME WHERE R.RDB$CONSTRAINT_TYPE = ‘FOREIGN KEY’ or R.RDB$CONSTRAINT_TYPE = ‘PRIMARY KEY’ order by R.RDB$CONSTRAINT_NAME
Constraint без индекса (пустое поле REALINDEX) и окажется «битым». Его нужно попытаться удалить. Если удалить constraint не удается, то следует попытаться создать индекс, имя которого указано в столбце REFINDEXNAME. Уникальность индекса должна соответствовать типу constraint – уникальный для первичного ключа, и неуникальный для вторичного.
Если же речь идет о лишнем (уникальном) индексе, то один из индексов рекомендуется удалить.
E: gds__free: attempt to release bad block
E: gds__alloc: memory pool corrupted
D: какие-то проблемы с памятью, или некорректно работающей UDF.
S: Решение проблемы неизвестно.
S: В более ранних версиях IB (4.2 и ниже) эта ошибка была известна как баг 8349, проявлявшийся при больших размерах файла сортировки. Т. е. при наличии запросов, обрабатывающих большие объемы данных, и имеющих сортировку ORDER BY без соответствующего индекса.
Кроме того, ошибка может появляться в multithread-приложениях из-за закрытия соединения не в том thread, в котором оно было открыто.
E: WNET/wnet_error: ReadFile end-of-file errno = 109 (win)
E: INET/inet_error: send errno = 10054 (win)
E: Inet/inet_error: send errno=104 (unix)
D: обрыв клиентского соединения. WNET – по NetBEUI, INET – по TCP/IP.
S: Для начала надо сделать upgrade на максимально последнюю версию IB (например, для 5.x это 5.6, для 6.x это 6.0.1.6 или 6.5, для Firebird – релиз v1 и так далее). Затем убедиться, что на сервере, если это NT (или W2K), стоит самый последний Service Pack. Если клиенты – NT (или W2K) Workstation, то на них поставить тот же сервиспак, что и на сервере. Если клиенты – Windows 95/98, то скачать с www.microsoft.com самые последние обновления для netbeui и tcp/ip.
Вообще при работе по tcp/ip таких ошибок должно быть существенно меньше, чем по netbeui.
Собственно, слово WNET в сообщении об ошибке означает ошибку при работе по протоколу по netbeui (строка вида \serverc:dirdata.gdb), а INET – по протоколу tcp (строка вида server:c:dirdata.gdb).
Если ошибки 109 или 10054 продолжают появляться, то нужно искать дефектное сетевое оборудование – хаб, свитчер, или сетевую карту. Теоретически в этом может помочь использование какого-либо SNIFFER, но методика пока неизвестна. Также см. утилиту ibconsvc.zip, которая заносит информацию о коннектах и дисконнектах (только tcp) прямо в interbase.log, что позволяет отследить станции или хабы, генерирующие ошибку 10054.
Почти то же самое написано в документе: http://community.borland.com/article/0,1410,25340,00.html
Еще один вариант, который иногда помогает устранить обрывы коннектов – изменение параметров CONNECTION_TIMEOUT и DUMMY_PACKET_INTERVAL в IBCONFIG (или isc_config на UNIX) на значения, отличные от умолчательных, например, 170 и 50 соответственно. В некоторых случаях на UNIX помогает установка connection_timeout в 0.
E: INET/inet_error: accept errno = 10093
E: INET/inet_error: read errno = 10038
D: ошибка при попытке инициализации подсистемы tcp/ip (NetBEUI), вызвана частыми появлениями ошибок 10054 (109). Как правило после этой ошибки сервер аварийно завершает работу. Для перезапуска сервера возможно требуется рестарт NT.
S: решение такое же, как и для ошибок 10054 или 109 (см. выше).
E: SCH_validate — not entered
E: SCH_validate — wrong thread
D: неверно работающая UDF
S: скорее всего, если функция написана на Delphi (Pascal), то в модуле не указано IsMultiThread:=True. Т. е. библиотека должна быть проинициализирована для безопасной работы с несколькими threads, поскольку сервер обращается к DLL UDF именно из разных threads.
Также следует избегать использования threadvars на серверах с двумя и более процессорами, т. к. в коде Delphi (по крайней мере 4) есть ошибки с использованием TLS. Вместо threadvars рекомендуются прямые вызовы функций работы с TLS в Win32.
E: Page 34672 is an orphan
D: возможно, что при операциях записи на диск сервер завершил работу аварийно или произошел сбой системы по питанию
S: Ничего не нужно делать. Осиротевшие страницы (orphan pages) будут использованы повторно для размещения новых данных.
E: internal gds software consistency check (error during savepoint backout (290))
D:
S:
E: internal gds Software consistency check (size of opt block exceeded (286))
D:
S:
E: internal gds software consistency check (invalid SEND request (167))
D:
S:
E: internal gds software consistency check (decompression overran buffer (179))
D: обычно ошибка возникает при попытке прямого копирования базы данных с одной платформы на другую, например, из-под NT на Netware.
S: перенос баз данных между платформами должен производиться только путем backup/restore. Если ошибка возникла при backup, то необходимо сделать проверку базы данных при помощи gfix с проверкой record fragments, и после этого опять попытаться сделать backup (возможно с опцией ignore checksum errors).
E: internal gds software consistency check (Too many savepoints (287))
D: возникает при большом количестве insert/update/delete (явном или косвенном, через триггеры) в одной длительной транзакции. Возможно влияние количества вызываемых триггеров и процедур в этой транзакции.
S: в компоненте соединения с БД (например, IBDatabase) нужно указать параметр isc_tpb_no_auto_undo. В этом случае сервер не будет пытаться сохранять все изменения через механизм savepoints. Делать это следует только для тех коннектов, где заранее известно, что количество изменений в одной из транзакций будет большим (явно или через триггеры, по количеству изменяемых записей – больше 10-100 тысяч).
E: internal gds software consistency check (wrong record length (183))
D: может возникнуть при UPDATE полей, по которым построен unique индекс.
S: ошибка исправлена в IB 5.6 (bugs N 60135, 60537).
-
Summary
-
Files
-
Reviews
-
Support
-
Wiki
-
Mailing Lists
-
News
-
Code
-
Cvs
Menu
▾
▴
From: Rick Roen — 2008-12-27 19:39:28 |
Firebird server v 2.1.17910 FirebirdClient.dll v 2.1.0.0 Vista Pro My firebird.log file is filled with hundreds entries like: RICK2008 (Server) Sat Dec 27 13:21:07 2008 INET/inet_error: read errno = 10054 My connection string is: initial catalog=???;user id=Sysdba;password=masterkey;role name=Full_Access;data source=localhost;pooling=True;max pool size=100;min pool size=10;packet size=8192;dialect=3 I see that this error is from a dropped connection, however since I am using my local Firebird server in a test environment (data source=localhost), I don't know how this can be. I looked at a clients firebird log that has thousands of the same entries. This appears to have started when I upgraded to Firebird server v 2.1.17910 When I clear the log and run a simple quick program that logs into the database, there are maybe 7 new entries like above. If I do selects, etc, more entries are added, although all selects/updates/inserts run with no problem. There are no other entries in the log. When I execute selects/updates/inserts from DBWorkbench, a utility program, there are no entries into the log. Any idea why this is happening? Regards, Rick |
From: Pham Huu Le Quoc Phuc <phucp…@so…> — 2009-01-02 01:52:24 |
I get lastest source code FB.net 2.5 and build, it can't create database in Embedded Server. _____ From: Rick Roen [mailto:Rick@LakeValleySeed.com] Sent: Sunday, December 28, 2008 02:39 To: fireb...@li... Subject: [Firebird-net-provider] log filled with INET error 10054 Firebird server v 2.1.17910 FirebirdClient.dll v 2.1.0.0 Vista Pro My firebird.log file is filled with hundreds entries like: RICK2008 (Server) Sat Dec 27 13:21:07 2008 INET/inet_error: read errno = 10054 My connection string is: initial catalog=???;user id=Sysdba;password=masterkey;role name=Full_Access;data source=localhost;pooling=True;max pool size=100;min pool size=10;packet size=8192;dialect=3 I see that this error is from a dropped connection, however since I am using my local Firebird server in a test environment (data source=localhost), I don't know how this can be. I looked at a clients firebird log that has thousands of the same entries. This appears to have started when I upgraded to Firebird server v 2.1.17910 When I clear the log and run a simple quick program that logs into the database, there are maybe 7 new entries like above. If I do selects, etc, more entries are added, although all selects/updates/inserts run with no problem. There are no other entries in the log. When I execute selects/updates/inserts from DBWorkbench, a utility program, there are no entries into the log. Any idea why this is happening? Regards, Rick |
From: Dean Harding <dean….@dl…> — 2009-01-05 08:32:11 |
> I get lastest Fb.Net 2.5 and build it. I try to use FbBatchScript to create > database in Embbedded mode. But it can't. Please help me. You haven't described the problem. HOW do you try to create a database using the FbBatchScript (please provide the code you're using). HOW does it fail? Does it produce an error message (if so, what does the error say)? Does it simply do nothing and no database is created? Something else? Lastly, with the embedded server, you need to use FbConnection.CreateDatabase to actually create the database file, and then you can use FbBatchScript to populate it with tables/sproc/etc. Dean. |
From: Pham Huu Le Quoc Phuc <phucp…@so…> — 2009-01-05 08:45:31 |
I think, FbBatchScript not support CREATE DATABASE in Embedded Server? -----Original Message----- From: Dean Harding [mailto:dean....@dl...] Sent: Monday, January 05, 2009 13:33 To: 'For users and developers of the Firebird .NET providers' Subject: Re: [Firebird-net-provider] FbBatchScript can't CREATE DATABASEin Embedded server > I get lastest Fb.Net 2.5 and build it. I try to use FbBatchScript to create > database in Embbedded mode. But it can't. Please help me. You haven't described the problem. HOW do you try to create a database using the FbBatchScript (please provide the code you're using). HOW does it fail? Does it produce an error message (if so, what does the error say)? Does it simply do nothing and no database is created? Something else? Lastly, with the embedded server, you need to use FbConnection.CreateDatabase to actually create the database file, and then you can use FbBatchScript to populate it with tables/sproc/etc. Dean. ---------------------------------------------------------------------------- -- _______________________________________________ Firebird-net-provider mailing list Fireb...@li... https://lists.sourceforge.net/lists/listinfo/firebird-net-provider |
From: Dean Harding <dean….@dl…> — 2009-01-05 21:52:38 |
> I think, FbBatchScript not support CREATE DATABASE in Embedded Server? Right. As I said, the embedded server works on database files directly, so you need to create the database with FbConnection.CreateDatabase. You can still use FbBatchScript to populate the database with tables and so on. Dean. |
From: Jiri Cincura <di…@ci…> — 2009-01-14 14:50:56 |
On Fri, Jan 9, 2009 at 15:15, Rick Roen <Ri...@la...> wrote: > Did you have a chance to look at this yet? Hi I looked into this with my latest build, and the problem is gone. I don't know what changed (I had these errors in log too, but I thought that's because of killing apps during debug), but it's not there anymore. :) Maybe I've fixed by accident (LOL "fixed by accident") something together with work on FB2.1 protocol. :) Anyway, to be sure, can you grab latest weekly build and try? -- Jiri {x2} Cincura (CTO x2develop.com) http://blog.vyvojar.cz/jirka/ | http://www.ID3renamer.com |
From: Jiri Cincura <di…@ci…> — 2009-01-05 22:10:24 |
On Mon, Jan 5, 2009 at 22:52, Dean Harding <dean....@dl...> wrote: >> I think, FbBatchScript not support CREATE DATABASE in Embedded Server? > > Right. As I said, the embedded server works on database files directly, so > you need to create the database with FbConnection.CreateDatabase. You can > still use FbBatchScript to populate the database with tables and so on. FbBatchExecution is in fact internally calling FbConnection.CreateDatabase, but there's no way to tell thru standard command: // CREATE {DATABASE | SCHEMA} 'filespec' // [USER 'username' [PASSWORD 'password']] // [PAGE_SIZE [=] int] // [LENGTH [=] int [PAGE[S]]] // [DEFAULT CHARACTER SET charset] // [<secondary_file>]; that it should use embedded server, so it will use isc_create_database from fbembed.dll. What comes to my mind - but not tested, just guess that it may work - is to provide dummy connection string with ServerType=1. Then maybe the create database isql command will not rewrite the ServerType so it will be done using embedded server. -- Jiri {x2} Cincura (CTO x2develop.com) http://blog.vyvojar.cz/jirka/ | http://www.ID3renamer.com |
From: nieurig <ni…@ya…> — 2009-01-14 19:22:54 |
> > >OK I'm not so lucky. :) The problem is in connection pooling that was >turned off on my connection string. I'll look at the problem. > Well, I got this error too, only when pooling is set to true. Depends on the firebird server-type I get INET/inet_error: read errno = 10054 or XNET error (xnet:2044) connection lost: another side is dead Searching on web I found this http://tracker.firebirdsql.org/browse/CORE-1196 I thought it is a firebird problem ? Best wishes. Niels |
From: Pham Huu Le Quoc Phuc <phucp…@so…> — 2009-05-19 07:51:35 |
I use FB 2.1.2 Embedded server, FB.Net Provider 2.5 Beta 2, our program thown following bug: Csla.DataPortalException: DataPortal.Update failed (System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.String.System.IConvertible.ToInt32(IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Data.XSDSchema.HandleElementColumn(XmlSchemaElement elem, DataTable table, Boolean isBase) at System.Data.XSDSchema.HandleParticle(XmlSchemaParticle pt, DataTable table, ArrayList tableChildren, Boolean isBase) at System.Data.XSDSchema.HandleComplexType(XmlSchemaComplexType ct, DataTable table, ArrayList tableChildren, Boolean isNillable) at System.Data.XSDSchema.InstantiateTable(XmlSchemaElement node, XmlSchemaComplexType typeNode, Boolean isRef) at System.Data.XSDSchema.HandleTable(XmlSchemaElement node) at System.Data.XSDSchema.HandleDataSet(XmlSchemaElement node, Boolean isNewDataSet) at System.Data.XSDSchema.LoadSchema(XmlSchemaSet schemaSet, DataSet ds) at System.Data.DataSet.ReadXSDSchema(XmlReader reader, Boolean denyResolving) at System.Data.DataSet.ReadXml(XmlReader reader, Boolean denyResolving) at System.Data.DataSet.ReadXml(Stream stream) at FirebirdSql.Data.Schema.FbSchemaFactory.GetSchema(FbConnection connection, String collectionName, String[] restrictions) at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.GetSchema(String collectionName, String[] restrictions) at FirebirdSql.Data.FirebirdClient.FbConnection.GetSchema(String collectionName, String[] restrictions) at FirebirdSql.Data.FirebirdClient.FbConnection.GetSchema(String collectionName) at FirebirdSql.Data.FirebirdClient.FbCommandBuilder.DeriveParameters(FbCommand command) at Tony.Data.Database.Database.DeriveParameters(DbCommand DbCommand) at Tony.Core.Business.Report.CMDReport.AddParameters(DbCommand DbCommand) at Tony.Core.Business.Report.CMDReport.LoadData() at Tony.Core.Business.Report.CMDReport.DataPortal_Execute()) Please help me, thanks. |
Здравствуйте!Столкнулась с такой проблемой. Есть программа, которая многопоточно обращается к локальной БД. (Сервер FireBird)
Данная программа стоит у многих пользователей. Но только у одного программа перестает коненктится к БД, потому что FireBird сервер зависает. И пока его не перезапустишь, ничего не работает. В логах FireBird очень часто пишется
INET/select_wait: select failed, errno = 10054
Чуть реже
INET/select_wait: select failed, errno = 10053
INET/select_wait: select failed, errno = 10055
Еще реже
SRVR_multi_thread/RECEIVE: error on main_port, shutting down
Shutting down the Firebird service with 63 active connection(s) to 2 database(s)
REMOTE INTERFACE/gds__detach: Unsuccesful detach from database.
Uncommitted work may have been lost
и очень редко
terminated abnormally (4294967295)
В логах программы
EIBInterBaseError Unable to complete network request to host «@1».
Error writing data to the connection.
Удаленный хост принудительно разорвал существующее подключение.
Кто может сказать в чем тут проблема:в программе,в сети,в FireBird или еще в чем-то и как это можно лечить?
FireBird у всех пользоваетелей один,программа из одного инсталятора ставится
Версия Firebird 2.1
Спасибо!
Вот такой пример сегодня по логам
В логах программы
23.06.2011 12:25:48 [Err] Unable to complete network request to host «@1».Error writing data to the connection.Удаленный хост принудительно разорвал существующее подключение. EIBInterBaseError (тут идет запрос к БД,она уже не доступна)
23.06.2011 12:26:02 [Err] UnInitializeDB -> EIBInterBaseError Unable to complete network request to host «@1».Error writing data to the connection.
Удаленный хост принудительно разорвал существующее подключение.(Закрываем программу)
в это же время в логах FireBird
OP_LININSKIY2 (Server) Thu Jun 23 12:25:04 2011
SRVR_multi_thread/RECEIVE: error on main_port, shutting down
OP_LININSKIY2 (Server) Thu Jun 23 12:25:45 2011
Shutting down the Firebird service with 63 active connection(s) to 2 database(s)
OP_LININSKIY2 (Server) Thu Jun 23 12:25:45 2011
The database ххх was being accessed when the server was shutdown
OP_LININSKIY2 (Server) Thu Jun 23 12:25:45 2011
The database ххх was being accessed when the server was shutdown
OP_LININSKIY2 (Client) Thu Jun 23 12:25:46 2011
INET/inet_error: read errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:25:48 2011
INET/inet_error: read errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:25:48 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Server) Thu Jun 23 12:25:56 2011
Shutting down the Firebird service with 1 active connection(s) to 1 database(s)
OP_LININSKIY2 (Server) Thu Jun 23 12:25:56 2011
The database ххх was being accessed when the server was shutdown
OP_LININSKIY2 (Client) Thu Jun 23 12:26:01 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:01 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
REMOTE INTERFACE/gds__detach: Unsuccesful detach from database.
Uncommitted work may have been lost
OP_LININSKIY2 (Client) Thu Jun 23 12:26:02 2011
INET/inet_error: send errno = 10054
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
/en/articles/how-to-check-ram-and-avoid-database-corruptions/Alexey Kovyazin, 31-03-2014
Below is the description of common errors and problems in InterBase/Firebird databases and their recovery chances.
To get exact recovery price and time please contact us via email.
For approximate pricing please see «Firebird and InterBase Recovery» service description. There is no 100% warranty that described errors exactly correspond to the described reasons.
Internal gds software consistency check (cannot find tip page (165))
Database cannot be opened using Firebird or InterBase engine, and the following message appears: Internal gds software consistency check (cannot find tip page (165))
Abnormal shutdown or physical database file corruption. Transaction inventory page has been lost (TIP). Corruption area can vary from several pages to the whole database, so additional investigation needed.
The most probable reasons are abnormal server shutdown (using Reset button), wrong backup approach or backup tools. On Windows XP such corruption can be caused by «System Restore» feature for «gdb» files.
First, the database should be scanned with FirstAID Diagnostician. If FirstAID does not warn about serious corruption, corruption can be fixed with the full version of FirstAID.
In the case of serious corruption, the custom recovery needed.
99%
Database file appears corrupt. Wrong page type. Page NNN is of wrong type (expected X, found Y)
Error message appeared in standard output or in firebird.log or interbase.log:
Database file appears corrupt. Wrong page type. Page NNN is of wrong type (expected X, found Y)
Due to the physical corruption or another reason, the sequence of database file pages has been changed, or wrong values appeared on pointer pages or index root pages, etc.
The most probable reasons are abnormal server shutdown (using Reset button), wrong backup procedure or wrong backup tools/approach.
First, the database should be scanned with FirstAID Diagnostician. If FirstAID does not warn about serious corruption, corruption can be fixed with the full version of FirstAID.
Otherwise, custom recovery process needed.
95%.
Unknown database I/O error for file «*.gdb». Error while trying to read from file
The database cannot be open, and the following error message appears: Unknown database I/O error for file «*.gdb». Error while trying to read from the file.
Due to the abnormal server shutdown, the most recent database pages were not written to the disk.
Custom recovery process. Database is checked by gfix and backup/restore.
95%
Decompression overran buffer
Error message appears: Internal gds software consistency check (decompression overran buffer (179))
It is a serious database corruption: system tables could be damaged. Sometimes this error occurs after database transfer to the new server/computer. Investigation needed.
Database structure analysis, generation of new pages, several iterations needed.
95%
Wrong record length
An error message appears: Internal gds software consistency check. Wrong record length
Most often «Wrong record length» error are caused by bad RAM. We strongly recommend checking memory (RAM) at the server.
Locate and delete wrong records using IBSurgeon’s low-level tools. Several iterations needed.
97%
Database file appears corrupt. Bad checksum
Database file appears corrupt. Bad checksum. Checksum error on database page XX.
Bad RAM. We strongly recommend checking memory (RAM) at the server.
Custom recovery process. Several iterations needed.
99%
Cannot find record back version
The database seems to be working, but gbak cannot complete backup.
Error text:
Internal gds software consistency check (cannot find record back version (291))
gds_$receive failed. Exiting before completion due to errors. internal gds software consistency check (can’t continue after bug check).
Most probable reason is wrong transaction management. Transactions’ performance investigation.
The database requires detailed analysis, and usually the solution is to find and delete problem database objects and then recreate them. Sometimes it is necessary to transfer data to the new database.
99%
Next transaction older than oldest active transaction
Internal gds software consistency check (next transaction older than oldest active transaction (266))
This seldom error occurs in InterBase 4.x-5.x, it’s a bug.
Custom recovery process
99%
Corrupted header
The database cannot be opened and Firebird/InterBase does not consider it as a valid database.
Physical corruption, HDD crash.
Custom recovery process
80%
Database file size exceeds implementation limit
It happens on InterBase 4.x-5.x servers and early Firebird (0.9.x) betas. The database cannot be opened, database file size is 4Gb.
Implementation limit of InterBase 4.x-5.x-6.0.x, and early Firebird 0.9.x.
Custom recovery process.
Usually, we can save all data (i.e., 100%), but sometimes it can be less than 70%.
Conversion error from string
Error text: Conversion error from string «XXX».
Preliminary diagnosis is impossible, on-site investigation needed.
Custom recovery process.
99%
INET/inet_error: read errno = 10054 or 10038 or 10093
Multiple entries in firebird.log or interbase.log with errors 10054, 10038, 10093, etc.
These errors are caused by network problems — check your hubs, network adapters, etc. It is not a Firebird/InterBase error itself, but it may impact Firebird/InterBase.
We offer FBScanner tool to solve «10054 errors» problem (among other issues). See details here.
Not applicable.
Partner index description not found (175))
Error messages text: internal gds software consistency check (partner index description not found (175))
Missed index for a primary or foreign key.
It may be caused by physical corruption or internal server bugs.
Custom recovery process.
100%
Other errors
Below there is a list of seldom Firebird/InterBase errors, which can be caused by different reasons. Do not hesitate to send us the description of your problem — we can help you.
Wrong UDF may cause the following errors in interbase.log:
SCH_validate — not entered
SCH_validate — wrong thread
Index corruption may cause the following message in interbase.log:
Page 34672 is an orphan
And this error can occur during intensive inserts/update/delete during the single transaction:
internal gds software consistency check (Too many savepoints (287))
It is hard to recognize the reason without investigation of database in case of the following errors:
internal gds software consistency check (error during savepoint backout (290))
internal gds Software consistency check (size of opt block exceeded (286))
internal gds software consistency check (invalid SEND request (167))
Different reasons. We need to investigate corrupted database.
Custom recovery process.
Various