viernes, 6 de marzo de 2015

Oracle 12c : Instalación de Oracle Grid Infraestructure en Linux 6 - Parte II

En el artículo anterior pudimos configurar una Maquina Virtual con Oracle Linux 6.
Con esa misma máquina explicare paso a paso como es que se debe de configurar e instalar la Infraestructura Grid 12c en un servidor.

Antes de empezar con la instalación siempre recomiendo:
-  Revisar las guías de instalación publicadas por Oracle.
-  Revisar si el Sistema Operativo se encuentra actualizado para soportar la instalación de Oracle12c
-  Revisar que los requerimientos de Hardware y Software mínimos.


Con estos pasos previos revisados podemos proceder con la configuración e instalación.

 I.       Configuración del servidor
Iniciaremos con la configuración del servidor y los discos, previo a la instalación de la Infraestructura Grid.

Paso 1:  Revisión de Hardware y espacio en disco.
1.1       Revisamos la memoria del servidor.

[root@oracle12c ~]#  grep MemTotal /proc/meminfo
MemTotal:        4194304 kB
[root@oracle12c ~]# grep SwapTotal /proc/meminfo
SwapTotal:       3144700 kB


1.2       Revisamos el espacio para la instalación de la Infraestructura Grid.  Para Linux es necesario:
-  6.9Gbs de espacio
-  1Gbs de espacio en el /tmp

Todo lo instalaremos en el Filesytem /u01

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              12G  2.9G  8.1G  27% /
tmpfs                 1.6G     0  1.6G   0% /dev/shm
/dev/sda1             339M   54M  268M  17% /boot
/dev/sdc1             2.0G   36M  1.9G   2% /tmp
/dev/mapper/oracleVG-oracleLV
                       29G  173M   27G   1% /u01


Paso 2:  Revisión de Software en el Sistema Operativo.
2.1       Revisamos del Kernel del Sistema Operativo.  Se debe tener las siguientes configuración de Kernel como mínimo.

Sistema Operativo
Kernel
Oracle Linux 6
2.6.39-200.24.1.el6uek.x86_64
Red Hat Linux 6
2.6.32-71.el6.x86_64

[root@oracle12c ~]# uname -a
Linux oracle12c.oracle.com 2.6.39-200.24.1.el6uek.x86_64 #1 SMP Sat Jun 23 02:39:07 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

2.2       Revisamos los paquetes necesarios para instalar la Infraestructura Grid.
Los paquetes para Oracle Linux 6 son:

binutils-2.20.51.0.2-5.11.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (i686)
gcc-4.4.4-13.el6 (x86_64)
gcc-c++-4.4.4-13.el6 (x86_64)
glibc-2.12-1.7.el6 (i686)
glibc-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (i686)
ksh
libgcc-4.4.4-13.el6 (i686)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (i686)
libstdc++-devel-4.4.4-13.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6 (i686)
libaio-0.3.107-10.el6 (x86_64)
libaio-0.3.107-10.el6 (i686)
libaio-devel-0.3.107-10.el6 (x86_64)
libaio-devel-0.3.107-10.el6 (i686)
libXext-1.1 (x86_64)
libXext-1.1 (i686)
libXtst-1.0.99.2 (x86_64)
libXtst-1.0.99.2 (i686)
libX11-1.3 (x86_64)
libX11-1.3 (i686)
libXau-1.0.5 (x86_64)
libXau-1.0.5 (i686)
libxcb-1.5 (x86_64)
libxcb-1.5 (i686)
libXi-1.3 (x86_64)
libXi-1.3 (i686)
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)

Para poder verificar si un paquete está instalado o no utilizamos el siguiente comando.

[root@oracle12c ~]# rpm -qa | grep libgcc
libgcc-4.4.6-4.el6.x86_64
libgcc-4.4.6-4.el6.i686

Si un paquete no se encuentra instalado, podemos obtenerlo del DVD o ISO del Oracle Linux 6 e instalarlo.,

