martes, 9 de abril de 2013

Instalación de 11gR2 con ASM. Parte 1: Prerequisitos de Linux


Antes de instalar Oracle debemos realizar una serie de pasos previos, como creación de cuentas de usuario, grupos, cambios de parámetros del kernel. Se utilizará la documentación oficial de Oracle disponible en el sitio web de Oracle.
Para ello los pasos a seguir son:

1. Creación de cuentas de usuario para Oracle. Para ello con el usuario root debemos ejecutar lo siguiente:

# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/groupadd asmadmin
# /usr/sbin/groupadd asmdba
# /usr/sbin/useradd -g oinstall -G dba,asmdba oracle
# /usr/sbin/useradd -g oinstall -G asmadmin grid

Colocar una clave al usuario oracle y grid

# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

# passwd grid
Changing password for user grid.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

2. Creación de directorios para la instalación:

# mkdir -p /u01/app/grid

# mkdir -p /u01/app/11.2.0/grid

# chown -R grid:oinstall /u01



# mkdir -p /u01/app/oracle

# chown -R oracle:oinstall /u01/app/oracle

# chmod -R 775 /u01

3. Editar perfil de los usuarios oracle y grid:

3.1 Para el usuario oracle:

#su - oracle

$echo umask 022  >> $HOME/.bash_profile

$echo ORACLE_BASE=/u01/app/oracle >> $HOME/.bash_profile

$echo export ORACLE_BASE >>  $HOME/.bash_profile



3.2 Para el usuario grid:

#su - grid

$echo umask 022  >> $HOME/.bash_profile

$echo ORACLE_BASE=/u01/app/grid >>  $HOME/.bash_profile

$echo export ORACLE_BASE >> $HOME/.bash_profile

4.Instalación de paquetes necesarios para Oracle
Es necesario instalar paquetes de software. Ejecutar el siguiente comando desde el directorio que contiene los RPM's.

[root@laboracle ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       25G  2.6G   21G  12% /
/dev/sda1              99M   12M   83M  13% /boot
tmpfs                1014M     0 1014M   0% /dev/shm
/dev/hdc              2.6G  2.6G     0 100% /media/Enterprise Linux dvd 20080528



[root@laboracle ~]# cd /media/Enterprise\ Linux\ dvd\ 20080528/

[root@laboracle Enterprise Linux dvd 20080528]# cd Server

[root@laboracle Server]# rpm -Uvh elfutils-devel-0.125-3.el5.i386.rpm elfutils-libelf-devel-0.125-3.el5.i386.rpm elfutils-devel-static-0.125-3.el5.i386.rpm kernel-headers-2.6.18-92.el5.i386.rpm  glibc-headers-2.5-24.i386.rpm glibc-devel-2.5-24.i386.rpm libstdc++-devel-4.1.2-42.el5.i386.rpm libgomp-4.1.2-42.el5.i386.rpm gcc-4.1.2-42.el5.i386.rpm gcc-c++-4.1.2-42.el5.i386.rpm 

[root@laboracle Server]# rpm -Uvh libaio-devel-0.3.106-3.2.i386.rpm sysstat-7.0.2-1.el5.i386.rpm unixODBC-2.2.11-7.1.i386.rpm unixODBC-devel-2.2.11-7.1.i386.rpm 


5. Agregar (con root) las siguientes líneas al archivo /etc/sysctl.conf:


kernel.shmall=2097152
kernel.shmmax=2147483648
kernel.shmmni = 4096 
kernel.sem = 250 32000 100 128 
fs.file-max = 6815744
fs.aio-max-nr = 1048576
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 = 1048576 

Luego ejecutar un sysctl -p

6., Agregar las siguientes líneas al archivo /etc/security/limits.conf

oracle              soft    nproc   2047

oracle              hard    nproc   16384

oracle              soft    nofile  1024

oracle              hard    nofile  65536

oracle              soft    stack   10240

grid                soft    nproc   2047

grid                hard    nproc   16384

grid                soft    nofile  1024

grid                hard    nofile  65536

grid                soft    stack   10240

7. Agregar las siguientes líneas al final del archivo /etc/profile

 if [ $USER = "oracle" ]; then 
       if [ $SHELL = "/bin/ksh" ]; then 
                 ulimit -u 16384 
                 ulimit -n 65536 
            else 
                 ulimit -u 16384 -n 65536 
            fi 
        fi 


 if [ $USER = "grid" ]; then 
      if [ $SHELL = "/bin/ksh" ]; then 
                 ulimit -u 16384 
                 ulimit -n 65536 
            else 
                 ulimit -u 16384 -n 65536 
            fi 
        fi 

A continuación es necesario preparar los discos para su uso con ASM.

Instalación de 11gR2 con ASM. Parte 2: Preparar los discos para ASM

Ahora debemos preparar los discos para ASM, para ello debemos hacer lo siguiente:

1. Particionar cada disco con fdisk dejando solo una partición, para cada disco del sdb al sde:


# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x62be91cf.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

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-652, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): 
Using default value 652

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

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


