На дефолтно настроенном сервере Informix, при занесении/удалении большого объема данных, начала блокироваться субд.

Ошибки полетели такие:

11:39:04 Checkpoint Statistics - Avg. Txn Block Time 0.000, # Txns blocked 0, Plog used 2, Llog used 2

11:48:05 WARNING: DBspace rootdbs is full
11:48:05 SCHAPI: Error -229 Could not open or create a temporary file.
11:48:05 SCHAPI: Type: SENSOR, Name: mon_checkpoint, Location: NULL.
11:48:05 SCHAPI: Error -131 ISAM error: no free disk space
11:48:05 SCHAPI: Type: SENSOR, Name: mon_checkpoint, Location: NULL.
11:48:06 Process exited with return code 127: /bin/sh /bin/sh -c /usr/informix/alarm/alarm.sh 3 44 "DBSpace is full: 'rootdbs'" "" ""
11:49:05 Checkpoint Completed: duration was 0 seconds.
11:49:05 Tue May 24 - loguniq 80, logpos 0xe8018, timestamp: 0xb6fd02 Interval: 1153

11:49:05 Maximum server connections 0
11:49:05 Checkpoint Statistics - Avg. Txn Block Time 0.000, # Txns blocked 0, Plog used 30, Llog used 15

Что не есть гуд. Попробуемс это исправить.

 

Как мне кажется решение данной проблемы видится в вынесе логического журнала из rootdbs. Мониторинг логических журналов смотрится следующими командами:

# onstat -l

IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:53:25 -- 745072 Kbytes

Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-1 0 512 49 6 8.17
phybegin physize phypos phyused %used
1:263 10000 731 0 0.00

Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-1 0 512 190 46 39 4.1 1.2
Subsystem numrecs Log Space used
OLDRSAM 183 32172
HA 7 308

address number flags uniqid begin size used %used
6f9c8cc8 1 U------ 71 1:10263 25000 1790 7.16
6f9c8d10 2 U------ 72 1:35263 25000 4 0.02
6f9c8d58 3 U------ 73 1:60263 25000 4 0.02
6f9c8da0 4 U------ 74 1:85263 25000 1 0.00
6f9c8de8 5 U------ 75 1:110263 25000 4 0.02
6f9c8e30 6 U------ 76 1:135263 25000 4 0.02
6f9c8e78 7 U------ 77 1:160263 25000 1 0.00
6f9c8ec0 8 U------ 78 1:185263 25000 4 0.02
6f9c8f08 9 U------ 79 1:210263 25000 1 0.00
6f9c8f50 10 U---C-L 80 1:235263 25000 238 0.95
10 active, 10 total

и onchek -pr

Суть проблемы заключается в том, что в дефолтном сервере, все логи пишутся в roodbs, быстро заполняют это пространство, и сервер лочится. Рекомендуется сразу же вынести все логи из пространства rootdbs. Итак по порядку.

Сперва мы создадим пространство и файл logspace с помощью команды onspaces:

#onspaces -c -d logspace -p /usr/informix/DATA/logspace.dat -o 0 -s 200000

Дальше, нам нужно создать в этом пространстве столько журналов, сколько их в rootdbs. Даем в консоль десять раз команду onparams -a -d logspace.

Смотрим, что из этого вышло:

onstat -l

IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:55:14 -- 745072 Kbytes

Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-2 0 512 130 36 3.61
phybegin physize phypos phyused %used
1:263 10000 1008 0 0.00

Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-2 0 512 1935 349 322 5.5 1.1
Subsystem numrecs Log Space used
OLDRSAM 1872 191720
HA 63 2772

