powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Должен ли заголовок лок-таблицы содержать Owners(N), N>0, после рестарта ФБ ?
4 сообщений из 4, страница 1 из 1
Должен ли заголовок лок-таблицы содержать Owners(N), N>0, после рестарта ФБ ?
    #38640294
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Что-то не догоняю я, видимо... фундаментальное что-то... :(

0) ставим bugcheckabort =1, рестартуем ФБ
1) создаем базу:
C:\>isql -q
SQL> create database '192.168.0.220/3333:/var/db/fb30/tmp201405132122.fdb'; commit; exit;

2) делаем теперь два коннекта к ней:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 session #1 
C:\>isql 192.168.0.220/3333:/var/db/fb30/tmp201405132122.fdb
Database:  192.168.0.220/3333:/var/db/fb30/tmp201405132122.fdb

 session #2 
C:\>isql 192.168.0.220/3333:/var/db/fb30/tmp201405132122.fdb
Database:  192.168.0.220/3333:/var/db/fb30/tmp201405132122.fdb
3) запускаем снимок лок-таблицы:
Код: plaintext
/opt/fb30trnk/bin/fb_lock_print -a -c -d /var/db/fb30/tmp201405132122.fdb >fblptmp01.txt

4) во любой сессии (я выбрал 2-ю) вводим на выполнение вот этот скриптик:
Код: sql
1.
2.
3.
4.
5.
6.
7.
-- file = 'fbcrash.sql'
set echo on;
recreate table t(id int primary key, x int, y int); 
commit;
create index t_yx on t computed by( iif( ( select sum(y) from t tx where tx.x = t.x ) < 1000, id, -1 ) );
commit;
insert into t values( 1, 100, 300);

При этом получим в окне session #2:
Код: plaintext
1.
2.
Statement failed, SQLSTATE = 08006
Error reading data from the connection.
After line 5 in file fbcrash.sql
(ждать придется около 5...10 секунд: пока coredump не создастся - никакого сообщения не будет).

Повторяем теперь снятие лок-таблицы, несколько раз, интервал - любой.
Смотрим в её заголовок и видим:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
LOCK_HEADER BLOCK
        Version: 146, Creation timestamp: 2014-05-13 21:22:46
        Active owner:      0, Length: 1048576, Used:  95184
        Enqs:    170, Converts:     13, Rejects:     40, Blocks:      0
        Deadlock scans:      0, Deadlocks:      0, Scan interval:  10
        Acquires:    254, Acquire blocks:      0, Spin count:   0
        Mutex wait: 0.0%
        Hash slots: 8191, Hash lengths (min/avg/max):    0/   0/   6
        Remove node:      0, Insert queue:      0, Insert prior:      0
         Owners (5):      forward:  78376, backward:  81208
         Free owners: *empty* 
        Free locks (9): forward:  80408, backward:  92320
        Free requests (9):      forward:  93744, backward:  94016

Хотя:
0) ФБ выполнил стопудово рестарт
firebird.log
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
oel64   Tue May 13 21:24:09 2014
        Database: /var/db/fb30/tmp201405132122.fdb
        unsuccessful metadata update
        request depth exceeded. (Recursive definition?)
        internal Firebird consistency check (error during savepoint backout (290), file: exe.cpp line: 1619)


oel64   Tue May 13 21:24:16 2014
        /opt/fb30trnk/bin/fbguard: /opt/fb30trnk/bin/firebird terminated abnormally (-1)
- и я должен был бы получать в ответ на fb_lock_print швабру:
Код: plaintext
1.
2.
Unable to access lock table.
shmem_data->sh_mem_length_mapped is 0
1) потоков внутри процесса ФБ - как положено при отсутствии работы, три:
Код: plaintext
1.
2.
3.
4.
$ ps -FLC -p 32453
UID        PID  PPID   LWP  C NLWP    SZ   RSS PSR STIME TTY      STAT   TIME CMD
firebird 32453 32382 32453  0    3 52438  3144   9 21:24 ?        Sl     0:00 /opt/fb30trnk/bin/firebird
firebird 32453 32382 32454  0    3 52438  3144  10 21:24 ?        Sl     0:00 /opt/fb30trnk/bin/firebird
firebird 32453 32382 32455  0    3 52438  3144   0 21:24 ?        Sl     0:00 /opt/fb30trnk/bin/firebird

2) ФБ действительно не держит сейчас никаких открытых файлов:
Код: plaintext
1.
2.
[root@oel64 21:35:56 fb30]$ ls -l /proc/32453/fd
total 0
lrwx------ 1 firebird firebird 64 May 13 21:24 0 -> socket:[5210199]

1) Что тогда есть в лок-таблице вот это:
Код: plaintext
1.
2.
         Owners (5):      forward:  78376, backward:  81208
         Free owners: *empty* 
- ?
2) Почему я НЕ получил сообщение вида
Код: plaintext
1.
2.
3.
Unable to access lock table.
shmem_data->sh_mem_length_mapped is 0
- ?
                    
...
Рейтинг: 0 / 0
Должен ли заголовок лок-таблицы содержать Owners(N), N>0, после рестарта ФБ ?
    #38640301
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид2) Почему я НЕ получил сообщение вида
Потому что
1) Лок-таблица существует;
2) Она осталась с том состоянии в каком была при краше;
3) Никто не подключался к базе чтобы её инициализировать заново.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Должен ли заголовок лок-таблицы содержать Owners(N), N>0, после рестарта ФБ ?
    #38640310
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоид2) Почему я НЕ получил сообщение вида
Потому что
1) Лок-таблица существует;
2) Она осталась с том состоянии в каком была при краше;
3) Никто не подключался к базе чтобы её инициализировать заново.В где она "существует", когда процесс ФБ с грохотом улетел в пропасть ?
Это какой-то файл из этих:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
$ ls -l /tmp/firebird/fb_lock_*
-rw-rw---- 1 firebird firebird       0 May 13 21:45 /tmp/firebird/fb_lock_04080000000000001f00640000000000
-rw-rw---- 1 firebird firebird 1048576 May 13 21:39 /tmp/firebird/fb_lock_04080000000000007207640000000000
-rw-rw---- 1 firebird firebird 1048576 May  5 19:48 /tmp/firebird/fb_lock_0408000000000000b204640000000000
-rw-rw---- 1 firebird firebird 1048576 May 13 21:18 /tmp/firebird/fb_lock_0408000000000000b304640000000000
-rw-rw---- 1 firebird firebird 2097152 May 12 11:45 /tmp/firebird/fb_lock_0408000000000000cc07640000000000
-rw-rw---- 1 firebird firebird 1048576 May  5 15:32 /tmp/firebird/fb_lock_0408000000000000d70e840000000000
-rw-rw---- 1 firebird firebird 1048576 May 13 21:54 /tmp/firebird/fb_lock_0408000000000000fd03640000000000
- ?
Если да, то хотелось бы понять, какая от них польза после краха ФБ...
...
Рейтинг: 0 / 0
Должен ли заголовок лок-таблицы содержать Owners(N), N>0, после рестарта ФБ ?
    #38640317
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

после краха нет никакой пользы, но и вреда тоже нет. Таблица осталась в файле на диске и ждет повторного использования. А вот почему осталась живой соответствующая область разделяемой памяти - это видимо особенность платформы.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Должен ли заголовок лок-таблицы содержать Owners(N), N>0, после рестарта ФБ ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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