2. Dejar los discos SCSI como dispositivos de confianza. Para ello debe:

#echo vendor="ATA",options=-p 0x80 > /etc/scsi_id.config
#echo options=-g >> /etc/scsi_id.config

3. Para cada uno de los discos creados se debe obtener su identificador SCSI

# for i in `cat /proc/partitions | awk '{print $4}' |grep sd | grep [a-z]$`; do echo "### $i: `scsi_id -g -u -s /block/$i`"; done

Debe ver algo similar a esto:



### sda: SATA_VBOX_HARDDISK_VBf7562d39-fb9f4f1b_ Dejar fuera este disco!!
### sdb: SATA_VBOX_HARDDISK_VBd8e148ea-e3b1eb8b_
### sdc: SATA_VBOX_HARDDISK_VB0a894ac9-66077e0d_
### sdd: SATA_VBOX_HARDDISK_VBc26174cb-8bc57532_
### sde: SATA_VBOX_HARDDISK_VB5f85214b-c743306f_


3. Crear un archivos de reglas udev para los dispositivos ASM, dejando los permisos en 0660 para el dueño de la instalación y el grupo unix que corresponde al administrador de grid infrastructure. Editar el archivo /etc/udev/rules.d/99-oracle-asmdevices.rules y agregar una línea por cada disco del sdb al sde con algo similar a esto: (ojo que va todo en una línea)


KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd8e148ea-e3b1eb8b_",NAME="DISCO1", OWNER="grid", GROUP="asmadmin", MODE="0660"


Esta línea debe ir una vez por cada disco, cambiando el campo RESULT por la etiqueta del disco obtenida en la salida del comando /sbin/scsi_id y en NAME se incrementa el número desde 1 al 4. Este será el nombre de disco para ASM.

Para cada disco del sdb al sde se debe ejecutar el siguiente comando para refrescar la tabla de particiones:

# /sbin/partprobe /dev/sdb1
# /sbin/partprobe /dev/sdc1
# /sbin/partprobe /dev/sdd1
# /sbin/partprobe /dev/sde1

Refrescamos los cambios realizados en los discos e iniciamos los servicios:

/sbin/udevcontrol reload_rules
# /sbin/start_udev

Chequeamos que los dispositivos aparezcan con el usuario grid como dueño:


[root@laboracle rules.d]# ls -al /dev/DISCO*
brw-rw---- 1 grid asmadmin 8, 17 Apr 16 10:58 /dev/DISCO1
brw-rw---- 1 grid asmadmin 8, 33 Apr 16 10:58 /dev/DISCO2
brw-rw---- 1 grid asmadmin 8, 49 Apr 16 10:58 /dev/DISCO3
brw-rw---- 1 grid asmadmin 8, 65 Apr 16 10:58 /dev/DISCO4


Ahora podemos comenzar a instalar Grid Infrastructure.

miércoles, 22 de agosto de 2012

