Blog interesante: Andrew Reid.

Hace poco he descubierto el blog de Andrew Reid que no conocía y me ha parecido muy interesante. He leído algunos artículos y tienen muy buena pinta. Trata tanto temas de rendimiento como asuntos de administración, con scripts detallados y tests hechos a conciencia!

Totalmente recomendable!!

Si quieres conocer más sobre el trabajo de Andrew en la red, quizás quieras echarle un ojo a su blog en inglés: http://international-dba.blogspot.com.es/

Instalación Oracle Grid Control 11g para Solaris/Linux plataforma 64bit.

INGREDIENTES:

  • Java versión 1.6u18  (Descargar del archivo histórico de versiones antiguas de Java)

NOTA: En Solaris es necesario descargar el bundle de JDK 32bit y las librerías de 64bit.
Java SE Development Kit 6u18
 jdk-6u18-solaris-sparcv9.sh
Java SE Development Kit 6u18
 jdk-6u18-solaris-sparcv9.tar.Z

  • Weblogic 10.3.2 (Descargar del archivo histórico de versiones de Weblogic)

  • Oracle11gR2 (11.2.0.2)
  • Oracle Grid Control 11.1.0.1

PASOS A SEGUIR:



1.- Instale la versión de java en un directorio a su gusto, y compruebe la versión.


oracle@leg93uxgrid:~$ /u01/app/oracle/java/jdk1.6.0_18/bin/java -version
java version “1.6.0_18”
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Server VM (build 16.0-b13, mixed mode)
2.- Tras comprobar con un xclock que las Xwindows están habilitadas, ejecute el weblogic invocando el java recién instalado.


oracle@leg00uxgrid:~$ /u01/app/jdk-6u18/jdk1.6.0_18/bin/java -d64 -jar /software/wls1032_generic.jar
Extracting 0%……………………………………………………………………….100%
2.1.- Escoger “Typical” con las opciones por defecto.
2.2.- En la última pantalla “Installation Complete” DESACTIVAR la opción de “Run Quickstar”.
2.3.- Done.
4.- SOLO EN LINUX. Instalar el parche de Weblogic WDJ7
oracle@leg00uxgrid:~$ /u01/app/Middleware/utils/bsu/bsu.sh
5.- Verifique los parches e instale el software de Oracle11g.
6.- Cree una base de datos para el respositorio del Grid Control.
                6.1.- Escoger el modo “Personalizado” y desmarcar la opción “Configure Enterprise Manager”.
                6.2.- En el apartado de componentes, desmarcar “Enterprise Manager Repository”.
                6.3.- Definir los parámetros de procesos a más de 500 y session_cachad_cursors a 550
                6.4.- Aumentar el datafile de UNDO a 2Gb
7.- Desactivar dbconsole y el repositorio de Enterprise Manager de la base de datos recién creada en caso de que exista (al haber ejecutado incorrectamente el paso 6.1).
oracle@leg93uxgrid:~$ emca -deconfig dbcontrol db -repos drop
STARTED EMCA at 13/06/2011 13:17:30
EM Configuration Assistant, Version 11.2.0.0.2 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.
Enter the following information:
Database SID: omsgrid
Listener port number: 1521
Password for SYS user: 
Password for SYSMAN user: 
———————————————————————-
WARNING : While repository is dropped the database will be put in quiesce mode.
———————————————————————-
Do you wish to continue? [yes(Y)/no(N)]: y


8.- Habilitar el usuario DBSNMP.


SQL> alter user DBSNMP account unlock;
User altered.
SQL> alter user DBSNMP identified by grid13c1sa;
User altered.
9.-  Instalar Oracle Enterprise Manager Grid Control 11g.

Etiquetado de discos para ASM en Solaris.

* Con la ayuda de Sergio Ramírez en la parte de Solaris. Muchísimas gracias, compañero!.

Cuando he tenido que etiquetar discos en linux para que el ASM los reconozca para candidatos, la librería asmlib me lo ha puesto muy fácil, pues solamente era necesario marcar los discos de la siguiente forma.

