Hay una pregunta que no puedo encontrar en Google.
Tengo muchas máquinas Linux, principalmente con SLES u openSUSE, diferentes versiones y kernels. En algunos de ellos me enfrenté a un problema de transacciones lentas de Oracle. Es un problema de vez en cuando y cuando inicio sesión en el cuadro en ese momento veo que Oracle está bloqueado en la función del 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 -
--
Así que creo que ese cuadro se ha quedado sin memoria para los buffers de disco, pero la memoria está bien.
total used free shared buffers cached
Mem: 4149084 3994552 154532 0 0 2424328
-/+ buffers/cache: 1570224 2578860
Swap: 3148700 750696 2398004
Creo que este es el problema, el buffer es cero y debemos escribir directamente en el disco, pero ¿Por qué el búfer es cero?- Intento buscarlo en Google y no encuentro nada. ¿Alguien puede ayudarme?
Respuesta1
El DBMS de Oracle omite los buffers del sistema operativo y escribe directamente en el dispositivo de bloque. No creo que sus transacciones lentas se deban a que no tiene buffers en uso.
Respuesta2
free
le está dando la cantidad de buffer que está usando el kernel,no cuanto hay disponible. Los buffers del kernel se extraen de la memoria total; por lo tanto, en este caso, su kernel está usando 0/4149084 de memoria disponible para buffers. No consideraría que este sea su problema y crearía una nueva pregunta para intentar averiguar por qué tiene problemas relacionados con Oracle.