Definición de políticas de complejidad de claves en E-business Suite R12

Por requerimientos de auditoria en mi trabajo, es necesario establecer políticas de seguridad para las claves de los usuarios. En concreto los requerimientos para las claves de usuario son:

1. Deben tener un largo mínimo de 6 caracteres
2. Deben ser alfanuméricas, sin caracteres consecutivos
3. Una clave no puede repetirse en los próximos 150 días
4. Cada 30 días caducan las contraseñas

Revisando en la documentación de R12 encontré la siguiene nota de MOS: How to Implement (Signon Password Custom) Profile Option in Oracle Applications 11i / R12 [ID 362663.1].

La nota es bastante buena pero para mi que recién vengo entrando al mundo del ERP me tomó más tiempo del necesario encontrar las opciones. Por ello decidí hacer algo más detallado en base a lo anterior.

La nota habla de cargar una clase java al ERP. Esta parte es sencilla y bastante detallada, solo tomé el código, lo guardé en un archivo AppsPasswordValidationCUS.java y seguí las instrucciones pero de todas formas las detallo a continuación: 

1. Una vez creado el archivo se carga al ERP:
    
     loadjava -user apps/apps -verbose -resolve -force AppsPasswordValidationCUS.java


2. Ejecutar adadmin para recompilar el esquema apps. Para ello ejecutamos adadmin, nos pedirá algunos datos de rutina como las claves de los usuarios SYSTEM y apps. Cuando estemos listo aparecerá el menú de adadmin. Elegimos la opción 3->1 para recompilar APPS




3.Ejecutamos el siguiente SELECT para chequear que la clase java se cargó en la base de datos sin problemas:

  SELECT dbms_java.longname(object_name), status   
  FROM user_objects
  WHERE object_type = 'JAVA CLASS' 
  AND dbms_java.longname(object_name) like '%AppsPasswordValidationCUS';

Si devuelve VALID estamos listos para pasar a la interfaz del ERP y establecer el nuevo validador de claves.

4. Actualizar la opción del perfil para aplicar la política de claves. Para esto ingresamos con sysadmin y entramos a System Administrator -> Profile -> System y buscamos el texto "%Signon%"



Acá veremos todas las opciones de perfil relacionadas a claves



5. Establecemos las opciones necesarias para nuestra validación de claves:

Signon Password Custom = oracle.apps.fnd.security.AppsPasswordValidationCUS
Signon Password No Reuse = 150 (días)



6. Para satisfacer el requerimiento de que las claves caduquen cada 30 días, debemos hacerlo por cada usuario en la opción System Administrator ->  Security : User -> Define



7. Y listo! A partir de ahora cada vez que el usuario cambie la clave se le exigirán las nuevas medidas de seguridad que definimos.

jueves, 5 de julio de 2012

Cambiar clave de APPS en R12

Cambio de clave de APPS en E-Business Suite 12


Estoy seguro de que esta situación es común para muchos DBA's... comenzamos con la Administración de Bases de datos Oracle y de repente un día llega un motor SQL Server y pasamos a ser administradores de ambos motores.. y así después se van agregando otras cosas en el camino. En mi camino apareció el E-Business Suite 12, el ERP de Oracle y mi labor es.. cambiar la clave del usuario APPS.
¿Cambio de clave?, debe ser trivial supuse... será un ALTER USER en la base de datos y listo!!.. nada más alejado de la realidad.
Resulta que esta tarea requiere de una herramienta específica.. el utilitario FNDCPASS. Ahora describiré los pasos necesarios para cambiar la clave. Usé como referencia la nota 437260.1 de Metalink


1. El ERP debe estar abajo para realizar el cambio de clave. Se recomienda no tener conexiones de usuarios a los cuales se les vaya a cambiar la clave.


2. Se recomienda respaldar las tablas FND_USER y FND_ORACLE_USERID.


3. Cargan las variables de ambiente. Si este fue configurado correctamente deberían ser visibles las variables de ruta necesarias.