[root@host Server]# /etc/init.d/oracleasm createdisk ASMDISK1_DATA /dev/mapper/racdb_asm1
Marking disk “ASMDISK1_DATA” as an ASM disk:               [  OK  ]

[root@host Server]# /etc/init.d/oracleasm createdisk ASMDISK1_FRA  /dev/mapper/racdb_asm2
Marking disk “ASMDISK1_FRA” as an ASM disk:                [  OK  ]

[root@cun0401 Server]# /etc/init.d/oracleasm listdisks
ASMDISK1_DATA
ASMDISK1_FRA
Pero esta librería no está disponible para Solaris y el proceso de etiquetar los discos para que ASM los vea como candidatos no resulta tan evidente como se describe en la documentación de instalación de grid en Solaris.
En concreto, una vez los discos están visibles y los dispositivos son del propietario grid:dba , en el comando format hay que modificar los volúmenes tal como se muestra.
root@host:~$ format
Searching for disks…done 

AVAILABLE DISK SELECTIONS:
       0. c0t0d0
          /pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0
       1. c0t1d0 Solaris
          /pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0
       2. c2t600A0B800029B03400001B474BE28D9Bd0
          /scsi_vhci/ssd@g600a0b800029b03400001b474be28d9b
       3. c2t600A0B800029B034000022A64DB65A53d0
          /scsi_vhci/ssd@g600a0b800029b034000022a64db65a53   –> Este es el disco a añadir
       4. c2t600A0B800029B034000020104C43B3C1d0
          /scsi_vhci/ssd@g600a0b800029b034000020104c43b3c1
       5. c2t600A0B800029B034000021104C612E6Dd0
          /scsi_vhci/ssd@g600a0b800029b034000021104c612e6d
       6. c2t600A0B8000269A3200007F3F4BE25284d0
          /scsi_vhci/ssd@g600a0b8000269a3200007f3f4be25284
       7. c2t600A0B8000269A32000084B24CC8D1D5d0
          /scsi_vhci/ssd@g600a0b8000269a32000084b24cc8d1d5
       8. c2t600A0B8000269A32000084C74CD0F3D2d0
          /scsi_vhci/ssd@g600a0b8000269a32000084c74cd0f3d2
       9. c2t600A0B8000269A320000802A4BF3820Ad0
          /scsi_vhci/ssd@g600a0b8000269a320000802a4bf3820a
      10. c2t600A0B8000269A320000834C4C439596d0
          /scsi_vhci/ssd@g600a0b8000269a320000834c4c439596
      11. c2t600A0B8000269A320000834F4C43960Fd0
          /scsi_vhci/ssd@g600a0b8000269a320000834f4c43960f
Specify disk (enter its number): 3 –> corresponde al identificador del disco a añadir
Select partitioning base:
        0. Current partition table (original)
        1. All Free Hog
Choose base (enter number) [0]? 1   –> para modificarlas todas las particiones



 Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0                0         (0/0/0)             0
  1       swap    wu       0                0         (0/0/0)             0
  2     backup    wu       0 – 51197      100.00GB    (51198/0/0) 209707008
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6        usr    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0


Do you wish to continue creating a new partition
table based on above table[yes]? Yes  -> Confirmamos que deseamos crear nuestras particiones.
Free Hog partition[6]? 7  -> Determina que partición es la que almacena el espacio libre
Enter size of partition ‘0’ [0b, 0c, 0.00mb, 0.00gb]: 500mb  -> En la partición 0 definimos un tamaño de 500mb la que necesita ASM para su gestión.
Enter size of partition ‘1’ [0b, 0c, 0.00mb, 0.00gb]:    
Enter size of partition ‘3’ [0b, 0c, 0.00mb, 0.00gb]:
Enter size of partition ‘4’ [0b, 0c, 0.00mb, 0.00gb]:
Enter size of partition ‘5’ [0b, 0c, 0.00mb, 0.00gb]:
Enter size of partition ‘6’ [0b, 0c, 0.00mb, 0.00gb]: 99.50gb  -> Configuramos el resto del tamaño en una de las particiones
Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 –   249      500.00MB    (250/0/0)     1024000
  1       swap    wu       0                0         (0/0/0)             0
  2     backup    wu       0 – 51197      100.00GB    (51198/0/0) 209707008
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6        usr    wm     250 – 51193       99.50GB    (50944/0/0) 208666624
  7 unassigned    wm   51194 – 51197        8.00MB    (4/0/0)         16384