address number flags uniqid begin size used %used
6f9c8cc8 1 U------ 1 1:10263 25000 144 0.58
6f9c8d10 2 U------ 2 1:35263 25000 144 0.58
6f9c8d58 3 U------ 3 1:60263 25000 144 0.58
6f9c8da0 4 U------ 4 1:85263 25000 144 0.58
6f9c8de8 5 U------ 108 1:110263 25000 144 0.58
6f9c8e30 6 U------ 108 1:135263 25000 144 0.58
6f9c8e78 7 U------ 108 1:160263 25000 144 0.58
6f9c8ec0 8 U------ 108 1:185263 25000 144 0.58
6f9c8f08 9 U------ 108 1:210263 25000 144 0.58
6f9c8f50 10 U------ 108 1:235263 25000 144 0.58
70a4c3e0 11 U---C-L 109 2:53 25000 27 0.11
70a4c428 12 A------ 0 2:25053 25000 0 0.00
70a4c470 13 A------ 0 2:50053 25000 0 0.00
70aa27f8 14 A------ 0 2:75053 25000 0 0.00
70a4c4b8 15 A------ 0 2:100053 25000 0 0.00
70a4c508 16 A------ 0 2:125053 25000 0 0.00
70a4c560 17 A------ 0 2:150053 25000 0 0.00
70a4c608 18 A------ 0 2:175053 25000 0 0.00
70a4c5a8 19 A------ 0 2:200053 25000 0 0.00
70a4c6b8 20 A------ 0 2:225053 25000 0 0.00
11 active, 11 total

Теперь нам нужно освободить все файлы журнала, кроме текущего. Для этого делаем резервное копирование уровня 0. Тут необходимо отметить, что настройки для резервного копирования которые предоставляются не подходят. Смотрим onconfig два параметра: LTAPEDEV и TAPEDEV. Я LTAPEDEV завел на /usr/informix/dev/tapedev а TAPEDEV на /dev/null. Важно! если вы выполняете команды ontape onstat от рута, то грруппа и владелец файлов(/usr/informix/dev/tapedev и /dev/null) должны быть informix.informix а права доступа 660(chown informix.informix /usr/informix/dev/tapedev && chmod 660 /usr/informix/dev/tapedev && chown informix.informix /dev/null && chmod 660 /dev/null).

Делаем резервное копирование уровня 0 и на всяк случай onstat -a. После начинаем потихоньку удалять файлы логов из rootdbs, они у нас расположены с 1 по 10 номер. Для этого выполняем команды:

#onparams -d -l 1

#onparams -d -l 2

#onparams -d -l 3

#onparams -d -l 4

#onparams -d -l 5

#onparams -d -l 6

#onparams -d -l 7

#onparams -d -l 8

#onparams -d -l 9

#onparams -d -l 10

У вас обязательно на каком нить файле команда запнется, выдав сообщение, что файл используется. Но это не важно, просто пропустите этот номер, и продолжайте дальше. Должно остаться что то вроде этого:

# onstat -l

IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:55:46 -- 745072 Kbytes

Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-2 0 512 130 36 3.61
phybegin physize phypos phyused %used
1:263 10000 1008 0 0.00

Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-3 0 512 1943 353 326 5.5 1.1
Subsystem numrecs Log Space used
OLDRSAM 1878 192016
HA 65 2860

address number flags uniqid begin size used %used
6f9c8de8 5 U------ 108 1:110263 25000 144 0.58
70a4c3e0 11 U---C-L 109 2:53 25000 31 0.12
70a4c428 12 A------ 0 2:25053 25000 0 0.00
70a4c470 13 A------ 0 2:50053 25000 0 0.00
70aa27f8 14 A------ 0 2:75053 25000 0 0.00
70a4c4b8 15 A------ 0 2:100053 25000 0 0.00
70a4c508 16 A------ 0 2:125053 25000 0 0.00
70a4c560 17 A------ 0 2:150053 25000 0 0.00
70a4c608 18 A------ 0 2:175053 25000 0 0.00
70a4c5a8 19 A------ 0 2:200053 25000 0 0.00
70a4c6b8 20 A------ 0 2:225053 25000 0 0.00
11 active, 11 total

Как видите, у меня остался лог файл под номером 5, у него установлен флаг "U" и так просто его удалить не получится: This Log file is in use. Drop Failed.

Для этого нам нужно еще раз сделать резервное копирование уровня 0 и дать команду onstat -a:

# ontape -s -L 0
Archive to tape device '/dev/null' is complete.

# onstat -l

IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:55:56 -- 745072 Kbytes

Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-2 0 512 130 36 3.61
phybegin physize phypos phyused %used
1:263 10000 1008 0 0.00

Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-1 0 512 1951 357 330 5.5 1.1
Subsystem numrecs Log Space used
OLDRSAM 1884 192312
HA 67 2948

