Quantcast
Channel: SQL.ru: Firebird, InterBase
Viewing all 1677 articles
Browse latest View live

Стратегия увеличения размера блока памяти под сортировку в ФБ3

$
0
0
Добрый день,

Вопрос такой, если серверу нужен большой блок под сортировку
(1-1.5 Гб), то как он будет выделяться?

1) Начиная с TempBlockSize и дальше равными приращениями размером
TempBlockSize?

2) Или начнет с TempBlockSize и будет каждый раз удваивать размер?

В нашей задаче такие выборки для группировки/сортировки не
редкость. Выделение по первой стратегии будет занимать много
времени -- тысяча изменений размера блока памяти для 1 Gb и
значения TempBlockSize по-умолчанию.

TempCacheLimit установлен в 32 Gb. Памяти на сервере хватает.

Скорость восстановления из архива

$
0
0
Каждый новичек сталкивался с этой проблемой. За почти 20 лет стольким сисадминам на предприятиях приходилось объяснять, и объяснять, и объяснять...

И все равно, медитируя в процессе пятичасового восстановления не самой большой
БД (52 Гб) на достаточно мощном сервере (20 физ ядер, 128 Гб, RAID 10 на 8 SSD дисках,
2 Гб энергонезависимой кэш памяти), удивляешься:

1) есть у нас теперь ФБ3
2) кэшпамять размером со всю БД
3) суперсервер спокойно позволят разным
конектам одновременно работать с данными, и читать, и править

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

1) чтение данных их кэша -- операция не блокирующая
2) сортировка в локальном блоке памяти нити вообще никого не касается
3) остается только запись страниц с индексом в кэш

итого, на 20 ядерной системе можно было бы ожидать 10-15 кратного
ускорения.

PS: я знаю про все методики. и про nbackup, и прокопирование файла БД
после отключения пользователей. Речь сейчас сугубо о скорости штатного
бэкапа.

no current record for fetch operation

$
0
0
После перехода с ФБ2.5 на ФБ3.0.1 появилась такая проблема:

автор
no current record for fetch operation; At trigger 'CHECK_91'
GDSCode = 335544348


Возникает при удалении записи.

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

Соединение с сервером базы данных FireBird

$
0
0
Народ,
кто подскажет как правильно установить соединение к базе данных Fiorebird из вне, то есть не из локально сети а через интернет?
Я использую строку соединения
gnConnHandle = SQLSTRINGCONNECT([DRIVER=Firebird/InterBase(r) driver;SERVER=192.168.1.5:3050;User=sysdba;PWD=p@$$w0rd;DBNAME=192.168.1.5:d:\new\FirebirdDB.gdb]) из локальной сети и все работает.
А как мне подключиться из вне? Попытка законнектиться к базе из вне зная наш IP ругается что не может законектиться.
gnConnHandle = SQLSTRINGCONNECT([DRIVER=Firebird/InterBase(r) driver;SERVER=ххх.ххх.ххх.ххх:3050;User=sysdba;PWD=p@$$w0rd;DBNAME=192.168.1.5:d:\new\FirebirdDB.gdb])
Всем спасибо за любой совет.

кому-нибудь интересен качественный многопоточный ресторер?

$
0
0
Который эффективно использует заданное кол-во ядер, памяти, потоков записи на диск.
За деньги.

Если есть такие, то должны найтись и те кто напишет и предложит тем кому нужно.

Тем кому нужно, опишите как вы страдаете от недостатка такого ресторера и предложите приемлемую для вас цену.
Те кто потенциально способен такое написать, вполне могут принять во внимание ваши страдания и(или) сумму вознаграждения, и взять да сделать.

Trusted authentication для FireBird v2.5 на FIBPlus v7.3 (Delphi 7)

$
0
0
В документации по FIBPlus голяк. Исходники краем глаза посмотрел, тоже ничего не нашел.
Возможно ли при помощи FIB подключится к БД используя Trusted authentication?