[root@oracle12c Packages]# rpm -ivh libaio-devel-0.3.107-10.el6.x86_64.rpm
warning: libaio-devel-0.3.107-10.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                ########################################### [100%]
   1:libaio-devel           ########################################### [100%]

[root@oracle12c Packages]# rpm -ivh ksh-20100621-16.el6.x86_64.rpm
warning: ksh-20100621-16.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                ########################################### [100%]
   1:ksh                    ########################################### [100%]


Paso 3:  Creación de usuario y grupos de usuario en el Sistema Operativo.
3.1       Creamos los grupos de usuarios necesarios para la instalación de la Infraestructura Grid.
Los grupos que debemos de crear son:
-  OINSTALL
-  ASMDBA
-  ASMOPER
-  ASMADMIN
-  DBA
-  OPER
-  BACKUPDBA   (Nuevo en Oracle 12c)
-  DGDBA            (Nuevo en Oracle 12c)
-  KMDBA            (Nuevo en Oracle 12c)

[root@oracle12c Packages]# groupadd oinstall
[root@oracle12c Packages]# groupadd asmdba
[root@oracle12c Packages]# groupadd asmoper
[root@oracle12c Packages]# groupadd asmadmin
[root@oracle12c Packages]# groupadd dba
[root@oracle12c Packages]# groupadd oper
[root@oracle12c Packages]# groupadd backupdba
[root@oracle12c Packages]# groupadd dgdba
[root@oracle12c Packages]# groupadd kmdba

3.2       Creamos el usuario oracle con el grupo oinstall como grupo principal y los demás grupos, como secundarios.

[root@oracle12c Packages]# useradd -g oinstall -G asmdba,asmoper,asmadmin,dba,oper,backupdba,dgdba,kmdba oracle

3.3       Le asignamos un password al usuario oracle.

[root@oracle12c Packages]# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.


Paso 4:  Configuración de archivos en el Sistema Operativo.
4.1       Definimos el nombre del servidor en el archivo /etc/hosts

[root@oracle12c Packages]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.68.1.20     oracle12c.oracle.com    oracle12c


4.2       Definimos los limites para el usuario oracle en el archivo /etc/security/limits.conf

[root@oracle12c Packages]# cat /etc/security/limits.conf
#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240


4.3       Definimos los parámetros de Kernel en el archivo /etc/sysctl.conf
Se recomiendan los siguientes valores

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586


4.4       Creamos el directorio para el ORACLE_HOME

[root@oracle12c Packages]# mkdir -p /u01/app/oracle
[root@oracle12c Packages]# chown -R oracle:oinstall /u01
[root@oracle12c Packages]# chmod -R 775 /u01


El servidor está listo para poder empezar con la instalación.  Ahora configuraremos los discos para crear diskgroups en la Infraestructura Grid.



II.       Configuración de discos para ASM
Voy a explicar la configuración cuando los discos son presentados con y sin Multipath.


Paso 1:  Configuración de Discos con SinglePath.
1.1       Formateamos los discos.

[root@oracle12c ~]# fdisk /dev/sde

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610):
Using default value 2610

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 [root@oracle12c ~]# fdisk /dev/sdf

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1958, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1958, default 1958):
Using default value 1958

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

1.2       Idenfiricamos el SCSI ID de cada disco para poder definirlo en el archivo udev.

[root@oracle12c ~]# scsi_id -g -u -d /dev/sde
1ATA_VBOX_HARDDISK_VBc2e9f33f-4b7196dc
[root@oracle12c ~]# scsi_id -g -u -d /dev/sdf
1ATA_VBOX_HARDDISK_VBac84ae48-118b1e5b

1.3           Para este ejercicio no utilizamos ASMLIB por lo que debemos de definir los permisos de cada disco en un archivo udev: /etc/udev/rules.d/99-oracle-asmdevices.rules
A cada disco se le entregara un alias que sera definido en la variable NAME