En este ejemplo cambiaremos las claves de los esquemas APPS y APPLSYS. El comando a usar será:


FNDCPASS <logon> 0 Y <system/password> SYSTEM <username> <new_password>


Donde:
<logon>                      Es el usuario y clave Oracle, ej: apps/apps
<system/password> Son el usuario y claves del usuario system
<username>              Usuario de APPLSYS. Por lo general es APPLSYS
<new_password>     Nueva clave del APPS


Ahora realizaré este cambio en ambiente de testing:


Primero bajamos el ambiente, en mi caso la clave del apps es apps:


cd $ADMIN_SCRIPTS_HOME
sh adstpall.sh apps/apps




Chequeamos que los concurrentes estén abajo:


ps -fea | grep FN



En este caso aun siguen algunos concurrentes arriba. Esperamos a que ya no estén estos procesos y comenzamos con el cambio de clave:


FNDCPASS apps/apps 0 Y system/manager SYSTEM  APPLSYS  claveapps


Debemos obtener una salida como la siguiente:



Revisamos que no haya errores en los archivos de salida, si es así, ¡estamos listos!. Cambiemos la clave del resto de los usuarios:

FNDCPASS apps/claveapps 0 Y system/manager ALLORACLE clavetodos




Ahora subimos el ERP con la nueva clave de APPS:


Revisamos que el portal del ERP esté sin problemas y ¡listo!, nada traumático...









jueves, 8 de septiembre de 2011

Instalación de 11gR1

Bueno retomo el blog de bastante tiempo sin actualizarlo y para retomar continúo en donde nos quedamos: La instalación de Oracle 11g. Para ello lo primero es descomprimir el medio:

Para poder levantar el instalador debemos dar permisos sobre la interfaz X al usuario oracle. Para ello con root ejecutamos el comando xhost +:

[root@oracle ~]# xhost +
access control disabled, clients can connect from any host

Luego encontraremos una carpeta database, en esta ejecutamos el archivo runInstaller. Lo ejecutamos y se harán una serie de prerequisitos  luego de ello aparecerá el instalador de la base de datos:

[oracle@oracle database]$ ./runInstaller

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 80 MB.   Actual 10666 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 3359 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2011-09-08_12-11-02AM. Please wait ...

Seleccionamos la opción Advanced Installation y luego clic en Next.


Aparecerán el directorio sugerido para el inventario y el grupo de sistema operativo que se utilizará para oracle. Especificamos el directorio /u01/app/oraInventory y seleccionamos oinstall.


En la ventana siguiente el instalador le pedirá la ubicación del ORACLE_BASE y ORACLE_HOME. La primera ruta es la raiz para la instalación de productos Oracle. La segunda es la ruta donde estará instalado el software de la base de datos. Siempre el ORACLE_HOME está dentro del ORACLE_BASE.  Para nuestra instalación especificaremos:

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1


El instalador ya tiene todos los datos requeridos, ahora comprobará que todos los prerequisitos solicitados están OK. Todas las comprobaciones deben dar como resultado Succeeded, si es así damos clic en Next para continuar:


Instalaremos solo el software. Seleccionamos la tercera opción y Next


El instalador nos permitirá cambiar los grupos de sistema operativo para la base de datos y para ASM. Dejamos los valores sugeridos y clic en Next


Ahora podemos comenzar con la instalación:




Antes de finalizar es necesario  ejecutar dos scripts como usuario root. Estos scripts cambian algunos permisos en carpetas y generan el archivo /etc/oratab.



Ahora que la instalación ha finalizado exitosamente debemos cambiar el archivo .bash_profile del usuario oracle, para ello editar el archivo con gedit:

[oracle@oracle ~]$ gedit $HOME/.bash_profile





miércoles, 30 de marzo de 2011

Instalación de 11gR1 con ASM. Parte 2: Instalando ASM Libs