Выдержка из статьи на ibase.ru
...
Пользователь может не указывать username/password при логине – в этом случае Firebird возьмет из системы имя пользователя, под которым он залогинился на компьютере, и "пропустит" его в БД под этим именем. При этом имя будет состоять из имени сервера, который осуществил аутентификацию, и имени пользователя. Например, Srv/Vasya.
...

В результате если в компоненте TpFIBDatabase поля логина и парлоля не заполнены, то при попытке подключения возникает ошибка:
"Your user name and password are not defined. Ask you database admin to set up a Firebird login"

IB Expert нормально подключается если установлена галочка Trusted authentication, а логин и пароль не задан. Значит сервер настроен корректно.

Может какие параметры нужно прописать в TpFIBDatabase.DBParams?

PS
Если FIBPlus не поддерживает trusted authentication, то какие компоненты использовать (разработка ведется на Delphi 7)?

Минимальный набор файлов для клиента/встроенного Firebird 3

$
0
0
Добрый день,

Что-то не нахожу в документации такого списка. Может было где?

Как найти таблицу с самым большим кол-вом записей (объёмом)

$
0
0
Все привет!
Есть некая БД , которая содержит порядка 200 таблиц. Вопрос: как определить таблицу с самым большим кол-вом информации (или по размере или по кол-ву записей или полей)?

xpath "вешает" базу

$
0
0
Коллеги, никто не сталкивался с такой аномалией: периодически (запросы выполняющие выборку или вызов процедур) селекты осуществляя выборку данных с использованием xpath (ниже на примере) соединение зависает намертво. Причем соответствнно соседние соединения не затрагиваются. Лечится только полным даун-ап-ом базы.

select XPATH(CM.XML, '/@br_cut_on'), CT.CONT_ID, CR.RESOURCE, XPATH(RS.XML, '/IP') IP_XML, XPATH(OB.XML, '/plan/@speed') TARIFF_SPEED
from CONTRACTS CT
...


Поделитесь, если не сложно мнением, в чем может быть проблема. Отвечу по максимуму на ваши уточняющие вопросы.
Так же хотелось бы знать каким образом можно было бы промониторить подобные зависания.

Дождаться окончания fetch (Delphi)...

$
0
0
Всем привет!
Вопрос давнишный, но все же нерешенный, снова возымел актуальность в одном из проектов с использованием Firebird и Delphi (+ Fibplus).
Что имеем: типичная связка фибдатасетов мастер-детейл, есть два грида Ehlib для их визуализации. В родительском гриде включена локальная сортировка по полю "дата\время последних изменений", по возрастанию.
Мои действия:
1) Поскольку датасеты оба закрыты, меняю некоторые параметры в родительском датасете, открываю его.
2) После открытия первый грид начинает отображать родительскую таблицу. Далее, следует команда Last, дабы курсор указывал на самую последнюю запись внизу.
3) Таким образом, получается что для родительской таблицы происходит полный fetch. Параллельно, пока было перемещение курсора в самый конец, дочерний грид тоже показывал постоянно меняющийся контент (что логично и понятно).

Теперь сам вопрос, вытекающий из п.3 - как сделать так, чтобы на время перемещения курсора после открытия родительского датасета с первой позиции до последней позиции, дочерний грид не показывал контент. Включение показа контента дочернего грида должно быть строго после достижения последней позиции в первом гриде.

Первое, что приходило на ум - открывать дочерний датасет вручную после команды Last. Однако, поскольку работает она асинхронно, то и ждать от нее результата бессмысленно. Использование WaitEndMasterScroll + WaitEndMasterInterval вроде косвенно помогли бы, но в этом случае я ведь не знаю точно значение через которое завершится ы родительском гриде скроллинг до последней позиции...

В общем, надеюсь понятно объяснил. Если у кого есть решение - поделитесь, пожалуйста)

Диагностика базы данных

$
0
0
Есть ли параметры, "дернув" которые, можно понять, что база повреждена или на пути к разрушению?

RN FB 3.0 стр. 41 (Wirecrypt ) disambiguation

$
0
0
Мелкая придирка:

RN
WireCrypt
Sets whether the network connection should be encrypted. It has three possible values: Required | Enabled |
Disabled. The default is set such that encryption is Required for connections coming in to the server and Enabled
for connections outgoing to a server.


Может быть, "outgoing from server" (исходящий от сервера)?

php - firebird - Выводятся не все строки в файл

$
0
0
Помогите разобраться в чем проблема.
Выгружаю данные из базы данных firebird 2.0 при помощи php кода
<?php
    $link = ibase_connect("C:\itklinika\workdb\med1.gdb", "SYSDBA", "masterkey");
    $res = ibase_query($link, "select * from pacient order by FAM");
	
 while ($row = ibase_fetch_assoc($res))
{
print "$row[ID] $row[FAM] $row[IME] $row[OTCH] $row[TEL_MOB] $row[DATEBORN] $row[GOROD] $row[STREET] $row[DOM] $row[KORP] $row[POL]";
print  "<br/>";
$set=trim("$row[ID];$row[FAM];$row[IME];$row[OTCH];$row[TEL_MOB];$row[DATEBORN];$row[GOROD];$row[STREET];$row[DOM];$row[KORP];$row[POL]");
file_put_contents('c:\export.txt', "$set \n", FILE_APPEND);
}

ibase_free_result($res);
ibase_close();
?>

Проблема в том, что выводятся не все строки. Скриншоты различий прикладываю к посту.
Есть строки в которых кроме id все данные null, есть в которых нет даже null. Но одни из этих строк попадают в файл, а другие нет. Системы не обнаружил.

Вопрос по DELETE

$
0
0
Возможно ли при одновременном удалении одной и той же записи из разных транзакций получить такую ошибку?

lock conflict on no wait transaction
deadlock
update conflicts with concurrent update
concurrent transaction number is 1274078

Транзакции RCRW nowait, серверы 2.1 и 3.0

Скорее всего да, т.к. кроме как на это грешить не на что, просто странно, что самому повторить не получается..

Проблема с соединением iSQL в FB 3.0

$
0
0
Наверняка вопрос дурацкий, но все-таки спрошу, потому что перестал что-то понимать.

Есть БД, у нее в databases.conf записано:


dblog=d:\Baza3\dblog.fdb {

AuthServer = Win_Sspi, Srp
AuthClient = Win_Sspi, Srp
UserManager = Srp
WireCrypt = enabled


TempBlockSize=2M
TempCacheLimit=1G
DefaultDBCachePages=32K
}

Соединяюсь с ней из IBExpert'а:

user = SYSDBA password = masterkey

Attempting to connect to:
192.168.1.1/3052:DBLOG... Connected successfully.
Server version: WI-V6.3.1.32573 Firebird 3.0

Disconnecting from database... Passed!

Attempting to connect to services manager:
192.168.1.1/3052:service_mgr... Connected successfully.

То же с помощью isql:

isql.exe 192.168.1.1/3052:dblog -u SYSDBA -pas masterkey

Statement failed, SQLSTATE = HY000
Login name too long (32 characters, maximum allowed 31)
Use CONNECT or CREATE DATABASE to specify a database
SQL>

Убираем Win_Sspi для сервера:

dblog=d:\Baza3\dblog.fdb {

AuthServer = Srp
AuthClient = Win_Sspi, Srp
UserManager = Srp
WireCrypt = enabled

...
}

Снова:
isql.exe 192.168.1.1/3052:dblog -u SYSDBA -pas masterkey

Теперь все в порядке:

Database: 192.168.1.1/3052:dblog, User: SYSDBA

SQL> select current_user from rdb$database;



USER
===============================
SYSDBA

SQL>

Вопрос по DataPump