Okay to make this the current partition table[yes]? Yes  -> Confirmamos que esta correcto tal cual la hemos definido
Enter table name (remember quotes): “asm”  -> Le ponemos un nombre al modelo de configuración de la tabla, para posteriores discos para la ASM del mismo tamaño.

Ready to label disk, continue? yes
partition> q –> salimos del menú de partición
FORMAT MENU:
        disk       – select a disk
        type       – select (define) a disk type
        partition  – select (define) a partition table
        current    – describe the current disk
        format     – format and analyze the disk
        repair     – repair a defective sector
        label      – write label to the disk
        analyze    – surface analysis
        defect     – defect list management
        backup     – search for backup labels
        verify     – read and display labels
        save       – save new disk/partition definitions
        inquiry    – show vendor, product and revision
        volname    – set 8-character volume name
        !     – execute , then return
        quit
format> verify  -> Mediante el comando verify comprobamos que esta correcto.
Primary label contents:
Volume name = <        >
ascii name  =
pcyl        = 51200
ncyl        = 51198
acyl        =    2
nhead       =   64
nsect       =   64
Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 –   249      500.00MB    (250/0/0)     1024000
  1       swap    wu       0                0         (0/0/0)             0
  2     backup    wu       0 – 51197      100.00GB    (51198/0/0) 209707008
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6        usr    wm     250 – 51193       99.50GB    (50944/0/0) 208666624
  7 unassigned    wm   51194 – 51197        8.00MB    (4/0/0)         16384

format> q


Ahora, desde la interfaz gráfica (asmca) o desde sqlplus, Oracle es capaz de identificar los discos como candidatos para añadirlos al diskgroup ASM que corresponda.


-bash-3.00$ sqlplus / as sysasm


SQL> select path, name from v$asm_disk;


PATH                                               NAME
————————————————– ——————————
/dev/did/rdsk/d9s6
/dev/did/rdsk/d9s7
/dev/did/rdsk/d9
/dev/did/rdsk/d4s6                                 RECOVERY_0000
/dev/did/rdsk/d22s6                                DATOS_0001
/dev/did/rdsk/d18s6                                OCRVOTING_0000
/dev/did/rdsk/d19s6                                OCRVOTING_0001




Al aparecer los tres nuevos volúmenes como candidatos, ya es posible añadir el disco al diskgroup desde sqlplus conectado como SYSASM.


SQL> alter diskgroup DATOS add disk ‘/dev/did/rdsk/d9s6’;


SQL> select path, name from v$asm_disk;
PATH                                               NAME
————————————————– ——————————
/dev/did/rdsk/d9s7
/dev/did/rdsk/d9
/dev/did/rdsk/d4s6                                 RECOVERY_0000
/dev/did/rdsk/d9s6                                 DATOS_0000
/dev/did/rdsk/d22s6                                DATOS_0001
/dev/did/rdsk/d18s6                                OCRVOTING_0000
/dev/did/rdsk/d19s6                                OCRVOTING_0001

Mapa Mental 1: Oracle 10g RAC en Linux

En la instalación de un RAC sobre Linux es preciso tener en cuenta las características de la plataforma a los siguientes niveles:

1.- Red. ¿Existen tarjetas de red para conexiones privadas y públicas en todos los nodos? Es preciso configurarlas correctamente para que el cluster pueda manejar las tres direcciones (pública, privada y virtual). ¿Hay redundancia en las tarjetas? ¿está configurado correctamente el bonding?

