Oracle Patch | Database Patch Apply 9352164 on RAC

10.2.0.4.4 Patch Set Update on RAC

Applying the 10.2.0.4.1 Patch Set Update (PSU)

Ante todo los saludos desde Argentina a todos mis compatriotas IberoAmericanos & Anglos.

Oracle Database Disk Structures

Oracle Database Disk Structures (Photo credit: Wikipedia)

Gracias a todos por lograr llegar a las 60.000 visitas este trimestre en curso.

Tambien a la Comunidad Oracle Hispana de la cual estoy orgulloso de ser miembro y donde he cosechado buenos amigos.

Estuve bastante ocupado con migraciones de versiones, instalaciones de cluster, aplicaciones de parches, etc y con ello anduve corto de tiempo.
Pero entre todos los articulos con material que tengo para escribir y publicar me decidi comenzar con este.
EL motivo del articulo es dar a conocer como implemente un PSU en un RAC con su Standby correspondiente tambien montada sobre un RAC.

En el proximo articulo estare explicando los motivos de la implementacion del mismo, ya que fue un caso muy particular.

Debio ser instalado como consecuencia de la aparicion de bugs, despues de haber aplicado el parche 7442260.

Espero que les sea de utilidad.

Problema:
========

Cuando instalamos el patch 7442260, nuestra rdbms comenzo arrojar varios errores ORA-07445 y provoco en varias oportunidades hangs en el cluster.

ORA-07445: exception encountered: core dump [ksuklms()+527] [SIGSEGV]" 
appears in all nodes in production after that we applied the patch 7442260

Luego de investigacion y trabajo en conjunto , desde Oracle Support nos recomendaron realizar la instalacion del 9352164: DATABASE PSU 10.2.0.4.4 (INCLUDES CPUAPR2010)

Y de ahi es donde surge este articulo que cumple como objetivo escencial instalar un PSU de oracle en un ambiente interesante.

Grid Infraestructure (clusterware 11.2.0.2) Oracle Database 10.2.0.4 Dataguard Activo. 

Vamos entonces a lo tecnico. Sigue leyendo

ORA-00054: resource busy and acquire with NOWAIT specified

Este pequeño post lo agrego para Milton (Ecuador) que me preguntaba como podia armar un script para consultar sessiones que estuvieran con bloqueos esperando a que otro usaruario termine la operación.

Lo que le había occurido, en una prueba de Java con Oracle, es que la aplicación se hangeo y para poder ejecutar la prueba desde la contingencia de su aplicación debía primero truncar la tabla.

Al intentar hacerlo le daba el error:

SQL> truncate table TEST.VOL_MONEY_CAP ;
truncate table TEST.VOL_MONEY_CAP
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified

Este error ocurre cuando se bloquea un/unos registro/s mediante:

  • Las sentencias SQL “SELECT” especificados como “NO WAIT” o “FOR UPDATE NOWAIT”.
  • Que una operación SQL de tipo DDL fue blockeada.

Una solución podría ser haciendo COMMIT o ROLLBACK en la sesión de bloqueo.

Entendamos un poco lo que estamos haciendo. Sigue leyendo

Oracle ASM 11gr2 | How to Upgrade ASM 10gr2 to 11gr2

Buenas tardes a todos, aca regreso de nuevo luego de varias migraciones, puestas en producción y dictado de clases. 

Si bien no aparezco con nuevo articulo hace tiempo, hoy regreso con uno interesante para dbas que se encuentran con el proceso de migrar su motor de base de datos de 10gr2 hacia 11gr2.

Algunos ambientes precisan utilizar 10g y 11g al mismo tiempo para probar performance, procesos de migración y otro tipos de reportes.

Una solución que propongo es migrar el storage a 11g y tener la posibilidad de :

  • Conservar las bases de datos de versión 10g.
  • Instalar nuevas bases 11g.
  • Probar procesos de migración.

Es por ello que en este instructivo cumplo con detallar el primer paso.

Migrar el ASM , ejecutando la nueva structura GRID que nos propone Oracle y que con mayor detalle de configuración nos permite la instalacion del instancias en cluster.

Preparativos para la realizar el upgrade

Vamos a comenzar descargando el software.

Oracle Database 11gR2 (64bits)

Una vez que realizamos la descarga lo colocamos en un path de instalación. Sigue leyendo

ASM | ORA-00020: maximum number of processes (n) exceeded

Backup screenshot

Image via Wikipedia

Cuando trabajamos en un ambiente donde tenemos multiples Bases de Datos que se conectan al storage por medio de ASM, puede ocurrir que el Párametro PROCESS se encuentre desbordado.