$
0
0
Прошу помощи по переносу данных с одной базы в другую. С рабочей базы выгрузил метаданные с пунктом create database и создал пустую бд с данного скрипта. Потом настраиваю в IBPump перенос с поврежденной базы (Source DB) в пустую БД, которую создал с метаданных (Destination DB). В списке таблиц в окне Destination DB нету одной таблицы, хотя данная таблица в Source DB есть и при выгрузке метаданных с рабочей БД данная таблица (информация о её создании в скрипте) присутствует. Если открыть IBExpert`ом эту пустую базу (Destination DB), то данная таблица также существует. Подскажите, почему данной таблицы нету в списке таблиц (Destination DB)?

Клиент 2.1->3.0 малой кровью

$
0
0
Готовы переставить сервер с FB2.1 на FB3.0. Вопрос теперь о клиенте. Можно ли облегчить жизнь админам? На компах стоит клиент 2.1 и какой-то старенький ODBC драйвер. Их - 150+. Что нужно установить на этих компах, чтобы был коннект к серверу FB3. Естественно, хочется малой кровью это всё проделать. И время на переход, в принципе, ограничено. Пробовали что-то сделать на тестовом компе. Ничего хорошего. 2.1 и 3.0 вместе не живут. Пока есть вариант - только снос 2.1 и установка 3.0. Может у кого уже есть опыт такой? Подключение к IBExpert с рабочих станций не интересует, если что.

время жизни соединения клиента с базой

$
0
0
Всем добрый день!

Подскажите, пожалуйста, есть ли какие-то минусы долгого подключения пользователей к базе?
Firebird 2.5
Про транзакции вроде как понятно и много информации, а вот именно о коннекте?
Т.е. например пользователь подсоединился, выполнил процедуру, закомитил и стоит ему отсоединятся? Или остаться соединенным пока еще раз захочет процедуру выполнить? Если остаться, то как долго? Днями, неделями, месяцами?
Частота выполнения процедур небольшая, может 5 - 10 раз в сутки.
Мне почему-то ближе было бы завершать коннект, но где почитать точно об этом?
Бэкап делается раз в сутки ночью, и свип тогда же. В это время есть примерно 2-5 пользователей присоединенных.

FB3 - пакеты: работа оптимизатора и ошибка полного рестора базы

$
0
0
Всем доброе время суток.

Перешел недавно на FB3.
Сейчас осваиваю в работе новые фичи в том числе и пакеты.
В процедуре из пакета использую запрос вида

where (
not :flag and
t.f1=:f1 and t.f2=:f2 and t.f3=:f3 and t.f4=:f4 and
t.f5=:f5 and t.f6=:f6 and t.f7=:f7 and t.f8=:f8 and t.f9=:f9
)
or
(
:flag and
t.g1=:g1 and t.g2=:g2 and t.g3=:g3 and t.f4=:f4 and
t.f5=:f5 and t.f6=:f6 and t.f7=:f7 and t.f8=:f8 and t.f9=:f9
)
fetch first 1000 rows only


Соответствующие индексы созданы,


create index idx1 on t (f1,f2,f3,f4,f5,f6,f7,f8,f9)
create index idx2 on t (g1,g2,g3,f4,f5,f6,f7,f8,f9)

но оптимизатор их явно не использует: в таблице t около 10000000 записей, запрос отрабатывает примерно за 8 минут при выборке первых тысячи записей. Подсовываю оптимизатору план plan (t index (idx1,idx2)) - запрос отрабатывается за несколько секунд.

В общем все-бы ничего пусть бы его план и остается, но провожу тестовое восстановление базы и получаю ошибку вида:

...
Error while parsing procedure test_pack.test_proc`s BLR.
index idx1 cannot be used in the specified plan.
there is no index idx2 for table t.
unknown ISC error 336330835.
...


Ну и собственно старый как мир вопрос: кто виноват и что делать?
Заранее спасибо неравнодушным!

FBEXPORT @ DEBIAN - HELP!

$
0
0
Помогите! Простая задачка нужно выгружать таблицу в файлик (CSV) на регулярной основе на DEBIAN 6
FBEXPORT идеально подходит по описанию но завести ее не могу :(

fbexport -S -H localhost -D /var/lib/firebird/2.5/data/test.gdb -U sysdba -P masterkey -F myfile.fbx -Q "SELECT * FROM TABLE"

получаю
-bash: fbexport: command not found

я не силен в линуксах - подскажите как вообще пользоваться этой утилитой из командной строки
Viewing all 1677 articles
Browse latest View live