2.- Almacenamiento. ¿ASM o OCFS2? O uno, u otro. Nunca los dos o una combinación de ambos en el mismo sistema, ya que puede llevar a conflictos. ¿Hay multipath? El almacenamiento con controladoras redundantes debe configurarse correctamente para evitar desastres.

3.- Sistema. ¿Todos los parches están instalados? ¿los parámetros de kernel y límites de sesión están definidos de forma persistente? ¿los privilegios sobre los dispositivos de almacenamiento tienen privilegios sobre root y oracle como corresponde?

Mapa mental 1: estrella

Quizás en estos casos pueda ayudar el siguiente mapa mental, a modo de guía paso a paso, adaptándolo a la plataforma y las características del entorno a instalar.

Mapa mental 2: vertical

Los procesos del mapa al detalle
·  Verificar red public y privada
o Ejecutar /sbin/ifconfig
El resultado debe ser dos tarjetas de red visibles, una con la dirección publica y otra con la privada (mas el tcploopback)
§ Configuración Bonding
Cuando hay redundancia de tarjetas es importante conocer la configuración de bonding para hacer referencia a las tarjetas virtuales y no a las físicas.
§ Configuración interconnect
El interconnect debe estar configurado correctamente para las pruebas de caída de servidores. Los switches deben contemplar las posibles caídas y sus enrutamientos.
o Registrar entradas /etc/hosts
Hay que añadir las direcciones IP para publica, privada y virtual.

La ip virtual no será visible hasta que los servicios de cluster se inicien con el vipca al final de la instalación del clusterware.

o Ping entradas /etc/hosts
Ping a los alias públicos y privados, con y sin nombre de dominio
·  Configurar storage
o Crear particiones con /sbin/fdisk
Crear particiones para OCR, voting y rawdevices para ASM.

Minimo:
120 Mb para OCR x 2
20 Mb para voting x 3

Si no se crean particiones, los discos deben estar preparados, así como sus dispositivos.

o Editar /etc/sysconfig/rawdevices
o Asignar privilegios a los rawdevices
Los dispositivos deben pertenecer al usuario Oracle y tener 660 (ocr) y 664 (voting)

Una vez creado el clusterware, los ocr pasaran a ser de root, y será necesario hacer persistentes los permisos al arranque en el fichero /etc/rc.d/rc.local

o Habilitar rawdevices nodo 1
o Propagar configuración nodo 2-3-x
El fichero /etc/sysconfig/rawdevices ha de propagarse al resto de nodos.

Una vez copiado el fichero, hay que actualizar la tabla de partición y habilitar los rawdevices en ese nodo.

services rawdevices start

o Los rawdevices están habilitados en todos los nodos
·  Crear grupos y usuarios
o Crear grupos dba y oinstall
o Crear usuario oracle
o chmod y chown a usuario
o Definir .bash_profile
o Configurar secure shell
Generar claves rsa y dsa para concatenar en todos los ficheros authorized_keys de los diferentes nodos.
o Comprobar ssh transparente entre nodos
·  Configuración OS
o Configuración Secure Shell
El usuario Oracle debe poder hacer ssh entre nodos sin necesidad de contraseña.
§ Crear claves rsa y dsa
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa

Los ficheros de $HOME/.ssh id_dsa.pub y id_rsa.pub de todos los nodos han de unirse en uno nuevo llamado authorized_keys, que se copiará a los directorios .ssh del usuario oracle para cada nodo.

§ Añadir hosts a known_hosts
En cada ssh el sistema preguntará para añadir ese nodo a la lista de know_hosts. Solo se preguntará esta vez y las siguientes conexiones serán transparentes.
§ Test ssh nodos /etc/hosts
o Configuración hangcheck-timer
Según notas 811306.1 y 726833.1
Es necesario añadir la línea

/sbin/modprobe hangcheck-timer hangcheck_tick=1 hangcheck_margin=10 hangcheck_reboot=1

Y hacer este cambio permanente al reinicio del servidor en /etc/rc.d/rc.local