[root@oracle12c dev]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBc2e9f33f-4b7196dc", OWNER="oracle", GROUP="asmadmin", MODE="0660"

KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBac84ae48-118b1e5b", OWNER="oracle", GROUP="asmadmin", MODE="0660"

1.4       Realizamos pruebas sobre los discos que hemos configurado

[root@oracle12c etc]# udevadm test /block/sde/sde1
run_command: calling: test
udevadm_test: version 147

[root@oracle12c etc]# udevadm test /block/sdf/sdf1
run_command: calling: test
udevadm_test: version 147

1.5       Reiniciamos el servicio udev

[root@oracle12c dev]# /sbin/udevadm control --reload-rules
[root@oracle12c dev]#  /sbin/start_udev
Starting udev:                                             [  OK  ]



Paso 2:  Configuración de Discos con Multipath.
Para nuestro ejemplo se nos ha asignado las siguientes rutas de Multhipath.

[root@oracle12c ~]# for i in `cat /proc/partitions | awk '{print $4}' |grep dm`; do echo "### $i: `/lib/udev/scsi_id --whitelisted --device=/dev/$i`"; done

### dm-2: 360002ac0000000000000001f0000361b
### dm-3: 360002ac000000000000000200000361b


2.1       Revisamos que se hayan registrado correctamente en el archivo /etc/multipath.conf

[root@oracle12c ~]# cat /etc/multipath.conf

multipaths {
     multipath {
            wwid 360002ac0000000000000001f0000361b
            alias mpathb
            path_grouping_policy failover
        }
  
        multipath {
            wwid 360002ac000000000000000200000361b
            alias mpathc
            path_grouping_policy failover
        }

}

2.2       Reiniciamos el servicio de Multipath para que se puedan observar los discos.

[root@oracle12c ~]# service multipathd stop
Stopping multipathd daemon:                                [  OK  ]
[root@oracle12c ~]# service multipathd start
Starting multipathd daemon:                                [  OK  ]

2.3       Revisamos la configuración de los discos Multipath

