O Oracle DBMS ignora os buffers do sistema operacional e grava diretamente no dispositivo de bloco. Eu não acho que suas transações lentas são causadas por não ter buffers em uso.
Há um qestion que não consigo encontrar no google.
Eu tenho muitas caixas de linux principalmente com SLES ou openSUSE, versões diferentes e kernels. Em alguns deles, enfrentei um problema lento nas transações oraculares. É hora de tempo problema e quando eu log in na caixa nesse momento eu vejo que o oracle bloqueado na função do kernel 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 -
--
então eu acho que essa caixa está sem memória para buffers de disco, mas a memry está bem
total used free shared buffers cached
Mem: 4149084 3994552 154532 0 0 2424328
-/+ buffers/cache: 1570224 2578860
Swap: 3148700 750696 2398004
eu acho que esse é o problema, o buffer é zero e devemos escrever diretamente no disco, mas por que o buffer é zero? - tento pesquisar no Google e não encontrar nada - alguém pode ajudar?
O Oracle DBMS ignora os buffers do sistema operacional e grava diretamente no dispositivo de bloco. Eu não acho que suas transações lentas são causadas por não ter buffers em uso.
free
está dando a você quanto do buffer o kernel está usando, não quanto está disponível . Os buffers de kernel são retirados da memória total - portanto, neste caso, seu kernel está usando 0/4149084 de memória disponível para buffers. Eu não consideraria esse o seu problema e criaria uma nova pergunta tentando descobrir por que você está tendo problemas relacionados à Oracle.
Tags oracle linux-kernel