Muchas veces cuando finalizan la implementación , los instaladores no toman en cuenta cuantas instancias de Bases de Datos serán ( aproximadamente ) instaladas.  Generalmente dejan los valores default que le asigna al párametro el valor 40. Con estos valores de incio generalmente podemos trabajar con una instancia o dos , pero al momento de abrir procesos desde la instacia hacia la instancia ASM, puede que tengamos problemas como ocurrio en el caso que presentamos :

Problema:

Cuando voy a recuperar una base de datos , que ya comparte el storage con otras instancias más en el mismo servidor, arroja el siguiente error:

ORA-00020: maximum number of processes () exceeded

Vemos el ejemplo en directo: Sigue leyendo

Bash scripts | Variables de Entorno de Instancias en RAC

Cuando trabajamos en ambientes Clusterizados utilizamos variables de entorno que cambian sus nombres de instancia según el nodo al que nos conectamos . ( En detalle lo que cambia es la variable $ORACLE_SID. ) 

Por ello desarrolle un script para no tener que andar modificando manualmente en cada uno de los nodos y los actualizo por medio de scp, ya que mi usuario tiene llaves publicas y privadas.

Aqui les dejo el modelo.

En mi caso particular yo lo hice para un cluster de cinco nodos.

Sigue leyendo

Creating ASM Diskgroups with dbca

Vamos a crear un diskgroup nuevo utilizando la interfaz grafica , con el comando dbca.

Lo que primero debemos tener en cuenta que los discos se hallen publicados en el OS y con ello ya podemos comenzar a trabajar.

Con los comandos de oracle createdisk, y logueados con el usuario root creamos los discos.

[root@sdatpro01lx ~]# /etc/init.d/oracleasm createdisk SAN_DATA01p1 /dev/mapper/SAN_DATA01p1
Marking disk "SAN_DATA01p1" as an ASM disk:                [  OK  ]
[root@sdatpro01lx ~]# /etc/init.d/oracleasm createdisk SAN_DATA02p1 /dev/mapper/SAN_DATA02p1
Marking disk "SAN_DATA02p1" as an ASM disk:                [  OK  ]
[root@sdatpro01lx ~]# /etc/init.d/oracleasm createdisk SAN_DATA03p1 /dev/mapper/SAN_DATA03p1
Marking disk "SAN_DATA03p1" as an ASM disk:                [  OK  ]
[root@sdatpro01lx ~]# /etc/init.d/oracleasm createdisk SAN_DATA04p1 /dev/mapper/SAN_DATA04p1
Marking disk "SAN_DATA04p1" as an ASM disk:                [  OK  ]
[root@sdatpro01lx ~]# /etc/init.d/oracleasm createdisk SAN_DATA05p1 /dev/mapper/SAN_DATA05p1
Marking disk "SAN_DATA05p1" as an ASM disk:                [  OK  ]

Como segunda medida los listamos para verificar que el SO y oracle los pueden ver..

[root@sdatpro01lx ~]# /etc/init.d/oracleasm listdisks
SAN_DATA01P1
SAN_DATA02P1
SAN_DATA03P1
SAN_DATA04P1
SAN_DATA05P1

Seteamos las variables de ambiente de la instancia +ASM y ejecutamos el comando dbca que nos mostrara un menu grafico donde comenzaremos con nuestra creación del diskgroup +DATA.

$ dbca

El manager de dbca nos muestra tres opciones:

  • Crear una base.
  • Generar templetes de una base.
  • Configurar una instancia ASM.

Sigue leyendo

Oracle ASM | Creando una instancia en RAC

Como ya venimos trabajando con las instancias de  ASM tanto conceptualmente como tecnicamente, vamos a seguir en la misma linea y les propongo hacer una instalación en un RAC de dos nodos.

De esta manera podremos apreciar con que sencillez el runinstaller nos acompañara y convertirá nuestra tarea en una labor un poco más sencilla. También podremos observar que comandos de RAC son lo que debemos utilizar para poder subir y bajar instancias de ASM.

Lo primero que debemos hacer es descargar desde oracle el soft necesario. Cuando este esta descomprimido seteamos las variables de entorno como ORACLE_HOME=path del home y ORACLE_SID=+ASM1

Ejecutamos el ./runinstaller, en mi caso trabajo con linux y cuando hice ssh al host de destino, lo hice con el wildcard -x (Ejemplo: ssh -x ). Realizada esta tarea corro el comando xclock y este lanzara un reloj gráfico, con ello sabemos que se levantara la interfaz gráfica para la instalación.

1) Ejecutamos ./runinstaller.sh

Sigue leyendo