o Configurar hugepages
Según nota 361468.1
Es necesario añadir la siguiente línea a /etc/security/limits.conf

* hard memlock 5243000
* soft memlock 5243000

o Configurar kernel
o Configurar limites shell
Los limites de shell han de hacerse permanentes en el inicio de sesión. Para ello, hay que añadir la siguiente línea a /etc/pam.d/login

session required /lib/security/pam_limits.so

o rda hcve para cada nodo
o Cluvfy
§ Chequeo hardware y OS
./runcluvfy.sh stage -post hwos -n nodo1,nodo2,nodoN – verbose
§ Chequeo conectividaf
./runcluvfy.sh comp nodecon -n nodo1,nodo2,nodoN – verbose
§ Chequeo usuario
./runcluvfy.sh comp admprv -n nodo1,nodo2,nodoN – verbose -o user_equiv
§ PreCheck configuración servicios de cluster
./runcluvfy.sh stage -pre crsinst -n nodo1,nodo2,nodoN -r 10gR2
·  Ejecutar runInstaller clusterware software
Definir variables de entorno para ORA_CRS_HOME
o Seguir nota 414163.1 en RHL5 para errores conocidos
Existen tres errores conocidos en la instalación de RAC 10.2.0.1 en RHL5

– ejecutar el runinstaller con -ignoreSysPrereqs
– editar vipca y svrctl para añadir la línea “unset LD_ASSUME_KERNEL”
– La ejecución de root.sh fallará en el ultimo nodo y habrá que ejecutar el vipca manualmente tras configurar las tarjetas de red con

/bin # ./oifcfg setif -global eth0/192.168.1.0:public
/bin # ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
/bin # ./oifcfg getif
eth0 192.168.1.0 global public
eth1 10.10.10.0 global cluster_interconnect

o Chequeo servicios
Ejecutar crs_stat -t

Los servicios de cluster deben estar arrancados.

o Instalar patchset 10.2.0.5 clusterware
Instalar la versión mas reciente del patchset.
Mucho mejor antes de que haya ASM y DB’s que deban pararse y parchearse.
·  Ejecutar runInstaller ASM software
Definir variables de entorno para ORA_ASM_HOME
o Instalar asmlib
Instalar librerias asmlib
o Configurar multipath para ASM
Seguir nota 564580.1 si hay redundancia de controladores de disco por multipath
o Creación de diskgroups
Crear dos diskgroups: uno para DATA y el otro para FRA

DG_DATA_1
DG_FRA_1

o Chequeo servicios
Ejecutar crs_stat -t

Los servicios de cluster deben estar arrancados incluyendo los de ASM.

o Instalar patchset 10.2.0.5 ASM
Instalar la versión mas reciente del patchset.
Mucho mejor antes de que haya ASM y DB’s que deban pararse y parchearse.
·  Ejecutar runInstaller DB software
Definir variables de entorno para ORACLE_HOME
o Crear bbdd RAC usando asm
Seguir nota 564580.1 si hay redundancia de controladores de disco por multipath
o Chequeo servicios
Ejecutar crs_stat -t

Los servicios de cluster deben estar arrancados incluyendo los de ASM y los de base de datos.

o Instalar patchset 10.2.0.5 ASM
Instalar la versión mas reciente del patchset.
Mucho mejor antes de que haya ASM y DB’s que deban pararse y parchearse.

Oracle Enterprise Manager. Ejemplo de uso.

Oracle Enterprise Manager (OEMGR) es una herramienta que permite monitorizar bases de datos Oracle mediante dos tipos de conexiones:
Standalone (o modo autónomo)
Mediante OMS (Oracle Management Server)

El modo Standalone funciona como una aplicación estándar cliente/servidor, mientras que la conexión a un OMS utiliza un repositorio intermedio con información global sobre las bases de datos registradas.

(ver el video en pantalla completa)

00:15 – Autentificación con el OMS.

00:30 – Packs de aplicaciones disponibles en OEMGR

