Тяпница
Подхожу к туалету, вижу закрытую дверь, мысль: Critical section locked... Пора завязывать с многопоточными приложениями )))
Re: Как отключить -USE_(ALL_SPACE) ?
Khorsun Vlad wrote: Ты вообще пытался хоть какую-нибудь документацию читать ? Прости, но за много лет пребывания на этом форуме твои вопросы заставляют меня считать обратное, и лучше не становится... Извини, Влад :) отвечу анекдотом: - Почему так мало людей умеют устанавливать UNIX ? - Потому что его один раз поставил - и он стоит... Так и с птицей: когда необходимость в GFIX возникает раз в год, о его существовании как-то забываешь :)))
Re: Как отключить -USE_(ALL_SPACE) ?
Vlad Khorsun wrote: Konstantin R.Beliaev ... Когда-то сдуру при ресторе включил опцию gbak -USE_(ALL_SPACE) do not reserve space for record versions Теперь в свойствах базы вижу Attributes force write, no reserve Несколько раз бэкап-ресторил уже без этой опции, но в свойствах no reserve сохраняется. Как его теперь отключить-то? :) FB 2.5 gfix -use тебе всё скажет Блин, ни за что б не догадался, что надо GFIX смотреть :((
Re: Бэкап через сервисы
Vlad Khorsun wrote: Cannot perform operation -- service is not attached. isc_service_start вызван без вызова isc_service_attach, или isc_service_attach завершился с ошибкой. Не, ну разница-то только в пути к файлу бэкапа! Если я укажу несуществующий диск или каталог, например: H:\blabla\123.fbk то у меня программа дает сообщение о неправильном файле, а у клиента не подключается сервис! :( gbak через сервисы дает нормальную диагностику про неправильный файл, хотя пока игрался, нашел что вот такая ошибочная команда: gbak -b localhost:d:\base\multi.fdb h:\base\multi_meta.gbk -g -m -se приводит к падению процесса классика (Firebird-2.5.1.26166-0_Win32) : This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
Бэкап через сервисы
Не знаю, чья это бага: птицы, pFIBBackupService или кривой настройки, но есть какие-то странности в сообщениях об ошибках. Например, если неправильно задать имя файла бэкапа, то при бэкапе через сервисы из FIB-ов на моей машине выдается вполне понятное сообщение: gbak: cannot open backup file testworkstation:f:\base\test.fbk gbak: Exiting before completion due to errors а на машине клиента: Cannot perform operation -- service is not attached. Как бы это пофиксить?
Access violation
Я понимаю, что это стук в подвале, но может кто-то знает, где копать? Периодически возникает Access Violation по адресу 77C32A16 в msvcrt.dll при вызове isc_iterprete в функции ФИБов TIBClientLibrary.isc_interprete Как бы понять, в чем причина? WinXP SP3 gds32.dll 6.3.4.4910 FB 2.5.1.26166 Может это быть из-за несовпадения версий сервера и GDS32 ?
Сильно неуникальный индекс
Помнится раньше сильно неуникальные интексы, со статистикой 0.3-0.5 считались большим злом и сильно тормозили при удалении записей. В 2.5 это поправили или все еще рекомендуется добавлять в индекс какое-нибудь поле для улучшения уникальности?
Re: Генерация номеров - генераторы или автономная транзакция?
Nikolay Ponomarenko wrote: Необходим некоторый механизм, который выдает уникальные номера, но настраивается на стороне пользователя - т.е. во время работы с базой (например раздельные последовательности номеров по структурным подразделениям, которые могут появляться, удаляться). Вот такой не подойдет: http://konstb.newmail.ru/interbase/gennum.htm ?
Re: Господа, презабавнейшая идея
Valery Gruzdev wrote: Вот именно что для каждой базы - персональный порт, а хочется имитировать наличие всех баз на одном стандартном сервере. ZeeBeDee ?
Re: Кто-то портит GDS32
Евгений Виноградный wrote: Не Vista/7 случаем? Клиента с повышенными правами под админом копировали в system32? Чур меня :-) Нее, у нас XP и кое-где 98я
Версия сервера
Забавно, что при обращении к FB 1.5.5 возвращается версия WI-V6.3.5.4926 а к FB 2.5 - WI-V6.3.1.26158 Билд увеличился, а минорная версия - уменьшилась :)))
Re: Кто-то портит GDS32
Konstantin R. Beliaev wrote: все заработало, спасибо :) Оказывается, не все :( На Win98 не заработало. Там еще какие-то библиотеки надо ставить?
Re: Кто-то портит GDS32
Konstantin R. Beliaev wrote: Никто не сталкивался с такой ситуацией: сервер лежит в каталоге C:\FB25, fbclient.dll скопирован в gds32.dll Прописываю в IBE работать через библиотеку C:\FB25\bin\gds32.dll - все работает, копирую в system32 и правлю путь в IBE - не работает, пишет: Client Library is missing or invalid. копирую из SYSTEM32 в C:\---\gds32.dll и опять правлю путь в IBE - не работает с тем же сообщением :(( Проявляется не на всех машинах, подозрение на вирус-антивирус проверяется... Еще странность: проявляется только на gds32.dll от FB 2.5.1, на версии от 2.1 все работает нормально. Теряюсь в догадках... :(
Re: Кто-то портит GDS32
Dmitry Yemanov wrote: Похоже с рантаймами у тебя косяки. Снапшоты (включая 2.5.1) собирается чуток другой версией MSVC и хотят другую версию msvcr80. Нужный рантайм идет в комплекте, поэтому из C:\FB25\bin\ все грузится. А в системе его нет, поэтому из %system% не грузится. Скопировал msvcp80.dll msvcr80.dll из BIN в SYSTEM32 - не помогло :( При попытке добавить в SYSTEM32 Microsoft.VC80.CRT.manifest выдает сообщение: --- Microsoft Visual C++ Runtime Library --- Runtime Error! Program: C:\Do... R6034 An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information. Чего я не доделал? WinXPPro SP3
Re: Переход 2.5 - 2.1
Vlad Khorsun wrote: На SQL.RU сказали, что там увеличена длина имен security class'ов, Эту чушь там не говорили, ибо это чушь Сорри, напутал (посыпая голову пеплом)
Re: Переход 2.5 - 2.1
Vlad Khorsun wrote: До 2.5 имена классов безопасности для таблиц формировались как SQL$table, есс-но из имени таблицы бралось 27 символов. Поэтому была возможна ситуация, когда для 2-х таблиц с одинаковым префиксом в =27 символов использовался один и тот же класс безопасности, и гранты перемешивались. В 2.5 (ODS 11.2) имена классов безопасности больше не используют этот метод именования и не связаны с именами таблиц. Но, как позже выяснилось, движки до 2.5 проверяют соответствие имени классов безопасности имени таблицы, отсюда проблемы с даунгрейдом при ресторе. Влад, а можно тогда методику даунгрейда описать? А лучше скриптик подготовить ;) А то на большой системе все не отследишь, и после перехода вероятна ситуация, когда что-то не заработает и требуется откат обратно, а его нету :(
Re: Кто-то портит GDS32
Dmitry Yemanov wrote: В %system% нельзя тупо копировать рантайм, только ставить редистом. Возьми тут: http://www.ibprovider.com/download/crt/vs2005_SP1_8_0_50727_4053/vcredist_x86__8_0_50727_4053.exe Тут его нету :( Нашел поиском по сети, все заработало, спасибо :)
Re: Переход 2.5 - 2.1
Vlad Khorsun wrote: Так тебе же дали всё ? Или оно не рабочее ? Я ж написал, что не проверял :) А ты не подтвердил и не опроверг ;) Возможность даунгрейда проверяют *до* перехода, а не когда петух клюнет. И чем больше система, тем тщательнее проверяют... Это понятно, просто стандартная процедура отката всегда работала, и упоминание в релиз-нотах про security class ну никак не проассоциировалось с невозможностью оного в данном случае.
Кто-то портит GDS32
Никто не сталкивался с такой ситуацией: сервер лежит в каталоге C:\FB25, fbclient.dll скопирован в gds32.dll Прописываю в IBE работать через библиотеку C:\FB25\bin\gds32.dll - все работает, копирую в system32 и правлю путь в IBE - не работает, пишет: Client Library is missing or invalid. копирую из SYSTEM32 в C:\---\gds32.dll и опять правлю путь в IBE - не работает с тем же сообщением :(( Проявляется не на всех машинах, подозрение на вирус-антивирус проверяется...
Re: Переход 2.5 - 2.1
Dmitry Sinchilin wrote: Привет, все! Раньше можно было используя разные версии gbak сделать downgrade для базы. Сейчас не получается этого сделать для 2.5 - 2.1 база под 2.5, делаю бекап с помощью gbak2.1, потом с этой же gbak2.1 restore под FB2.1, получаю gbak:restoring privilege for user SYSDBA gbak: ERROR:action cancelled by trigger (3) to preserve data integrity gbak: ERROR:table/procedure has non-SQL security class defined тоже самое с gbak2.5 может можно что-нибудь сделать? Не надо меня спрашивать зачем. Просто: можно ли downgrade с 2.5? Искал ответ на тот же вопрос из-за странных зависаний 2.5 На SQL.RU сказали, что там увеличена длина имен security class'ов, поэтому на 2.1 оно не хочет ресториться. Дали скрипт, который вроде бы исправляет проблему (см. аттач): 1. Выполнение в IBEScript (можно и в IBExpert) скрипта из вложения для восстановления имен security class'ов 2. Бэкап по tcp при помощи gbak.exe от версии FB 2.1 (формат бэкапа 2.5 для рестора на версии 2.1 не подходит) 3. Рестор на версии FB 2.1. Честно скажу: сам не пробовал, мне помог переход на последний снапшот. Так что сначала потренируйся на копии :) _restore_25_to_21.rar Description: Binary data
!! 2.5: обламывается рестор !!
На последнем снапшоте рестор обламывается с сообщением: gbak:restoring SQL role: RDB$ADMIN gbak: ERROR:attempt to store duplicate value (visible to active transactions) in unique index RDB$INDEX_39 Хотя я вообще роли не использую!!! И в таблице RDB$ROLES единственная запись: RDB$ADMIN
Re: !! 2.5: обламывается рестор !!
Dmitry Yemanov wrote: 20.01.2011 14:56, Konstantin R. Beliaev пишет: На последнем снапшоте рестор обламывается с сообщением: gbak: restoring SQL role: RDB$ADMIN gbak: ERROR:attempt to store duplicate value (visible to active transactions) in unique index RDB$INDEX_39 Ты бекап базы от 2.5 (ODS 11.2) сделал gbak-ом от 2.1 (или еще раньше), только в этом случае такое вылазит. Хмм... возможно, щас проверю. Но это по любому бага: пытаться вставить роль, не проверяя, а нет ли ее там уже.
Re: Странные обрывы соединения
Oleg Matveyev wrote: без ключа он не работает :-) тупо TCP-туннель пробрасывает и все, чтобы коннект работал. пишет ли при этом лог - непомню, скорее нет. Ну, тогда понятно, почему был пустой лог. Насчет обрывов: админы признались, что перепрошили биос на матери, после этого начала глючить бортовая сетевуха. Поставили слотовую - обрывы исчезли.
Re: Странные обрывы соединения
Oleg Matveyev wrote: KeepAliveTime = 12 KeepAliveInterval = 1000 MaxDataRetries - нету такого TcpMaxDataRetransmissions = 10 подитожим. на сервере, где стоит FB FBScanner, и _так_ настроен Keep Alive, через 125 секунд после выдергивания сетевого шнура у клиента - никакой реакции в firebird.log и FBScanner.log ? 125 секунд я не ждал, я жал кнопу в программе - на сервер уходил запрос, который обламывался и сообщал мне об обрыве связи. В ФИБах включена опция восстановления связи при обрыве - после втыкания шнура она срабатывает и восстанавливает соединение. Но насколько я понимаю, это - уже другое соединение с другим процессом классика, разве нет? А предыдущее должно спокойно умереть с отметками в логах. Или я ошибаюсь, и восстанавливается именно предыдущее соединение?
Re: Странные обрывы соединения
Oleg Matveyev wrote: Если же при вытащенном шнуре клиент попробует обратиться к серверу FB, то обрыв заметит fbclient.dll, выйдет ошибка Enable to complete network request to host ... и после уже fib-ы будут создавать новое соединение. Далее. Сервер вытаскивания пачкорда из клиентской машины не заметит до тех пор, пока не попробует что-то отправить клиенту (например. dummy packet), или пока не сработает keepalive на самом сервере. И только после этого закроет этот коннект с записью в firebird.log Что при этом было на сервере - FB или FBScanner - неважно. Они оба реагируют на закрытие сокета самой ОС. Ну, так это самое и происходит: Enable to complete network request..., потом переподключение. На сервере появляется второй процесс. Через несколько минут птица обнаруживает потерю коннекта и гасит первый процесс. У меня два сервера. На одном появляется запись в FBScanner.log, на другом - нет :(( Правда, другой - это тот, где слетела регистрация FBScanner. В логах птицы нет записей ни там, ни там.
Re: Подвисает 2.5 :(((
Dmitry Yemanov wrote: Если падает на препаре, то воспроизведется. А так оно и есть, скорее всего. Да, воспроизводится. Причем на 2.5.0 работает нормально. Бэкап 300 метров в архиве, куда слать?
Re: Подвисает 2.5 :(((
Dmitry Yemanov wrote: Это вряд ли. А вот снапшоты 2.5.1 - это без месяца релиз. И подобные подвисания как минимум двух видов там правились. Firebird-2.5.1.26158-0_Win32 рвется соединение на вот таком запросе: SELECT ws.priceoutcurr, SUM((st.in_store+st.reserved+st.in_assemble)*ws.priceout) FROM wares ws, store st, category ct WHERE ws.complex='F' and ws.warenum = st.warenum and ws.category=ct.num and ct.isservice 'T' /*** если исключить вот этот подзапрос - все нормально / and (st.num not in ( select sn.num from filter_table_details ftd, storenames sn where ftd.ft_id=14 and ftd.key1=sn.num )) /***/ group by ws.priceoutcurr
Re: Подвисает 2.5 :(((
Dmitry Yemanov wrote: А база где? А база размером в гиг. Если на только метаданных воспроизведется - пришлю. Там проблема именно в NOT IN, переписал через not exists - заработало.
Странные обрывы со единения
Всех с Новым годом :) Что-то странное у нас происходит. Клиенты жалуются на обрывы связи с птицей: Enable to complete network request to host ... Error reading data from the connection. Однако ни в логах птицы, ни в логах FBScaner ничего подобного не наблюдается. Например, за вчерашний день в логах нет ВООБЩЕ никаких сообщений об ошибках! Где копать?
Re: Странные обрывы с оединения
Провел эксперимент с выдергиванием сетевого шнура: клиент потерю обнаружил, но в логах птицы ничего не появилось :( Так и должно быть?
Re: Странные обрывы с оединения
Oleg Matveyev wrote: шнур между клиентским компом и коммутатором? угу какой период срабатывания у Keep Alive - успел сработать? А где глянуть, напомни? Птицевый клиент потерю связи обнаружил, и потом почему-то сетевой коннект долго не восстанавливался.
Подвисает 2.5 :(((
Зависает Firebird-2.5.0.26074-0_Win32 в режиме классик Один из процессов уходит в 100% загрузку процессора, при этом остальные могут подключиться к базе, но любой запрос, в том числе из таблиц мониторинга, уходит в бесконечное ожидание. Убиение загруженного процесса все возвращает в норму на какое-то время. В аттаче - результат программы fb_lock_print.exe locks.rar Description: Binary data
Re: Странные обрывы с оединения
Oleg Matveyev wrote: на сервере. который должен заметить пропадание клиента KeepAliveTime = 12 KeepAliveInterval = 1000 MaxDataRetries - нету такого TcpMaxDataRetransmissions = 10
Re: Подвисает 2.5 :(((
Konstantin R. Beliaev wrote: Зависает Firebird-2.5.0.26074-0_Win32 в режиме классик Один из процессов уходит в 100% загрузку процессора, при этом остальные могут подключиться к базе, но любой запрос, в том числе из таблиц мониторинга, уходит в бесконечное ожидание. Убиение загруженного процесса все возвращает в норму на какое-то время. В аттаче - результат программы fb_lock_print.exe Проблема еще в том, что откатиться на 2.1 не получается из-за gbak: ERROR:action cancelled by trigger (3) to preserve data integrity gbak: ERROR:table/procedure has non-SQL security class defined Может, есть какой способ?
Re: Подвисает 2.5 :(((
Alexey Kovyazin wrote: Попробуй перейти на последний снэпшот 2.5.1. Попробую. Проблема только в том, что это боевой сервер :((( И зависание довольно случайное и непонятное. Т.е. исправится или нет - будет ясно только когда подключатся юзеры...
Re: Подвисает 2.5 :(((
Konstantin R. Beliaev wrote: Alexey Kovyazin wrote: Попробуй перейти на последний снэпшот 2.5.1. Попробую. Проблема только в том, что это боевой сервер :((( И зависание довольно случайное и непонятное. Т.е. исправится или нет - будет ясно только когда подключатся юзеры... Хмм... Пока возился - обнаружил неперекомпиленный before delete триггер, в котором упоминались NEW значения. Может, в нем было дело? Перекомпилил. Завтра посмотрим
Re: FBScaner, FIB+ и IBExpert (was FB 1.5.6 classic. Виснет ресто р)
Dmitry Yemanov wrote: Какие такие проблемы при бекапе? Указывай порт везде, где указываешь хост, вот и все. Т.е. в твоем случае - и для сервиса, и для базы. А как это должно выглядеть в параметрах вызова API ? Можно пример заполнения?
Re: FBScaner, FIB+ и IBExpert (was FB 1.5.6 classic. Виснет ресто р)
Dmitry Yemanov wrote: Также, как и сейчас выглядит, только дописать к имени хоста через слеш номер порта. Хмм... Посмотрел, как было. Получалась такая цепочка вызовов: - вызов сервиса на 3050 - коннект к FBScaner по 3050 - перенаправление на FB 3051 - старт GBAK через сервисы - коннект GBAK по 3050 к FBScaner (*) - перенаправление на FB 3051 (*) ..где-то здесь зависон.. Если строчки (*) заменить на - коннект GBAK по 3051 к FB то все работает. Значит, проблема где-то в FBScaner...
Re: FBScaner, FIB+ и IBExpert (was FB 1.5.6 classic. Виснет ресто р)
Dmitry Yemanov wrote: Версии новее во-первых поддерживают локальный протокол, а во-вторых он для сервисов все равно не нужен, т.к. они запускаются потоками и подключаются к базе через embedded-доступ. Так что начиная с 2.0 Влад правильно говорит. А 2.5 вообще обломит с таким редиректом. Интересно, а как тогда заполнять эти парамеры при вызове сервиса (из программы, а не для GBAK), если 1.5 требует указания хоста, а 2.5 его наоборот, запрещает? И остался еще любопытный вопрос, который я кажется уже поднимал: поскольку порт можно указать либо при запуске ключом -p 3051, либо в conf файле, может возникнуть ситуация, когда эти порты разные. А т.к. все коннекты _с_ этого компа берут порт по умолчанию из conf (как мне здесь объясняли), то как поведет себя сервер в этой ситуации? У меня получилось что: если поставить в conf 3051, то прога с этого компа пытается подключиться к FB на другом компе по 3051, а не по 3050, если же поставить в conf 3050, а сервис запускать с ключом -p 3051, то возникают проблемы про бэкапе. Как быть?
Re: FB 1.5.6 classic. Виснет рест ор :((
Dmitry Yemanov wrote: Через gbak -se тоже виснет? Коннект к сервисам локальный или TCP? Да, виснет в том же месте. gbak -с -se server:service_mgr f:\base\3.fbk server:f:\base\4.fdb -o -v -y f:\base\restore.res PS Вообще говоря, синтаксис с сервисами весьма неочевиден :(( Где-то с двадцатой попытки до меня дошло, что лог тоже создается на сервере, что надо указывать server:service_mgr и повторить server в пути к базе :(( PPS У меня на сервере стоят рядом 1.5 и 2.5, причем в SYSTEM32 лежит gds32.dll от 2.5 - с этим может быть связано?
FBScaner, FIB+ и IBExpert (was FB 1. 5.6 classic. Виснет рестор)
Konstantin R. Beliaev wrote: gbak -с -se server:service_mgr f:\base\3.fbk server:f:\base\4.fdb -o -v -y f:\base\restore.res Тааак, отмена - проблема не в птице, а в FBScanner. У меня птица висит на порту 3051. Команды gbak -с -se server/3051:service_mgr f:\base\3.fbk server/3051:f:\base\4.fdb -o -v -y c:\restore.res и gbak -с -se server:service_mgr f:\base\3.fbk server/3051:f:\base\4.fdb -o -v -y c:\restore.res проходят нормально, а gbak -с -se server/3051:service_mgr f:\base\3.fbk server:f:\base\4.fdb -o -v -y c:\restore.res - виснет в упомянутой точке Интересно, как IBExpert и ФИБы парсят строку server/3051:f:\base\4.fdb, так что получается не то, что надо...
Re: FBScaner, FIB+ и IBExpert (was FB 1.5.6 classic. Виснет ресто р)
Все интереснее и интереснее... Обнаружилось, что в firebird.conf не указан порт 3051 (он указан при старте сервиса: C:\FB\bin\fb_inet_server.exe -s -p 3051 Поправил - стало ресториться нормально. Как-то оно не совсем логично: получается, что при запуске gbak через сервисы порт запущенного сервера игнорируется, и берется из conf ?
Re: FBScaner, FIB+ и IBExpert (was FB 1.5.6 classic. Виснет ресто р)
Vlad Khorsun wrote: У тебя строка gbak'а включает имя хоста в имени БД (кто каке научил?): -se host1:service_mgr ... host2:db_path Хм, а озвучьте плиз _правильный_ синтаксис этой команды, поскольку то, что получилось у меня - был единственный рабочий вариант. Команда gbak -r -se server:service_mgr f:\base\3.fbk f:\base\4.fdb -o -v -y c:\restore.res пишет в лог: gbak: opened file f:\base\3.fbk gbak: transportable backup -- data in XDR format gbak: backup file is compressed gbak: ERROR: unavailable database gbak: ERROR: failed to create database f:\base\4.fdb gbak: Exiting before completion due to errors
FB 1.5.6 classic. Виснет ресто р :((
Я понимаю, что 1.5 уже не поддерживается, но жить как-то надо... Вопрос такой: рестор через gbak проходит на ура, а если попытаться тот же файл отресторить через сервисы (при помощи IBExpert, или компонентов FIB+), то все намертво подвисает :(( На 1.5.5 вис в точке gbak: restoring domain RDB$3408 обновился до 1.5.6 - стал виснуть на сотню строк дальше: gbak: restoring table EMPLOYEE gbak: restoring column WAGE_RATE gbak: restoring column FIRSTNAME gbak: restoring column SECONDNAME gbak: restoring column THIRDNAME gbak: restoring column INITIALS gbak: restoring column INCOME gbak: В чем может быть дело? никто не сталкивался? В бэкапе только метаданные.
Re: Out of memory...
Igor Zakhrebetkov wrote: а что-то типа substring(cast(Config as varchar(1)) from 1 for 1024) не поможет? Хмм... помогло, спасибо!!!
Re: Переход на 2.5
Kochmin Alexandr wrote: нужно быть вообще безбашенным программистом чтоб писать такой код. Вот и механизм пусть пишет такой программист сам ;) Почему же безбашенным? Навскидку: UPDATE T SET A = (select sum(..) from X), B = A + (select sum(..) from Y) C = (case when B 0 then (select ... from Z) else (select ... from ZZ) end) это то, что родилось за 5 минут :)) Почему я подумал о механизме? Для перехода на диалект 3 есть специальный диалект 2, который генерит много предупреждений. Вот и пришло в голову, что и тут мог бы быть ключик GBAK, выдающий всякие предупреждения о некорректном коде.
Re: Out of memory...
Dmitry Yemanov wrote: Если ФБ 2.5, то курить MON$MEMORY_USAGE. 2.1, хотя могу попробовать запустить под 2.5 А чем это поможет? Такое ощущение, что внутренние вызовы хранимок едят память.
Re: Out of memory...
Konstantin R. Beliaev wrote: Dmitry Yemanov wrote: Если ФБ 2.5, то курить MON$MEMORY_USAGE. 2.1, хотя могу попробовать запустить под 2.5 А чем это поможет? Такое ощущение, что внутренние вызовы хранимок едят память. На 2.5 не воспроизводится
Re: Out of memory...
Sergey Mereutsa wrote: Смотри в сторону временных блобов. Хотя вроде фиксили, так что не уверен. Да, есть в вызываемой хранимке чтение из блоба в строку: select substring(Config from 1 for 1024) from Config where Name='columnsmap' into :S; которая потом парсится через substring. Как это обойти? Хранимки только читающие.
Out of memory...
Внутри хранимки выполняется цикл (выбирается по условию список товаров, к которым другими хранимками добавляются еще реквизиты): FOR execute statement 'select w.Dashcode, w.WareNum, l.Pricecode from wares w join pricelevel l on (w.Printit = l.Pricecode) where 1=1 '||where_str INTO :Dashcode, :WN, :Pricecode DO begin FOR select n.Num, g.Price, g.Region_Id from Get_Wares_Prices(:WN, :Priceout_Curr) g left join StoreNames n on (g.REGION_ID = n.Pricecolumn_Int) where g.Price is not null and (n.Closed=0 or n.Closed is null) INTO :Storenum, :Price, :Region_Id DO begin if (:Region_Id :Old_Region_Id) then -- ищем, только если код сменился select f.PRICENAME, f.Priceid from Pricetypes_Full f /* */ where f.Priceid = :Region_Id into :Region_Name, :Old_Region_Id; --end if suspend; end end Проблема в том, что если верхний запрос возвращает слишком много записей, то в конце концов возникает нехватка памяти на вызове хранимки Pricetypes_Full, и процесс fb_inet_server занимает всю доступную память. Commit приводит потребление памяти в норму. Что происходит и как это побороть?
Переход 2.1 - 2.5
Допустимо ли при переходе с 2.1 на 2.5 не делать бэкап-рестор?
Re: Переход 2.1 - 2.5
Ovchinnikov Vasily wrote: Допустимо. Если срастется (см. ниже причины несрастания), то работать будет. Но B/R рекомендуется сделать. Ибо меняется ODS. К тому же кодировку метаданных надо будет скорее всего исправить, так что без B/R будет не обойтись. См. misc/upgrade/metadata/metadata_charset.txt в каталоге, куда поставил FB 2.5. На предмет нового параметра запуска gbak: -FIX_FSS_METADATA charset Если дело только в кодировке метаданных, то я с ней уже тра... возился при переходе с 1.5 на 2.1 :-) Хотя параметр в gbak - это интересно :)
Re: Переход 2.1 - 2.5
-FIX_FSS_METADATA charset Я правильно понимаю, что этот параметр можно использовать только один раз, и что повторное его использование чревато порчей текстовых полей?
Re: Переход 2.1 - 2.5
Oleg Matveyev wrote: -FIX_FSS_METADATA charset Я правильно понимаю, что этот параметр можно использовать только один раз, и что повторное его использование чревато порчей текстовых полей? а как ты сумеешь использовать ключ дважды при restore ? Запросто: backup - restore -FIX_FSS_METADATA win1251 - - backup - restore -FIX_FSS_METADATA win1251 - - и т.д. :)))
[OFF/2] Странная ошибка
Я понимаю, что это стук в подвале, но может кто сталкивался... Есть тестовое приложение, использующее FIB. На одной из машин, если запустить это приложения из Delphi 7, то при завершении приложения возникает Access Violation в NTDLL.dll (функция strchr). AV возникает не каждый раз, а только если открывалась форма, использующая EventAlerter. Если запустить скомпилированное приложение без среды, или скомпилировать и запустить на соседней машине - все нормально, ошибок нет. Трассировка указывает на finalization модуля StrUtil.pas ФИБ-ов. Еще странность: на проблемной машине в дополнение к основному треду возникает тред ws2help.dll, на других машинах его нет. Библиотеки ws2help.dll на машинах одинаковы, ось везде Win XP. Как побороть? Какие идеи?
Проблемка с сообще ниями об ошибках
При переходе на 2.1 стал получать подобные сообщения: I/O error for file @2. Как сделать, чтоб вместо @2 было нормальное имя? Вероятно какие-то либы остались от 1.5, но не пойму какие. Намекните, плииз...
Re: Проблемка с сообщ ениями об ошибках
Alex Cherednichenko wrote: старый клиент и/или firebird.msg А без firebird.msg нельзя? Вроде на 1.5 без него все прекрасно работало.
FB 1.5 - 2.1
Допустимо ли повторное выполнение команды обновления метаданных? select * from rdb$fix_metadata('WIN1251'); А то у меня первый запуск завершился ошибкой из-за наличия параллельного коннекта к базе :-(
Re: FB 1.5 - 2.1
Dmitry Yemanov wrote: 24.09.2010 12:04, Konstantin R. Beliaev пишет: Допустимо ли повторное выполнение команды обновления метаданных? select * from rdb$fix_metadata('WIN1251'); А то у меня первый запуск завершился ошибкой из-за наличия параллельного коннекта к базе :-( Если ты зароллбечился после ошибки, то повторяй снова. Это же обычный SQL. К сожалению, это был скрипт, в котором стоял коммит :-( Как изменить хранимку, чтобы апдейтились только структуры, в которых не установился чарсет?
[OFF] Укуренные в дым (остатки от прошлой п ятницы)
Вспоминая одноименный фильм, родилась идея: надо засадить все торфяники коноплей. Если не горит - будет пенька, горит - народ будет ходить веселый :-)) Надо собрать подписи и устроить референдум - кто за? ;)
Re: Странное поведени е птицы
Vlad Khorsun wrote: Кол-во бекверсий и длины их цепочек. Это вот это? Average version length: 61.82, total versions: 40104, max versions: 1 В нескольких таблицах есть подобное количество версий, но max versions больше 1 не поднимается. no reserve зачем поставил ? Я его не ставил :- Вот строчка тестового рестора из скрипта в отдельный каталог: gbak %BFILE% %RFILE% -replace_database -o -v -y %RLOG% Время от времени я руками подменяю рабочую базу отресторенной. Разве что когда-то давно поставил и он запоминается в файле бэкапа? Как его теперь отключить-то?
Переполнение тригг ера?
Есть у меня лог-таблица для репликатора, и вчера я обнаружил, что порядковые номера записей, которые до этого были в районе 78292294 стали вдруг 0. Номера генерятся триггером: CREATE OR ALTER TRIGGER REP$LOGS_BI FOR REP$LOGS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.LOG_ID IS NULL) THEN NEW.LOG_ID = GEN_ID(GEN_REP$LOGS_ID,1); END Решив, что произошло переполнение - сбросил генератор в 1, однако ничего не изменилось: номера по прежнему равны нулю :(( Как исправить? FB 2.1, 1й диалект, Поле LOG_ID типа INTEGER
Re: Переполнение триг гера?
Konstantin R. Beliaev wrote: Подумал: не изменил ли кто домен? Нет, вроде все как есть. Такое ощущение, что триггер просто выключился, и присваивается дефолтное значение. Все-таки дело было в домене :-((( Убрал default - заработало. Хотя я не понял: домен поменялся недели три назад, а работать перестало буквально вчера. Что за нафиг?
Re: Переполнение триг гера?
Alex Cherednichenko wrote: Кэш метаданных. В классике? При ежедневном отключении ВСЕХ юзеров Даже больше: между этими событиями был бэкап-рестор с заменой рабочей базы.
Re: Странное поведени е птицы
Vlad Khorsun wrote: gstat -r при намёках на тормоза И на что там смотреть? Sweep у меня запускается ночью по расписанию. Database header page information: Flags 0 Checksum12345 Generation 14420651 Page size 8192 ODS version 11.1 Oldest transaction 14303512 Oldest active 14303513 Oldest snapshot 14303513 Next transaction14303515 Bumped transaction 1 Sequence number 0 Next attachment ID 117057 Implementation ID 16 Shadow count0 Page buffers200 Next header page0 Database dialect1 Creation date Apr 5, 2010 23:57:07 Attributes force write, no reserve Variable header data: Sweep interval: 0 *END*
Пятница
Парень на заднем плане :-) http://www.youtube.com/watch?v=4Ha1XZSqsyc -- Subscription settings: http://groups.google.com/group/ru-firebird/subscribe?hl=ru
Re: Странный бэкап-ло г
Khorsun Vlad wrote: Он не от той версии Точно! У меня там 2 сервера стоит: 1.5 и 2.1, и полуторка при установке прописала свой путь в реестр. Странно, что 2.1 это обнаружила только вчера :)) -- Subscription settings: http://groups.google.com/group/ru-firebird/subscribe?hl=ru
Re: Table RDB$DATABASE unknown
Кузнецов Евгений wrote: Стоп, как только Вы выдаете явно права кому-то на RDB$RELATIONS, все остальные их теряют - см. древнюю статью http://www.ibase.ru/devinfo/sysprot.htm А вот почему после revoke эффект сохраняется - не в курсе. Действительно, интересно. Вопрос к птицеводам? И мое подозрение: что бэкап-рестор сбрасывает все права на системные таблицы - правильно? Classic + видимость метаданных? Не, ну я переподключался в натуре :-) Как раз на коннекте он и ругался, что RDB$DATABASE не существует. Можно прогнать скрипт из статьи и выдать права PUBLIC на SELECT. Только его модифицировать для FB вроде бы надо. И на последних версиях его не пробовал, только на полуторке. Ну, на эксперте можно програть ибе-блок: execute ibeblock as begin for select distinct p.Rdb$Relation_Name from Rdb$relations p where p.Rdb$Relation_Name starting with 'RDB$' into :TMP DO begin CMD = 'GRANT SELECT ON '|| :TMP ||' TO PUBLIC;'; execute statement :CMD; end commit; end -- Subscription settings: http://groups.google.com/group/ru-firebird/subscribe?hl=ru
Re: Table RDB$DATABASE unknown
Кузнецов Евгений wrote: Отобрать у PUBLIC права на чтение RDB$RELATIONS вполне достаточно (не знаю, как в последних версиях, а 1.x, 2.0.x работают с системными таблицами с правами текущего пользователя). Опять пользователи порезвились :(( Стали играться с тестовой базой, получили вот что: 1) есть нормальный доступ к базе - на RDB$RELATIONS никаких грантов не наблюдается 2) даем любому юзеру грант на RDB$RELATIONS, и тут же - revoke у этого юзера ВСЕ! досуп к базе пропал для всех кроме SYSDBA! Куда копать чтобы исправить? -- Subscription settings: http://groups.google.com/group/ru-firebird/subscribe?hl=ru
Re: Утилита автоматич еской конвертации баз в формат ФБ 2.5
Andrei wrote: отослал экзешник на имэйл из профиля. Спасибо, получил :-) У нас просто 50 объектов, и надо их все с 1.5 поднять хотя бы до 2.1 И автоматизация тут весьма кстати :) -- To unsubscribe, reply using remove me as the subject.
Re: Подвисает птица : ((
Oleg Matveyev wrote: Еще последний FBScanner стоит, но не думаю, что в нем дело: процессы птицы не умирают даже после разрыва соединения. попробуй пустить все коннекты на прямой порт, и поработать так. У меня роботы смотрят на прямой порт, а юзеры - на сканерный, поэтому просто так перескочить не получится. Да и не думаю, что в сканере дело.
Re: Подвисает птица : ((
Oleg Matveyev wrote: а в firebird.log есть что-то вроде 10038 ? 10038 нет, есть 10054 -- To unsubscribe, reply using remove me as the subject.
Re: Подвисает птица : ((
Khorsun Vlad wrote: Проверь. Ибо эта зараза как раз блокирует CS. Если найдёшь, добавь fb_inet_server в список исключений IMON. Проверил: нету его :))) -- To unsubscribe, reply using remove me as the subject.
Re: Утилита автоматич еской конвертации баз в формат ФБ 2.5
Andrei wrote: Берите, пользуйтесь: http://gsbelarus.com/gs/fdbconvert/fdbconvert_rus.html А на конвертацию в формат 2.1 ее можно приспособить? ;)) -- To unsubscribe, reply using remove me as the subject.
Подвисает птица :( (
Уже второй раз за месяц виснет птица Firebird-2.1.3.18185-0_Win32 классик. Симптомы такие: пользователи подключаются, но ничего сделать не могут: не стартует ни одной транзакции, хотя Process Explorer показывает, что новые коннекты активно грузят проц: http://picasaweb.google.com/lh/photo/ShlnX9K3J_4D_r0fxw1ruA Спасает перезагрузка всего сервера. Что делать и как предотвратить? PS. Перед перезагрузкой снял fb_lock_print, если кому интересно. -- To unsubscribe, reply using remove me as the subject.
Re: Подвисает птица : ((
Khorsun Vlad wrote: Там не видно, что проц грузят именно новые коннекты. Я не говорю, что они его грузят на 100%, но они явно что-то активно делают, возможно цикл ожидания так выглядит? 1. Убедиться, что нет антивирусов, файрволлов и прочих перехватчиков TCP К сожалению, все это присутствует, и я не уверен, что можно убрать. 4. Если зависнет, найти process id зависшего процесса и убить его ватсоном : drwtsn32 -p process id И как его найти среди 80 процессов птицы? PS. Перед перезагрузкой снял fb_lock_print, если кому интересно. Выкладывай Куда? 37К -- To unsubscribe, reply using remove me as the subject.
Re: Подвисает птица : ((
Khorsun Vlad wrote: Вис наступает при наличии 63 коннектов ? Антивирус часом не NOD ? Насчет числа коннектов - не знаю, вроде бы и 70 видел в нормальной работе. Угу, ESET NOD32, хотя кажется наврал: не вижу я его процессов на сервере, видимо нет его там. Еще последний FBScanner стоит, но не думаю, что в нем дело: процессы птицы не умирают даже после разрыва соединения. 4. Если зависнет, найти process id зависшего процесса и убить его ватсоном : drwtsn32 -p process id И как его найти среди 80 процессов птицы? Коннекты, стартовавшие последними, PE показывает последними. Ага, т.е. с моей картинки - это любой из нижних процессов с IO Write Bytes = 116 ? ИМХО они все подвисшие. Можно мне мылом. Только расширение архива смени отправил на hvlad .. users.sourceforge.net -- To unsubscribe, reply using remove me as the subject.
RAID
Собираемся менять RAID на птице-сервере, ибо старый похоже дохнет. Кто с какими моделями (из последних) работал? Интересуют положительные и отрицательные впечатления.
Re: RAID
Sergey Mereutsa wrote: Тебю зеркало или 5-й? По традиции используем 5й, под виндой, так что проблемы дебиана волнуют не сильно :-)
Re: Проблема с получение м уникального номера доку мента
Vadim Mescheryakov wrote: Получается решение такое: Во временную таблицу (время жизни до конца транзакции) пишем Id созданных документов После завершения процедуры формирования в этой же транзакции выполняем update номера документа значением полученным из генератора, получается что единственный вариант пропуска номера – разрыв коннекта в промежутке между получением номеров их генератора и коммит. А зачем тут временная таблица? У документа 2 номера: внутренний IDint и внешний IDext (для юзера), при создании документа внешний номер остается пустым, если все нормально создалось, делаем update Document set IDext = GEN_ID(IDext_gen,1) where IDint = ...; Вороятность получить документ без внешнего номера - только в случае потери коннекта перед update. На этот случай можно на старте программы делать update Document set IDext = GEN_ID(IDext_gen,1) where IDext is null; Да! сохраненный документ с присвоенным IDext удалять нельзя - иначе опять дырка в нумерации. Как вариант: операцию присвоения номера документу вынести в отдельный бизнес-процесс, называемый регистрация документа или как-то так.
Re: RAID
Vadim Mescheryakov wrote: А тот что дохнет случаем не Intel RAID U41 или U42 ? Intel(R) RAID controller SASMF8I; Intel(R) RAID SAS controller AXX4SASMOD
BLOB в строку
Какие-то непонятки... Вроде на 1.5 функция SUBSTRING должна преобразовывать текстовый BLOB в VARCHAR, однако это срабатывает для блобов в созданных мной таблицах, и не работает в системных. Вот такой запрос выполняется нормально: select c.Num, c.Name, substring(c.Requisits from 1 for 1000) from client с а вот такой: SELECT substring(rf.RDB$DESCRIPTION from 1 for 1000), rf.RDB$FIELD_NAME FROM RDB$RELATIONS r, RDB$RELATION_FIELDS rf, RDB$FIELDS f, RDB$TYPES rt WHERE (r.RDB$RELATION_NAME = rf.RDB$RELATION_NAME) and (rf.RDB$FIELD_SOURCE =f.RDB$FIELD_NAME) and (f.RDB$FIELD_TYPE = rt.RDB$TYPE) and ((r.RDB$SYSTEM_FLAG = 0) and (r.RDB$VIEW_SOURCE IS NULL) and (rt.RDB$FIELD_NAME = 'RDB$FIELD_TYPE')) and (r.RDB$RELATION_NAME='EMPGROUP') дает conversion error from string BLOB. Разница в объявлении полей вроде только в Charset: у меня c.Requisits типа WIN1251, а в RDB$RELATION_FIELDS -- UNICODE_FSS Как это обойти? Чарсет коннекта - WIN1251
Re: BLOB в строку
Alex Cherednichenko wrote: Попробуй напрямую заюзать UDF Blob2String(). Не нашел ее среди стандартных, есть только обратная: string2blob в fbudf.dll :((
Re: BLOB в строку
Alex Cherednichenko wrote: Вродь тут народ брал: ftp://ftp.adhoc-data.de/FreeAdhocUDF/ Не хотелось бы использовать то, что не идет с птицей: слишком по многим серверам надо раскладывать...
Table RDB$DATABASE unknown
Вот скажите, что такое можно сделать с грантами, чтоб сервер не находил RDB$DATABASE? :-) Сосед тут что-то крутил в ИБЕ (заводил нового юзера и давал ему гранты) и вдруг при попытке коннекта к этой базе под любым юзером кроме SYSDBA получил вышеназванное сообщение. Бэкап-рестор помог, но что это было??? ЧТО он такого мог сделать? Сам не признается :-))
CHECK у домена
Есть IBE-шный скрипт, который выполняет команду: ALTER DOMAIN QQQ ADD CHECK (VALUE in (''S'',''M'')); вопрос: каким запросом к системным таблицам можно проверить, что CHECK уже установлен у домена, чтоб пропустить этот вызов?
Re: CHECK у домена
dennis redozubov wrote: RDB$FIELDS.RDB$VALIDATION_SOURCE Спасибо.Нашел :)
Re: Переход на FB 2.1
Dmitry Yemanov wrote: Тогда и дорога назад открыта... Я бы не дал 100% гарантию. В некоторых случаях после перекомпиляции для того же SQL в 2.х может быть сгенерен новый BLR, который на 1.5 уже не отресторится. Ситуация редкая, но возможная. Меня больше волновала перекодировка процедур и триггеров в UTF. В целом ясно - надо пробовать...
Re: Совместное использование BDE и FIBPlus
Alex Cherednichenko wrote: Константин, а чё это твой сайт пытается мне что-то установить в огнелиса? Огнелис блокирует попытку установки некоего софта. Страница у внешнего хостера, давно ее не правил, вероятно кто-то их взломал и что-то прицепил к страничке :-((( Сейчас не могу туда войти: не принимает пароль :-(((
Переход на FB 2.1
А я правильно подозреваю, что после рестора базы от FB 1.5 на FB 2.1 и апдейта метаданных с помощью metadata_charset_create.sql , обратного пути уже не будет?
Re: Переход на FB 2.1
Sergey Mereutsa wrote: А что, скрипты кто-то отменял? Скрипты? Ты предлагаешь мета- и данные из 20-гиговой базы вылить в скрипт??? Или что-то еще? Я имел в виду, что бэкап при помощи FB 1.5 и рестор уже не поможет, как раньше, так?
Re: Совместное использование BDE и FIBPlus
Ну, вспоминая мой переезд c БДЕ, все должно работать. Правда это было еще на Delphi-3... :-) http://konstb.newmail.ru/interbase/hints.html#oneconnect
Ошибка: record disappeared (186)
Обнаружил в логе ошибку: internal gds software consistency check (record disappeared (186)) ну, как лечить-то понятно: через b/r но откуда она взялась? Это уже второй такой случай, прошлый был несколько месяцев назад. Причем это тестовая база, которую юзают не очень активно Version: WI-V1.5.5.4926 Firebird 1.5
Re: Как правильно организовать работу.
Oleg Matveyev wrote: Если хочешь дожить до самой смерти, выгоняй всех из базы перед такими операциями. Как? Тем более при наличии на сервере зависших соедениений? как правило, на обрыв TCP коннекта реагируют все соединения (включая зависшие), и в полуторке тоже. не всегда мгновенно, но с очень большой вероятностью. Не, я порой встречаю зомбюков, иногда даже таких, что всю работу классика блокируют... Сюда писал, но видимо полуторку уже точить неинтересно... Единственно, против чего не устоит ни один зомбюк - это ребут сервера :-))) А если при этом еще и LAN-овский кабель выдернуть... ;-))
Re: Как правильно организовать работу.
PEAKTOP wrote: Ну, а когда клиентские приложения получают такое сообщение, то дружно все отваливаются. Изврат конечно, но пользовал его давно, еще с эпохи InterBase 6 до того момента, когда появился Firebird двойка. Сбоев ни разу не было, хотя теоретически способ вроде бы не надежный. Конечно ненадежный: мало ли в каком состоянии ползатель бросил приложение и пошел покурить...
Re: Как правильно использовать тест tpc-c?
Nikolay Ponomarenko wrote: А вот тогда, когда в конфе проскакивала ссылка и праглашение к потестить - кто-нить запускал его? Какие цифры у кого получались? Я где-то год назад пытался его юзать для тех же целей, и даже сюда результаты вроде постил, правда не довел до конца: планировалось сравнить несколько разных контроллеров, но админы меня обломали... :-( Насколько помню, по максимальная производительность получалась при минимально допустимых размерах всего: страйпа, кластера, страницы БД. Мне тогда ответили, что на этом тесте так и должно быть. По буферам только небольшой максимум наблюдался TPCC.rar Description: Binary data
Temporary directories
В firebird.conf сказано: # # Temporary directories # # Provide ';'-separated trees list, where temporary files are stored. # Relative paths are treated relative to RootDirectory entry # (see above). Default value is determined using FIREBIRD_TMP, # TEMP or TMP environment options. Once the first specified # directory has no available space, the engine will switch to the # next one, and so on. У меня стоит TempDirectories = d:\Temp; c:\Temp; f:\Temp и периодически (при особо больших запросах) я получаю таки сообщение, что на D:\TEMP отсутствует место. Видимо фраза the engine will switch to the next one не относится к одному большому файлу сортировки? FB 1.5 Или это поправлено в 2.х ?
Re: Как правильно организовать работу.
Oleg Matveyev wrote: оказалось знаешь что? своя UDF, которая делает cross-database запрос в другую БД через инет. У меня своих UDF нету, тем более таких :-) Там какой-то косяк есть в блокировщике полуторки, что лочится индекс, и все запросы, желающие этот индекс заюзать - курят в сторонке. Другие - работают. Встречается редко, примерно раз в год. Прибиваешь самого старого зомби - все остальные сами помирают. Прям как про графа Дракулу расказываю :-
Re: Temporary directories
Alex Cherednichenko wrote: А как ты себе представляешь _файл_ разбросанный по нескольким _логическим_ дискам? Также, как FB умеет разбрасывать базу по нескольким файлам ;- Конечно, это даст лишний оверхед, но иначе проблема с нехваткой места не решается: КАК птичка поймет, что следующий файл сортировки надо кидать в следующий по списку каталог ??? Ведь заранее она не знает размер файла. Ну, или если места не хватило - проверять свободное место в следующем каталоге и _целиком_ переносить файл сортировки туда.
Re: Temporary directories
Khorsun Vlad wrote: Только вот что там с этим в 1.5 - не помню и даже смотреть не хочу. Я понял :-) Пора переползать хотя бы на 2.0. Кроме Б/Р при таком переходе вроде ничего не требуется? А то на 2.1 мороки с переходом гораздо больше: надо метаданные конвертить, что в удаленных филиалах не так просто сделать без админа... :-( Аа, фак! там еще секюрити базу конвертить надо :-((( Тогда видимо сразу на 2.1, один черт инструкцию для чайников писать...