На дефолтно настроенном сервере 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
|
Используемые материалы:
Перемещение файла логического журнала в другое пространство баз данных
Высвобождение файла логического журнала
Добавление файлов логического журнала вручную