01:00 – Conexión a una base de datos y cambios en la SGA (memória). Monitorización de sesiones.

02:00 – Monitorización y gestión de tablespaces. Añadir un datafile a un tablespace y visualización del SQL generado.

03:30 – Monitorización de varias bases de datos de forma global. Sobre estas bases de datos OEMGR permite implementar trabajos (jobs) y alertas que actuen ante cualquier cambio de interés a monitorizar.

03:55 – Creación de una alerta sobre una bbdd.

05:30 – La alerta, creada correctamente, hace visualizar en el mapa una bandera verde que confirma que todo funciona correctamente.

Clientes gratuitos. Clientes ligeros.

Uno de los principales problemas al desarrollar con PL/SQL sobre bases de datos es el uso de una buena herramienta de gestión del código. Los DBA’s estamos bastante acostumbrados a trabajar con SQL*Plus, la aplicación consola en modo texto, donde tecleamos con más o menos acierto el código SQL que necesitamos para ejecutar comandos de gestión.

No obstante, programar paquetes en PL/SQL donde puede haber miles de líneas de código, o ejecutar consultas sobre un número elevado de tablas, que pueden devolver un número también elevado de filas, implica necesitar un entorno un poco más cómodo para la programación de estos lenguajes contra la base de datos.

Todos los desarrolladores que conozco tienen predilección por Toad, de Quest Software. Lo entiendo. Es una de las mejores herramientas para desarrolladores y DBA’s que conozco. No obstante, es un cliente que lanza muchísimas consultas al diccionario por la gran cantidad de información que presenta y esto puede hacer que la aplicación funcione lenta al compilar, consultar dependencias de objetos y demás. Respecto al desarrollo, Toad no me parece la mejor aplicación para programar en PL/SQL.

Para los desarrolladores suelo recomendar PL/SQL Developer de Allround Automations. Mucho más ergonómica en la debugación, mayor comodidad en la gestión del código y, aunque no posea las herramientas de control de sesiones, comparación de base de datos o traceado de sesiones, lo cierto es que para el trabajo cotidiano del programador, la aplicación resulta mucho más cómoda.

No obstante, estas dos aplicaciones tienen un elevado coste de licencias que muchas empresas no pueden costearse. Mucho menos quien maneja Oracle para su aprendizaje, o programadores de otras áreas que puntualmente tienen que acceder a un servidor Oracle.

Para usuarios con una red lenta, que necesiten un cliente ligero o para programadores que únicamente necesiten ejecutar SQL plano a una base de datos, o para quienes no pueden permitirse licencias de Toad o PL/SQL Developer, aquí paso una relación de herramientas FREEWARE orientadas a plataformas Oracle y muy ligeras de instalar y ejecutar.

Query Reporter, de Allround Automations.

Se trata de una herramienta de SQL que genera los resultados en HTML. Muy cómoda, ligera y fácil de usar. El fabricante es el mismo que el de PL/SQL developer. Esta herramienta sería el “SQL Developer”. Puede descargarse directamente aquí.

DBDesigner4, de Fabforce.

Herramienta CASE de modelaje de bases de datos. Cómoda y funcional, genera el código del modelo casi sin retoques. En esta página es posible descargar el programa para Windows y para Linux. Además, incluye manuales disponibles en HTML y PDF.

SQL Tools for Oracle, de SQLTools.

Esta herramienta de código abierto me ha sorprendido por lo versátil que es. Tanto permite sin más problemas resolver un plan de ejecución de una query como extraer la sentencia DDL de creación de un objeto y navegar por todos los objetos y sus dependencias de un usuario concreto. Una herramienta muy bien resuelta, con tutoriales en PDF. Puede descargarse aquí.

DB Comp, de Funduc.

Sobre esta herramienta poco tengo que decir, ya que no la he probado, pero es gratuita y los comentarios que he leído mencionan que es bastante buena. Puede descargarse aquí.

Espero que estos enlaces puedan resultar de utilidad a más de uno.