Bienvenidos

Todos estos pasos descriptos fueron probados en ambientes productivos

lunes, 12 de diciembre de 2016

ORA-27125: unable to create shared memory segment



Al intentar crear una instancia de bd Oracle, falla con el siguiente error


ORA-27125: unable to create shared memory segment
SVR4 Error: 22: Invalid argument


 El server en cuestion es un SPARC T5-2  con 8 gb de RAM, con 3 zonas, en la zona 1 estaran las bd, y en la zona 2 y zona3 la aplicacion.

Lo primero que chequeo es en la zona global, si hay errores en el /var/adm/messages, y veo el mensaje que no hay espacio en el SWAP

Dec 12 11:30:02 net1002 genunix: [ID 470503 kern.warning] WARNING: Sorry, no swap space to grow stack for pid 29204 (discusge)

 Como el SO tiene ZFS, chequeo con zfs list el espacio asignado al swap , y luego con un df el espacio actual ocupado de swap
root@net1002 #  zfs list
NAME                         USED  AVAIL  REFER  MOUNTPOINT
rpool                       16.0G  10.3G   106K  /rpool
rpool/ROOT                  6.35G  10.3G    31K  legacy
rpool/ROOT/s10s_u11wos_24a  6.35G  10.3G  6.35G  /
rpool/dump                  1.50G  10.3G  1.50G  -
rpool/export                  73K  10.3G    36K  /export
rpool/export/home             37K  10.3G    37K  /export/home
rpool/swap                  8.16G  10.6G  7.91G  -


root@net1002 # df -h
Filesystem                       size          used     avail capacity  Mounted on
rpool/ROOT/s10s_u11wos_24a
                        26G   6.3G    10G    39%    /
/devices                 0K     0K     0K     0%    /devices
ctfs                     0K     0K     0K     0%    /system/contract
proc                     0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
swap                   1.5G   448K   1.5G     1%    /etc/svc/volatile
objfs                    0K     0K     0K     0%    /system/object
sharefs                  0K     0K     0K     0%    /etc/dfs/sharetab
/platform/sun4v/lib/libc_psr/libc_psr_hwcap3.so.1
                        17G   6.3G    10G    39%    /platform/sun4v/lib/libc_psr.so.1
/platform/sun4v/lib/sparcv9/libc_psr/libc_psr_hwcap3.so.1
                        17G   6.3G    10G    39%    /platform/sun4v/lib/sparcv9/libc_psr.so.1
fd                       0K     0K     0K     0%    /dev/fd
swap                   1.5G    32K   1.5G     1%    /tmp
swap                   1.5G    88K   1.5G     1%    /var/run
rpool/export            26G    36K    10G     1%    /export
rpool/export/home       26G    37K    10G     1%    /export/home
rpool                   26G   106K    10G     1%    /rpool
/dev/md/dsk/d300        30G    27G   2.7G    91%    /export/zona3
/dev/md/dsk/d200        30G    25G   4.3G    86%    /export/zona2
/dev/md/dsk/d100        30G   5.3G    24G    19%    /export/zona1

Ahora voy a consultar cuanto espacio libre tiene el pool RPOOL , para saber cuanto espacio puedo agregarle al volumen SWAP  ( tiene 11gb libres) 


root@net1002 # zpool get all rpool
NAME   PROPERTY       VALUE                       SOURCE
rpool  size           26.8G                       -
rpool  capacity       58%                         -
rpool  altroot        -                           default
rpool  health         ONLINE                      -
rpool  guid           17834260759408459067        -
rpool  version        32                          default
rpool  bootfs         rpool/ROOT/s10s_u11wos_24a  local
rpool  delegation     on                          default
rpool  autoreplace    off                         default
rpool  cachefile      -                           default
rpool  failmode       continue                    local
rpool  listsnapshots  on                          default
rpool  autoexpand     off                         default
rpool  free           11.0G                       -
rpool  allocated      15.8G                       -
rpool  readonly       off    


 Con este comando veo que tiene asignado 7.91gb para el volumen swap

root@net1002 # zfs get all rpool/swap
NAME        PROPERTY              VALUE                  SOURCE
rpool/swap  type                  volume                 -
rpool/swap  creation              Thu Sep  8 13:47 2016  -
rpool/swap  used                  8.16G                  -
rpool/swap  available             10.6G                  -
rpool/swap  referenced            7.91G                  -
rpool/swap  compressratio         1.00x                  -
rpool/swap  reservation           none                   default
rpool/swap  volsize               7.91G                  local
rpool/swap  volblocksize          1M                     -
rpool/swap  checksum              off                    local
rpool/swap  compression           off                    local
rpool/swap  readonly              off                    default
rpool/swap  shareiscsi            off                    default
rpool/swap  copies                1                      default
rpool/swap  refreservation        8.16G                  local
rpool/swap  primarycache          metadata               local
rpool/swap  secondarycache        all                    default
rpool/swap  usedbysnapshots       0                      -
rpool/swap  usedbydataset         7.91G                  -
rpool/swap  usedbychildren        0                      -
rpool/swap  usedbyrefreservation  255M                   -
rpool/swap  logbias               latency                default
rpool/swap  sync                  standard               default
rpool/swap  rekeydate



Ahora voy a agrandar el tamaño del volumen swap de 8gb que tenia a 16gb

root@net1002 # zfs set volsize=16g rpool/swap


root@net1002 # zfs get all rpool/swap       
NAME        PROPERTY              VALUE                  SOURCE
rpool/swap  type                  volume                 -
rpool/swap  creation              Thu Sep  8 13:47 2016  -
rpool/swap  used                  16.5G                  -
rpool/swap  available             2.48G                  -
rpool/swap  referenced            16.0G                  -
rpool/swap  compressratio         1.00x                  -
rpool/swap  reservation           none                   default
rpool/swap  volsize               16G                    local
rpool/swap  volblocksize          1M                     -
rpool/swap  checksum              off                    local
rpool/swap  compression           off                    local
rpool/swap  readonly              off                    default
rpool/swap  shareiscsi            off                    default
rpool/swap  copies                1                      default
rpool/swap  refreservation        16.5G                  local
rpool/swap  primarycache          metadata               local
rpool/swap  secondarycache        all                    default
rpool/swap  usedbysnapshots       0                      -
rpool/swap  usedbydataset         16.0G                  -
rpool/swap  usedbychildren        0                      -
rpool/swap  usedbyrefreservation  516M                   -
rpool/swap  logbias               latency                default
rpool/swap  sync                  standard               default
rpool/swap  rekeydate 


Con esto ya funciona, pero por las dudas que el dba quiera agregar otra instancia mas, 
 en la zona1 aumento el parametro del shared memory  tambien a 16gb.( esto es opcional, si no lo seteo , y dejo en 8gb que era el tamaño que estaba anteriormente, funciona igual )

root@net1c12 #  projmod -s -K "project.max-shm-memory=(priv,17179869184,deny)" user.oracle