ASM viene a simplificar notoriamente las tareas de administración de la base de datos. Ya no es necesario que los DBAs nos quebremos el coco pensando en qué discos dejamos los datafiles, dividiendo índices grandes, tablas grandes y otros tantos criterios para distribuir los archivos y por consiguiente la carga de I/O en los discos.

Lo primero que haremos para comenzar a utilizar ASM es revisar nuestra configuración de discos duros en nuestra máquina. Revisamos los discos que tenemos disponibles ejecutando el siguiente comando:

ls /dev/sd*

Obtendremos una salida como la siguiente:

El dispositivo /dev/sda posee dos particiones: sda1 y sda2.
El resto de los discos está sin particionar. Debemos particionar cada uno de esos discos con fdisk
Ejecutamos el comando de la siguiente forma con cada disco:

[root@laboracle ~]# fdisk /dev/sdb

The number of cylinders for this disk is set to 1044.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n --> Acá responder n(ew)
Command action
   e   extended
   p   primary partition (1-4)
p --> Acá responder p(rimary)
Partition number (1-4): 1 --> Acá 1
First cylinder (1-1044, default 1): --> Presionar Enter para elegir valor por defecto
Using default value 1 --> Presionar Enter para elegir valor por defecto
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044): --> Presionar Enter para elegir valor por defecto
Using default value 1044

Command (m for help): w --> Acá responder w(rite) para escribir los cambios
The partition table has been altered!

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

Esto se debe hacer con cada disco desde el sdb al sde.

Instalación de ASM Libs
Para configurar ASM utilizaremos ASMLib. ASMLibs simplifica la utilización de discos sin tener que utilizar raw devices. Para saber qué versión de ASMLib necesitamos es necesario ejecutar el siguiente comando:

[root@laboracle ~]# uname -r
2.6.18-194.el5

Con esta salida debemos buscar los paquetes de rpm necesarios desde el sitio de Oracle. Pueden acceder haciendo clic acá. Clic en la sección de Red Hat 5:


En la página siguiente buscar la sección Intel IA32 (x86) Architecture:




Luego buscar los siguientes 3 paquetes:

Bajo de Libray and Tools:
  • oracleasm-support-2.1.4-1.el5.i386.rpm
  • oracleasmlib-2.0.4-1.el5.i386.rpm
Más abajo se debe buscar el siguiente paquete



Debe coincidir exactamente con la versión del kernel de nuestra máquina. Una vez que tenemos dichos paquetes, procedemos a instalarlos ejecutando el siguiente comando:

rpm -ivh oracleasm-2.6.18-194.el5-2.0.5-1.el5.i686.rpm  oracleasmlib-2.0.4-1.el5.i386.rpm oracleasm-support-2.1.4-1.el5.i386.rpm

Debemos obtener una salida como esta:


Ahora es necesario configurar ASM para que se cargue el módulo necesario en el kernel. Ejecutar el comando:

/etc/init.d/oracleasm configure

Debemos obtener algo similar a lo siguiente, respondiendo a las preguntas que se realizan para configurar ASM:

[root@laboracle ~]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.


This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.


Default user to own the driver interface []: oracle 
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]


Ahora podemos presentar nuestros discos a ASM. Para ello ejecutamos los siguientes comandos:

/etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
/etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
/etc/init.d/oracleasm createdisk VOL3 /dev/sdd1
/etc/init.d/oracleasm createdisk VOL4 /dev/sde1

Si todo va bien obtendremos algo como esto:

[root@laboracle ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
Marking disk "VOL1" as an ASM disk:                        [  OK  ]
[root@laboracle ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
Marking disk "VOL2" as an ASM disk:                        [  OK  ]
[root@laboracle ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd1
Marking disk "VOL3" as an ASM disk:                        [  OK  ]
[root@laboracle ~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sde1
Marking disk "VOL4" as an ASM disk:                        [  OK  ]

Para comprobar que están los discos presentados ejecutamos el siguiente comando:

/etc/init.d/oracleasm listdisks

Debemos obtener una salida como esta:


Ahora estamos en condiciones de instalar la base de datos con ASM.