address number flags uniqid begin size used %used
6f9c8de8 5 U------ 108 1:110263 25000 144 0.58
70a4c3e0 11 U---C-L 109 2:53 25000 35 0.14
70a4c428 12 A------ 0 2:25053 25000 0 0.00
70a4c470 13 A------ 0 2:50053 25000 0 0.00
70aa27f8 14 A------ 0 2:75053 25000 0 0.00
70a4c4b8 15 A------ 0 2:100053 25000 0 0.00
70a4c508 16 A------ 0 2:125053 25000 0 0.00
70a4c560 17 A------ 0 2:150053 25000 0 0.00
70a4c608 18 A------ 0 2:175053 25000 0 0.00
70a4c5a8 19 A------ 0 2:200053 25000 0 0.00
70a4c6b8 20 A------ 0 2:225053 25000 0 0.00
11 active, 11 total

# ontape -a

Performing automatic backup of logical logs.

Please mount tape 1 on /usr/informix/dev/tapedev and press Return to continue ...

Do you want to back up the current logical log? (y/n) n
Read/Write End Of Medium enabled: blocks = 7

Please label this tape as number 1 in the log tape sequence.

This tape contains the following logical logs:
108

# onstat -l

IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:56:14 -- 745072 Kbytes

Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-2 11 512 140 36 3.89
phybegin physize phypos phyused %used
1:263 10000 1008 11 0.11

Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-1 0 512 1973 360 333 5.5 1.1
Subsystem numrecs Log Space used
OLDRSAM 1906 194152
HA 67 2948

address number flags uniqid begin size used %used
6f9c8de8 5 U-B---- 108 1:110263 25000 144 0.58
70a4c3e0 11 U---C-L 109 2:53 25000 38 0.15
70a4c428 12 A------ 0 2:25053 25000 0 0.00
70a4c470 13 A------ 0 2:50053 25000 0 0.00
70aa27f8 14 A------ 0 2:75053 25000 0 0.00
70a4c4b8 15 A------ 0 2:100053 25000 0 0.00
70a4c508 16 A------ 0 2:125053 25000 0 0.00
70a4c560 17 A------ 0 2:150053 25000 0 0.00
70a4c608 18 A------ 0 2:175053 25000 0 0.00
70a4c5a8 19 A------ 0 2:200053 25000 0 0.00
70a4c6b8 20 A------ 0 2:225053 25000 0 0.00
11 active, 11 total

Все, наш пятый лог файл установился в "U-B----" состояние и готов к удалению. Удаляем его командой, делаем резервное копирование уровня 0 и смотрим результат:

# onparams -d -l 5

WARNING: Dropping a logical log file.

Do you really want to continue? (y/n)y

Logical log file 5 has been pre-dropped.

It will be deleted from the log list and its space can be reused

once you take level 0 archives of all BLOBspaces, Smart BLOBspaces

and non-temporary DBspaces.

# ontape -s -L 0

Archive to tape device '/dev/null' is complete.

Program over.

# onstat -l

IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:56:45 -- 745072 Kbytes

Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-1 0 512 141 38 3.71
phybegin physize phypos phyused %used
1:263 10000 1021 0 0.00

Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-3 0 512 1991 368 341 5.4 1.1
Subsystem numrecs Log Space used
OLDRSAM 1920 194980
HA 71 3124

address number flags uniqid begin size used %used
70a4c3e0 11 U---C-L 109 2:53 25000 46 0.18
70a4c428 12 A------ 0 2:25053 25000 0 0.00
70a4c470 13 A------ 0 2:50053 25000 0 0.00
70aa27f8 14 A------ 0 2:75053 25000 0 0.00
70a4c4b8 15 A------ 0 2:100053 25000 0 0.00
70a4c508 16 A------ 0 2:125053 25000 0 0.00
70a4c560 17 A------ 0 2:150053 25000 0 0.00
70a4c608 18 A------ 0 2:175053 25000 0 0.00
70a4c5a8 19 A------ 0 2:200053 25000 0 0.00
70a4c6b8 20 A------ 0 2:225053 25000 0 0.00
10 active, 10 total

 

Используемые материалы:

Перемещение файла логического журнала в другое пространство баз данных

Высвобождение файла логического журнала

Добавление файлов логического журнала вручную