Есть один вопрос, который я не могу найти в гугле.
У меня много ящиков с Linux, в основном с SLES или openSUSE, разными версиями и ядрами. На некоторых из них я столкнулся с проблемой медленных транзакций оракула. Время от времени возникает проблема, и когда я вхожу в поле в это время, я вижу, что оракул заблокирован в функции ядра sync_page
# while :; do ps axo stat,pid,cmd,wchan | egrep '^D|^R'; echo --; sleep 5; done
D 3483 hald-addon-storage: polling ide_do_drive_cmd
Ds 4635 ora_dbw0_orcl sync_page
Ds 4637 ora_lgwr_orcl sync_page
Ds 4639 ora_ckpt_orcl sync_page
D 11210 oracleorcl (LOCAL=NO) sync_page
D 12457 [smtpd] sync_page
R+ 12458 ps axo stat,pid,cmd,wchan -
--
Ds 4635 ora_dbw0_orcl sync_page
Ds 4637 ora_lgwr_orcl sync_page
Ds 4639 ora_ckpt_orcl sync_page
D 11210 oracleorcl (LOCAL=NO) sync_page
R+ 12501 ps axo stat,pid,cmd,wchan -
--
Ds 4635 ora_dbw0_orcl sync_page
Ds 4637 ora_lgwr_orcl sync_page
Ds 4639 ora_ckpt_orcl sync_page
D 11210 oracleorcl (LOCAL=NO) sync_page
R+ 12535 ps axo stat,pid,cmd,wchan -
--
Ds 4635 ora_dbw0_orcl sync_page
Ds 4637 ora_lgwr_orcl sync_page
Ds 4639 ora_ckpt_orcl sync_page
D 11210 oracleorcl (LOCAL=NO) sync_page
R+ 12570 ps axo stat,pid,cmd,wchan -
--
поэтому я думаю, что в этом ящике не хватает памяти для дисковых буферов, но с памятью все в порядке
total used free shared buffers cached
Mem: 4149084 3994552 154532 0 0 2424328
-/+ buffers/cache: 1570224 2578860
Swap: 3148700 750696 2398004
Я думаю, что это проблема, буфер равен нулю и мы должны писать прямо на диск, но почему буфер равен нулю? - пытаюсь погуглить и ничего не нахожу - кто-нибудь может помочь?
free
дает вам, сколько буфера использует ядро, не сколько доступно. Буферы ядра удаляются из общей памяти - поэтому в этом случае ваше ядро использует 0/4149084 доступной памяти для буферов. Я бы не стал рассматривать это как вашу проблему и создал бы новый вопрос, пытаясь выяснить, почему вы испытываете проблемы, связанные с Oracle.
СУБД Oracle обходит буферы ОС и записывает данные непосредственно на блочное устройство. Я не думаю, что ваши медленные транзакции вызваны отсутствием используемых буферов.