[root@pelnx98 mapper]# multipath -ll
mpathc (360002ac000000000000000200000361b) dm-3 3PARdata,VV
size=350G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 1:0:0:1  sdf  8:32   active ready running
  |- 1:0:1:1  sdg  8:208  active ready running
  |- 2:0:0:1  sdh  65:128 active ready running
  `- 2:0:1:1  sdi 66:48  active ready running
mpathb (360002ac0000000000000001f0000361b) dm-2 3PARdata,VV
size=350G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 1:0:0:0  sdj  8:16   active ready running
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 1:0:1:0  sdk  8:192  active ready running
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 2:0:0:0  sdl  65:112 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 2:0:1:0  sdm 66:32  active ready running

2.4       Una vez configurados los discos Multipath, procedemos a asignarles los permisos correctos en el archivo /etc/udev/rules.d/12-dm-permissions.rules

#cat /etc/udev/rules.d/12-dm-permissions.rules
ENV{DM_NAME}=="mpathbp1", OWNER:="oracle", GROUP:="oinstall", MODE:="660"
ENV{DM_NAME}=="mpathcp1", OWNER:="oracle", GROUP:="oinstall", MODE:="660"


Una vez configurados los discos procedemos a Instalar la infraestructura Grid.


III.       Instalación de Infraestructura Grid

Paso 1: Copiamos los instaladores en el servidor, nos conectamos con el usuario oracle y descomprimimos los instaladores.

[oracle@oracle12c Install]$ ls -l
total 1908280
-rw-r--r--. 1 oracle oinstall 1750478910 Jun 27  2013 linuxamd64_12c_grid_1of2.zip
-rw-r--r--. 1 oracle oinstall  201673595 Jun 27  2013 linuxamd64_12c_grid_2of2.zip

[oracle@oracle12c Install]$ unzip linuxamd64_12c_grid_1of2.zip
[oracle@oracle12c Install]$ unzip linuxamd64_12c_grid_2of2.zip


Paso 2:  Abrimos una sesión de VNC.  Pueden utilizar la herramienta grafica que más te acomoda.


[oracle@oracle12c ~]$ vncserver

You will require a password to access your desktops.

Password:
Verify:
xauth:  creating new authority file /home/oracle/.Xauthority

New 'oracle12c.oracle.com:1 (oracle)' desktop is oracle12c.oracle.com:1

Creating default startup script /home/oracle/.vnc/xstartup
Starting applications specified in /home/oracle/.vnc/xstartup
Log file is /home/oracle/.vnc/oracle12c.oracle.com:1.log



Paso 3:  Desde la sesión de VNC procedemos a lanzar el Instalador del Grid Infraestructure

[oracle@oracle12c Install]$ cd grid/
[oracle@oracle12c grid]$ ls
install  response  rpm  runcluvfy.sh  runInstaller  sshsetup  stage  welcome.html
[oracle@oracle12c grid]$ ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 1877 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 3070 MB    Passed
Checking monitor: must be configured to display at least 256 colors
    >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.    Failed <<<<

Some requirement checks failed. You must fulfill these requirements before

continuing with the installation,

Continue? (y/n) [n] y


>>> Ignoring required pre-requisite failures. Continuing...
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-10-06_04-19-30AM. Please wait ...



Paso 4: Como nuestro servidor no tendrá conexión a internet para poder conectarse a Oracle Support. Elegimos la opción Skip software updates


























Paso 5: Instalaremos la Infraestructura Grid para utilizar Oracle ASM. Elegimos la opción Install and Configure Oracle Grid Infraestructure for a Standalone Server


























Paso 6: Seleccionamos el idioma a instalar.




























Paso 7: Creamos el primer Diskgroup DG_DATA (Redundancia External) con uno de los discos configurados anteriormente /dev/sde1.


























Paso 8: Configuramos el password para las cuentas administradoras del ASM 12c


























Paso 9: Configuramos los grupos de sistema Operativo para cada función de ASM


























Paso 10: Definimos los directorios para el ORACLE_BASE y ORACLE_HOME


























Paso 11: Definimos los directorios para el OraInventory.  Esto solo aparece si es el primer producto Oracle Instalado en dicho servidor.


























Paso 12: En Oracle 12c tenemos la nueva opción de poder configurar el password del ROOT o un sudo para poder ejecutar los scripts de instalación finales sin necesidad de pedirle al administrador del SO.


























Paso 13: Revisamos si existe algún pre-requisito faltante.

























Paso 14: Revisamos la configuración seleccionada antes de la instalación.


























Paso 15: Para los que no configuraron el paso 11, van a tener que lanzar manualmente los scripts con ROOT.



























Cuando se ejecuta el script root.sh se configurará la infraestructura Grid para Un servidor Stand Alone.

[root@oracle12c ~]#  /u01/app/oracle/product/12.1.0/grid/root.sh
Performing root user operation for Oracle 12c

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.1.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/app/oracle/product/12.1.0/grid/crs/install/crsconfig_params
LOCAL ADD MODE
Creating OCR keys for user 'oracle', privgrp 'oinstall'..
Operation successful.
LOCAL ONLY MODE
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4664: Node oracle12c successfully pinned.
2014/10/06 04:36:15 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.conf'


oracle12c     2014/10/06 04:36:35     /u01/app/oracle/product/12.1.0/grid/cdata/oracle12c/backup_20141006_043635.olr
2014/10/06 04:37:29 CLSRSC-327: Successfully configured Oracle Grid Infrastructure for a Standalone Server

Paso 16: Finalizamos la instalacion de la Infraestructura Grid 12c.


























Paso 17: Verificamos que el ASM 12c se encuentre correctamente configurado.

[oracle@oracle12c ~]$ ps -ef | grep pmon
oracle    2197     1  0 16:45 ?        00:00:00 asm_pmon_+ASM
oracle    2401  2370  0 17:01 pts/0    00:00:00 grep pmon
 [oracle@oracle12c ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sun Oct 12 17:01:50 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Automatic Storage Management option

SQL>  set linesize 200
select GROUP_NUMBER,NAME, STATE,TYPE,TOTAL_MB,FREE_MB,USABLE_FILE_MB from v$asm_diskgroup;SQL>

GROUP_NUMBER NAME                           STATE       TYPE     TOTAL_MB    FREE_MB USABLE_FILE_MB
------------ ------------------------------ ----------- ------ ---------- ---------- --------------
           1 DG_DATA                        MOUNTED     EXTERN      20473      20411          20411


De esta forma finalizamos la instalación de la Infraestructura Grid 12c.  En el siguiente Articulo terminare con la instalación del motor de Base de datos Oracle 12c.


Espero les sirva.

11 comentarios:

  1. Jorge.

    Antes que nada felicitarte por los post son de gran ayuda.

    Tengo una consulta sobre el Paso 2: Configuración de Discos con Multipath. seguí los pasos al detalle, pero al ejecutar la sentencia:
    for i in `cat /proc/partitions | awk '{print $4}' |grep dm`; do echo "### $i: `/lib/udev/scsi_id --whitelisted --device=/dev/$i`"; done

    me sale lo siguiente:
    ### dm-0:
    Tu ayuda al respecto para poder configurar el archivo multipath.conf no se que valor colocar en la parte "wwid".


    saludos,
    Giomar Ch. E.

    ResponderBorrar
  2. Hola Giomar
    Gracias por seguir mi blog.
    El comando que mando es mas que todo para descubrir los discos multipath con nombre de particion dm-##
    Lo que puedes hacer es tambien lanzar el siguiente comando:

    #multipath -l | grep (nombre disco)

    De esta manera podras obtener el ID del disco que necesitas.
    Saludos

    ResponderBorrar
  3. Hola Jorge buenas tardes , felicidades por tu blog muy completo y práctico.

    ResponderBorrar
    Respuestas
    1. Muchas Gracias por tus palabras !! me ayudan a seguir adelante.

      Borrar
  4. Buen día Jorge. Como puedo solucionar mi problema con el grid, tengo 2 nodos, pero en el primero si funciono y en el 2do nodo me da error.

    The root script cannot proceed on this node because either the first-node operations have not completed on node.

    Que podra ser mi problema. Ya se le aplico un parche de Oracle pero no funciona.

    ResponderBorrar
  5. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
    Respuestas
    1. Gracias Alvaro, Si es posible tener ambas versiones de BD sobre la IG 12c. Pero te recomendaria solo hasta la 11.2.0.3.
      Versiones mas antiguas ya traen problemas con el version 12c GI

      Borrar
  6. Hola Jorge, excelente tu blog, te agradecería me pudieses colaborar con los requisitos para la instalación de Oracle 12c sobre Windows, pero que no sean los mínimos sino los recomendados, gracias por tu colaboración.

    ResponderBorrar
    Respuestas
    1. HOla Evelyn
      Muchas gracias por tu comentario.
      Cuentame sobre que version de windows quieres instalar Oracle 12c.

      Saludos

      Borrar
  7. Hola de nuevo Jorge, tengo una duda cuando ejecuta rpm -qa | grep libgcc

    no se muestra la librería: libgcc-4.4.6-4.el6.i686, como la adiciono o no es necesario instalarlo.

    ResponderBorrar
    Respuestas
    1. Hola Jose Luis
      Si no te aparece quiere decir que no esta instalada. Lo que debes hacer es montar el ISO de Oracle Linux (o RedHat) y buscar el rpm necesario para instalar.
      Podrías configurar el comando YUM con el ISO montado para instalaciones mas rápidas.
      Me avisas cualquier cosa.

      Borrar