Categories: Oracle 11g, Oracle11gR2

Utilizando las métricas de Oracle para generar gráficos



Siempre existe la necesidad de mostrar información de manera gráfica, bien lo dice el dicho "Un dibujo vale más que mil palabras" , por ende , mostrar nu gráfico de comportamiento de algún componente de nuestra base de datos, se agradece mucho más que mostrar información de forma plana.

Para ello nos centraremos en la actividad de las vistas relacionadas a las métricas, disponibles desde Oracle10gr1 en adelante



La vista V$SYSMETRIC muestra la métrica de sistema capturada en un intervalo de 15 y 60 segundos , algunos datos importantes en esta vista

V$SYSMETRIC.BEGIN_TIME : Fecha de inicio del intervalo
V$SYSMETRIC.END_TIME : Fecha de término del intervalo
V$SYSMETRIC.INTSIZE_CSEC : Centésimas de segundo en el intervalo
V$SYSMETRIC.METRIC_NAME : Nombre de la métrica
V$SYSMETRIC.VALUE : Valor de la métrica
V$SYSMETRIC.METRIC_UNIT : Descripción de la unidad de medida, en otras palabras , como se calcula el valor de la métrica

La gracia principal de esto es que podemos capturar información de mucha utilidad y generar gráficos "para el jefe" , ¿cómo así? , pues bien ... analicemos un dato que es extremadamente importante y aparece en todos lugares , el Buffer Cache Hit Ratio

Con esta consulta sobre la V$SYSMETRIC podemos consultar el hit ratio del database buffer cache

SQL> r
1 select to_char(BEGIN_TIME,'dd-mm-yyyy hh24:mi:ss') "Fecha Inicio" ,
2 to_char(END_TIME,'dd-mm-yyyy hh24:mi:ss') "Fecha Termino" ,
3 INTSIZE_CSEC ,
4 GROUP_ID ,
5 METRIC_ID ,
6 METRIC_NAME ,
7 VALUE ,
8 METRIC_UNIT
9 from v$sysmetric
10* where metric_name like '%Buffer Cache Hit Ratio%'


Y podríamos recopilar información como la que sigue

Fecha Inicio Fecha Termino INTSIZE_CSEC GROUP_ID METRIC_ID METRIC_NAME VALUE METRIC_UNIT
------------------- ------------------- ------------ ---------- ---------- ------------------------- ------- ----------------------------------------
11-11-2009 20:11:15 11-11-2009 20:12:15 6000 2 2000 Buffer Cache Hit Ratio 100.00 % (LogRead - PhyRead)/LogRead
11-11-2009 20:12:45 11-11-2009 20:13:00 1500 3 2000 Buffer Cache Hit Ratio 100.00 % (LogRead - PhyRead)/LogRead


El problema principal (si se le puede llamar problema) es que sólo muestra 2 puntos y con eso, claramente no sabremos la tendencia de nuestra base de datos , por ende necesitamos más puntos, ¿de dónde obtenerlos?, pues del historial de esa vista , la V$SYSMETRIC_HISTORY

1 select to_char(BEGIN_TIME,'dd-mm-yyyy hh24:mi:ss') "Fecha Inicio" ,
2 to_char(END_TIME,'dd-mm-yyyy hh24:mi:ss') "Fecha Termino" ,
3 INTSIZE_CSEC ,
4 GROUP_ID ,
5 METRIC_ID ,
6 METRIC_NAME ,
7 VALUE ,
8 METRIC_UNIT
9 from v$sysmetric_history
10 where metric_name like '%Buffer Cache Hit Ratio%'
11* order by 1


Acá nos muestra la última hora de las métricas que necesitamos visualizar , lo cual ya se puede sentir como algo más elaborado , o sea, "les presentamos el comportamiento del Database Buffer Cache durante la última hora" , suena bien , está vista nos entrega información de la última hora con un total de registros de 74

Y si queremos tener una curva algo más prolongada, quizás, el último mes del Database Buffer Cache, pues allí debemos consultar la vista DBA_HIST_SYSMETRIC_HISTORY

La información viaja así ...... después de una hora en memoria en las vistas V$SYSMETRIC y V$SYSMETRIC_HISTORY , el proceso Background MMON descarga la información de estás vistas al diccionario de datos , esa información la encontramos en la vista DBA_HIST_SYSMETRIC_HISTORY

Si piensan un poco , lo anterior es lo que sucede cuando el MMON captura la información estadística desde la SGA , o sea, son los Snapshots del AWR , entre más Snapshots existan , la curva puede ser más amplia cuando analicemos información estadística, que interesante!!!

La forma en que pueden realizar los gráficos mediante la información proveniente de estas tablas, la pueden encontrar muy detallada, paso a paso en el siguiente artículo

B)B)B)Graficar en Excel información proveniente desde StatspackB)B)B)

Hay que extrapolar un poco , la información en este caso no viene del Statspack , proviene de las vistas de Oracle, pero para el caso, es aplicable 500%

¿Qué otra información es útil como métrica?

La verdad muchas otras, como por ejemplo

* CPU Usage Per Sec
* Disk Sort Per Sec
* Host CPU Utilization (%)
* Leaf Node Splits Per Sec
* Library Cache Hit Ratio
* Memory Sorts Ratio
* PGA Cache Hit %
* Physical Reads Per Sec
* Redo Generated Per Sec
* Soft Parse Ratio
* Etc,etc.

La información está , es llegar y graficar :yes:

Mayor descripción de la vista V$SYSMETRIC

De la vista V$SYSMETRIC_HISTORY

Y de la vista DBA_HIST_SYSMETRIC_HISTORY

Espero que les sirva


by Ligarius
20.01.10. 16:40:17. 770 words, 1046 views. Categories: Oracle 11g, Oracle 10g, Tuning / Performance, Oracle11gR2 , Leave a comment »Send a trackback »

Oracle11gr1 y Oracle11gr2 : Ha ocurrido un error , ¿Dónde están los logs y traces?



Imagínense el siguiente error

[oracle@SQL]$ sqlplus usuario/password

SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 10 20:58:22 2009

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

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> start file
select COUNT(*)
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 887
Session ID: 134 Serial number: 162

SQL>


Tratamos de hacer un trace, se cae, tratamos de generar un evento de traceo , se cae y así , por siempre y para siempre..

Lo mejor es abrir un caso en Oracle, ellos debiesen solucionarlo |-| (no siempre es así, pero les tengo fé)

Y cuando vamos al ORACLE_BASE, nos damos cuenta :>> de que no existe, claro estamos en 11gr2 XX(

Nos colocamos el machete en la boca y nos metemos a los directorios de log y trace (llamado diag) y nos encontramos con muchos de ellos

[oracle@SQL]$ ls -ltr
total 136
drwxr-x--- 2 oracle oinstall 4096 Nov 6 00:17 hm
drwxr-x--- 2 oracle oinstall 4096 Nov 6 00:17 alert
drwxr-x--- 2 oracle oinstall 4096 Dec 10 20:37 metadata
drwxr-x--- 2 oracle oinstall 4096 Dec 10 20:37 ir
drwxr-x--- 4 oracle oinstall 4096 Dec 10 20:58 incident
drwxr-x--- 8 oracle oinstall 12288 Dec 10 20:58 cdump
drwxr-x--- 2 oracle oinstall 4096 Dec 10 20:58 sweep
drwxr-x--- 2 oracle oinstall 20480 Dec 10 20:58 stage
drwxr-x--- 2 oracle oinstall 4096 Dec 10 20:58 lck
drwxr-x--- 4 oracle oinstall 4096 Dec 10 21:09 incpkg
drwxr-x--- 4 oracle oinstall 69632 Dec 10 21:20 trace
[oracle@SQL]$ pwd
/u01/app/oracle/diag/rdbms/inst1/inst1
[oracle@SQL]$


Es ahora donde nos entra la desesperación y nos preguntamos ¿Qué #$"°| le envíamos a Oracle?

Pues bien , allí es donde ingresa el ADRCI, el utilitario para hacernos la vida más fácil con la nueva estructura de diagnóstico que nos provee Oracle

He aquí un pequeño ejercicio

1.- Nos conectamos al adrci

[oracle@SQL]$ adrci

ADRCI: Release 11.2.0.1.0 - Production on Thu Dec 10 21:03:05 2009

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

ADR base = "/u01/app/oracle"
adrci>


2.- Verificamos los ORACLE_HOME existente (son mas de 1 ya que estamos trabajando con el DIAG)

adrci> show homes
ADR Homes:
diag/tnslsnr/maq1/listener
diag/rdbms/inst1/inst1
adrci>


3.- Para poder trabajar con el adrci, se debe por obligación seleccionar uno de estos ORACLE HOMES

adrci> set homepath diag/rdbms/inst1/inst1
adrci>
adrci> show homes
ADR Homes:
diag/rdbms/inst1/inst1
adrci>


4.- Una vez seleccionado nuestro ORACLE_HOME, procedemos a ver los "problemas" e "incidentes"
Sólo como introducción , pues generaré un post al respecto, un problema genera múltiples incidentes y un problema es casi siempre crítico, o sea, solucionando el problema se acaban los incidentes (suena a ITIL :)) )

adrci> show problem

ADR Home = /u01/app/oracle/diag/rdbms/inst1/inst1:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1 ORA 7445 [_intel_fast_memcmp()+30] 275 2009-12-10 20:58:26.261000 -03:00
1 rows fetched


5.- Aparece claramente el problema, un error ORA-07445, ahora queremos ver los incidentes que ha originado ese problema

adrci> show incident

ADR Home = /u01/app/oracle/diag/rdbms/inst1/inst1:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
251 ORA 7445 [_intel_fast_memcmp()+30] 2009-12-10 20:41:07.496000 -03:00
275 ORA 7445 [_intel_fast_memcmp()+30] 2009-12-10 20:58:26.261000 -03:00
2 rows fetched

adrci>

Como se puede apreciar, ha generado varios incidentes , pero sólo necesitamos uno de ellos como para comenzar a procesar la información y poder "empaquetar" todos los archivos necesarios.

6.- Para ello , tomamos el INCIDENT_ID que necesitamos y ejecutamos el siguiente comando

adrci> ips pack incident 275 in /home/oracle
Generated package 2 in file /home/oracle/ORA7445_i_20091210210936_COM_1.zip, mode complete
adrci>


7.- Una vez ejecutado el comando , tenemos un zip con TODA LA INFORMACIÓN necesaria para soporte Oracle y casi ... no nos despeinamos :D

Más información del ADRCI

Espero les sirva...


by Ligarius
14.12.09. 07:39:59. 610 words, 609 views. Categories: Oracle 11g, Tuning / Performance, Oracle11gR2 , Leave a comment »Send a trackback »

Oracle10gr2 : Disminuyendo el LOG FILE SYNC con COMMIT NOWAIT


Para comenzar la charla , les pido disculpas por el tiempo alejado de las canchas, pero fue única y exclusivamente por la carga de trabajo que tenía en mi empresa, de hecho hoy en día me encuentro dictando dos cursos por día :

- Horario de tarde : WorkShop II Ed 3 de Oracle10g
- Horario de noche : Oracle Reports Builder 11g

Así que imagínense el tiempo que tengo, pero bueno... a lo que vinimos...



El evento de espera LOG FILE SYNC se da cuando una sesión de usuario ejecuta un final de transacción por ejemplo un COMMIT o un ROLLBACK , la información almacenada en el Log Buffer para esa transacción necesita ser envíada a disco , especificamente a los archivos de redolog, cuando está finaliza , la sesión recién comienza a generar otras actividades, en otras palabras, cuando se ejecuta un término de transacción la sesión entra en un evento de espera, que está relacionado al tiempo que demora el LGWR en escribir las entradas del log buffer (en realidad son vectores, pero es materia de otro Post) hacía los redologs, cuando eso finaliza .. la transacción se acepta como válida.


A veces , cuando la aplicación es muy transaccional , el LOG FILE SYNC , aparece como un Top 5 dentro del Statspack o dentro un AWR Rpt, cuando sucede eso, hay formas de mejorar esos tiempos de respuesta.



Observación : No se recomienda llevar a cabo estos cambios sin la visación de Oracle Support




Ejecución de commit asincrónico

Como ya vimos el proceso del commit y como se vaciaban los registros desde el Log Buffer , pasamos a señalar el como ejecutar el commit asincrónico para solucionar el evento de espera LOG FILE SYNC


El comando commit posee variaciones , las cuales se pueden apreciar en el siguiente detalle
WAIT : No se retorna el mensaje de commit exitoso hasta que las entradas del LogBuffer hayan sido escritas a los redo logs

NOWAIT : El commit puede retornar el control a la aplicación aunque aún la sentencia no este registrada a los archivos de redologs, lo cual puede resultar algo peligroso.

IMMEDIATE : El proceso LGWR escribe de forma inmediata la entrada de la transacción presente en los log buffer hacía los redo logs, en otras palabras , se fuerza un I/O

BATCH : Este modo le indica a Oracle que a pesar de haber finalizado la transacción con un commit, la bajada de los vectores desde el log buffer se produzca en el ciclo normal del log buffer , por ejemplo , cuando se llena a un tercio

Por defecto , cuando ustedes ejecutan el commit se ejecuta con WAIT IMMEDIATE , pero esto se puede modificar ejecutando la siguiente sentencia

COMMIT WRITE NOWAIT IMMEDIATE , o sea, no espera a que se escriba la información del log buffer a los redo logs, entrega el control a la aplicación y hace la bajada de la información del log buffer de forma inmediata a los redo logs

Es una opción que hay que manejar con cuidado , pues puede haber pérdida de datos , por ejemplo este comando

COMMIT WRITE NOWAIT BATCH , puede dejar mucha información en memoria , indicarles que se hizo el commit exitoso y ante una caída quedar con información inconsistente.

Todo lo anterior también se puede setear mediante el parámetro de incialización correspondiente

COMMIT_WRITE

Y analizando toda esta información , para solucionar en parte el evento de espera LOG FILE SYNC , se podría cambiar el modo del commit para los procesos batch de la siguiente forma

COMMIT WRITE NOWAIT BATCH

Espero que les haya servido

Documentación necesaria
Parámetro COMMIT_WRITE
Evento de espera LOG FILE SYNC


by Ligarius
02.12.09. 13:23:18. 632 words, 903 views. Categories: Oracle 11g, Oracle 10g, SQL / Programación, Tuning / Performance , Leave a comment »Send a trackback »

Oracle 11gr2: Nuevas características (New Features Oracle 11gr2)



Bueno , ya se habrán dado cuenta que Oracle lanzo su release 2 de 11g , o sea, Oracle11gr2 obvio.

Pincha el link para saber de la noticia


En este release vienen muchas mejoras, algunas de las cuales son sencillamente magníficas y otras mmmm no tanto :no:

En este resumen (sacado integramente de las New Features de Oracle11gr2) les quiero mostrar cuales son las más útiles y agradables a la vista.

Así que... a luchar por la justicia!! :) , en realidad a luchar por instalarla, comprenderla y quererla jajaja



BACKUP and RECOVERY

Automatic Block Repair : Desde Oracle11gr2 en adelante los bloques se recuperarán de forma automática (en ambientes Standby) desde la Standby hacía la primaria y desde la primaria hacía la StandBy , de acuerdo a quien tenga el bloque corrupto.
Lo anterior es de forma automática, además el comando RECOVER BLOCK de RMAN se amplio para que se pueda obtener desde in ambiente de StandBy el bloque no corrupto.

Comando DUPLICATE de una base de datos , pero sin conección a la base de datos :)
Desde ahora en adelante no es necesario conectarse a una base de datos target para generar una copia de ella, así tal cual lo digo, sólo es obligación conectarse al CATALOGO y claro a la AUXILIAR, el CATALOGO es obligatorio , pues desde el CONTROLFILE allí existente es donde se obtienen las rutas de los datafiles a copiar ;).

Mejoras en el TSPITR (Tablespace Point-In-Time Recovery)
Podremos recuperar una tabla en el tiempo, claro , esto no se diferencia de versiones anteriores , la gracia en Oracle11gr2 es que esa tabla puede ser que este borrada en la target , Oracle igual podrá recuperarla :)

El comando DUPLICATE viene con mas opciones y mejoras
Por ejemplo estamos haciendo un DUPLICATE de una base de datos target, pero no nos hemos conectado a ella, para ello , se le agregan opciones por ejemplo de NOREDO, pues como no tenemos conexión , simplemente no va a buscar datos para recuperar la BD de destino.

Claúsula SET NEWNAME
Ahora se puede hacer SET NEWNAME no solamente a un datafile, sino que a un tablespace completo (todos sus datafiles) , y mejor aún , a todos los archivos de nuestra base de datos :)

SET NEWNAME FOR TABLESPACE nombre_tablespace TO ruta;

SET NEWNAME FOR DATABASE TO ruta;

Nuevo HINT para evitar los DUP_VAL_ON_INDEX
Ahora Oracle nos sorprende con un HINT que de seguro será muy útil, cuando hacemos un INSERT SELECT sobre una tabla con PK, nadie nos dice que no aparecerá el error de LLAVES DUPLICADAS, cuando se usa el hint IGNORE_ROW_ON_DUPKEY_INDEX .Esto hará que el INSERT funciono si o si, pero también hará que sean un poco mas lentos los procesos, usar con cuidado :)
PARA DETALLES click en el LINK

Aumento de bases de datos STANDBY
De 9 posibles StandBy Oracle salto a 30 posibles StandBy, ¿es cómo harta seguridad, o no?

Bussiness Inteligent (BI)

Se agregan nuevas funciones analíticas, como por ejemplo
LISTTAG : Que permite al desarrollador mostrar los datos de una tabla, pero hacía el lado, concatenados :) , que genial!
NHT_VALUE : Si les pido el 5 valor de una serie ordenada, ¿cómo lo harían? , pues Oracle nos facilito eso, dandonos esta función , que simplemente recibe un valor y busca el número X que le ingresamos.

Cluster

Servidor NTP
Si al momento de instalar el RAC necesitabamos en la mayoría de los casos un servidor NTP para sincronizar horas (todos sabemos que está sincronización la hacemos a manos), ahora Oracle RAC 11gr2 viene con un seudo NTP llamado Cluster Time Service , el cual no cambia ni proporciona el servicio NTP en sí, lo único que hace es la conexión al NTP :)
Por lo menos , ya sabemos que cosa modificar jajaja

OCR
Se aumentan la cantidad de copias de OCR que puedo tener, antes eran 3 ahora.... 5
Y lo mejor de todo ahora el archivo OCR SE PUEDE GUARDAR EN ASM (AUTOMATIC STORAGE MANAGEMENT) , así de fuerte!!!!!!! , ya no necesitamos manejadores de Filesystem en cluster, del tipo HACMP , GPFS , OCFS2, etc...

Oracle Restart
Pues bien, podremos utilizar el comando SRVCTL para determinar si nuestra base de datos puede hacer un restart automático :), aquellos que no han ocupado este comando porque tienen StandAlone, deberán acostumbrarse

Parches en caliente
Ahora sí que los parches pueden ser aplicados en caliente jajaja , lo mismo escuche en Oracle11gr1 , pero bueno..

Eliminación de ClusterWare con el desinstalador
¿Recuerdan los engorrosos pasos para eliminar una instalación de RAC en Oracle10g?, pues bien , eso mismo lo hace ahora, sin problemas, de forma limpia y rápida el desinstalador de Oracle

Puntos de falla en la instalación
Si comenzamos la instalación con el OUI de algún componente del ClusterWare y este falla, debiamos ser entre magos y payasos para poder continuar,no sin antes , eliminar 45.000 archivos y carpetas :) , pues bien ahora el OUI puede eliminar hasta un punto en partícular, para poder continuar con la instalación (eso dice Oracle, habría que probar, probar y probar)

SRVCTL para bases de datos StandAlone
Desde ahora en adelante , con el comando SRVCTL podemos colocar en el Cluster nuestra base de datos StandAlone, y con ellos CLusterWare la baja sube, maneja y mantiene :)

A nivel de Base de datos

FlashBack Data Archive
Ahora soporta DDL, que bien!! , si en Oracle11gr1 se permitía consultar una tabla en el tiempo (quizás años atrás), ahora se puede hacer lo mismo, y mejor aún , no importando si se le ha aplicado una sentencia DDL, como por ejemplo un borrado de la tabla, un renombre un truncado , etc.

Mejoras al Scheduler
El scheduler desde ahora soporta ingreso de correo, por ende, podremos enviar notificaciones una vez finalizado el Job, entre otras características

Mejoras a los datapump
Y pensar que exp/imp estaba casi muerto, pues bien, ahora Oracle ya lo mato :) , ¿cómo así? , Export e Import Datapump soportan todos los scripts de Exp/Imp antiguos, o sea, no hay desgaste convirtiendo :)

Claúsula PREPROCESSOR
Es una nueva claúsula para las tablas externas , lo potente de esto es que esta nueva claúsula es capaz de por ejemplo descomprimir un archivo plano y presentarselo descomprimido a la tabla externa, o sea, no más problemas con archivos planos gigantes :)
PARA DETALLES click en el LINK

Seguridad

Audit Trail Cleanup
Oracle ha creado el Audit Trail Cleanup, ¿qué es eso? , pues de ahora en adelante tenemos solucionados muchos problemas del audit, por ejemplo
1) Que podemos automatizar el período de borrado de nuestros registros de auditoría
2) Podemos controlar el tamaño de nuestra tabla de auditoría , y así mismo controlar la antiguedad de nuestros registros , que maravilloso :')
3) Esta herramienta nos proporciona una forma (soportada por Oracle) para mover nuestra tabla SYS.AUD$ a un tablespace distinto

Manejo del Servidor

ASM para todos
SIIII , desde ahora en adelante ASM es capaz de soportar todo tipo de archivos, no solamente Oracle :P, que tal?

ASM Storage Management Configuration Assistant
Esta versión permite configurar, monitorear, y manejar los discos a través de una interfaz gráfica , será bueno :P

Extensión del ASMCMD
Este utilitario que en Oracle11gr1 ya venía con un comando poderoso (cp para copiar desde ASM hacía Filesystem) , ahora viene con mas comandos por ejemplo, para el manejo de los discos de ASM, los diskgroups de ASM y la instancia misma de ASM.

Database Control para aplicar parches en RAC
Así tal cual, el database control desde Oracle11gr2 , puede aplicar parches en RAC, la verdad... yo no lo haría... :S

Creación de Segmentos pero sin espacio
Suena raro, pero así como los tempfiles generan un archivo físico pequeño en un primer instante y sólo cuando se usan van creaciendo , ahora podemos crear segmentos (tablas e índices por ejemplo) que no creen storage a menos que se use (una vez usados , obviamente la HWM sube) , que genial!!!! :D

Mejoras a los índices UNUSABLES
Esto si que es genial!!! , el porque? pues cuando un índice se crea como UNUSABLE, Oracle no genera espacio para ese segmento, pero si el índice ya fue generado de forma normal y se altera para dejarlo en estado UNUSABLE, el índice sigue utilizando bloques, esto podría ser una mejora en Oracle12g , o sea, dejar un índice UNUSABLE y que este inmediatamente libere su espacio, sería genial!! :P
PARA DETALLES click en el LINK

ASH en DataGuard
El famoso, y poco utilizado ASH (Active Session History) desde ahora también disponible para Data Guard :)

Otras varias...

Installation Fixup Scripts
El instalador siempre nos decía "Problemas con el checklist inicial , modifique semáforos :| (es una traducción no literal :>> ) , y siempre debíamos modificar por ejemplo el sysconf.ctl a mano , pues desde Oracle11gr2 en adelante esto se automatizo
PARA DETALLES click en el LINK

Herramienta de desinstalación
Desde ahora en adelante una herramienta creada integramente para desinstalar otras :>>
PARA DETALLES click en el LINK

Y un montón de otras características, algunas aplicables, otras no tanto...

Trataré de ir colocando ejemplos y How-to de cada una de ellas, esto se viene bueno señores :>>

Espero NOS sirva a todos


by Ligarius
01.09.09. 20:04:56. 1564 words, 3386 views. Categories: Base de datos, Oracle11gR2 , Leave a comment »Send a trackback »

Oracle 11gr2 : Tool deinstall



Si quieres desinstalar algo en Oracle , casi siempre esta a mano el OUI , cierto?

Con su interfaz gráfica y que de verdad ayuda bastante, pero como la idea de Oracle es que te quedes obsoleto lo antes posible, en la versión Oracle11gr2 lanzo al mercado una tool para realizar las desinstalaciones de productos Oracle, esta tool simplemente se llama deinstall :P , obvio, y dentro del OUI ya no aparece el "Uninstalled Products"



La acabo de usar , y por su interfaz no gráfica, me da la idea de que es mucho más segura que el OUI, además desinstala los productos aunque se hayan instalado mal. Y un dato no menor, cuando se desinstalan productos Oracle con el deinstall, si hay ASM de por medio, también resetea la cabecera de los discos para que queden como PROVISIONED en la siguiente instalación y no tener que hacer a mano un comando dd. :)

Se baja este utilitario desde la siguiente URL
http://www.oracle.com/technology/software/products/database/oracle11g/112010_linx8664soft.html

Y se llama
Oracle De-install Utility (11.2.0.1.0) for Linux x86-64 (existe también para 32 bits)

He aquí un ejemplo para ambiente RAC

- Se baja el utilitario , se descomprime el archivo

- Se ejecuta el desinstalador, indicandole el ORACLE_HOME que deseamos remover

[oracle@oracle11gnodo1 instaladores]$ cd deinstall/
[oracle@oracle11gnodo1 deinstall]$ ls -ltr
total 216
-r-xr-xr-x 1 oracle oinstall 31544 Apr 1 01:24 sshUserSetup.sh
-r--r--r-- 1 oracle oinstall 3154 Jul 13 08:01 deinstall.xml
-r-xr-xr-x 1 oracle oinstall 20670 Jul 13 08:26 deinstall
-rw-r--r-- 1 oracle oinstall 382 Aug 4 18:16 readme.txt
drwxr-xr-x 7 oracle oinstall 4096 Aug 13 05:46 jre
drwxr-xr-x 2 oracle oinstall 4096 Aug 14 01:35 utl
drwxr-xr-x 2 oracle oinstall 4096 Aug 14 01:35 response
drwxr-xr-x 2 oracle oinstall 4096 Aug 14 01:35 logs
drwxr-xr-x 2 oracle oinstall 4096 Aug 14 01:50 mapfiles
drwxrwxr-x 4 oracle oinstall 4096 Aug 14 01:53 sysman
drwxrwxr-x 3 oracle oinstall 4096 Aug 14 01:53 srvm
drwxrwxr-x 8 oracle oinstall 4096 Aug 14 01:53 perl
drwxrwxr-x 7 oracle oinstall 4096 Aug 14 01:53 oui
drwxr-xr-x 3 oracle oinstall 4096 Aug 14 01:53 lib
drwxr-xr-x 2 oracle oinstall 4096 Aug 14 01:53 jlib
drwxrwxr-x 3 oracle oinstall 4096 Aug 14 01:53 diagnostics
drwxrwxr-x 2 oracle oinstall 4096 Aug 14 01:53 dc_ocm
drwxrwxr-x 3 oracle oinstall 4096 Aug 14 01:53 cv
drwxrwxr-x 3 oracle oinstall 4096 Aug 14 01:53 crs
drwxrwxr-x 2 oracle oinstall 4096 Aug 14 01:53 bin
drwxrwxr-x 4 oracle oinstall 4096 Aug 14 01:53 assistants

[oracle@oracle11gnodo1 deinstall]$ ./deinstall -home /u01/app/11.2.0/grid

ORACLE_HOME = /u01/app/11.2.0/grid
Location of logs /home/oracle/oraInventory/logs/

############ ORACLE DEINSTALL & DECONFIG TOOL START ############

######################## CHECK OPERATION START ########################
Install check configuration START

Checking for existence of the Oracle home location /u01/app/11.2.0/grid
Oracle Home type selected for de-install is: CRS
Oracle Base selected for de-install is: /u01/app/oracle
Checking for existence of central inventory location /home/oracle/oraInventory
Checking for existence of the Oracle Grid Infrastructure home /u01/app/11.2.0/grid
The following nodes are part of this cluster: oracle11gnodo1,oracle11gnodo2

Install check configuration END

Traces log file: /home/oracle/oraInventory/logs//crsdc.log

- Ahora comienza la serie de preguntitas, relacionadas con las IP Virtuales, físicas y el formato de la máscara.

Enter an address or the name of the virtual IP used on node "oracle11gnodo1"[oracle11gnodo1-vip]

The following information can be collected by running ifconfig -a on node "oracle11gnodo1"
Enter the IP netmask of Virtual IP "192.168.239.131" on node "oracle11gnodo1"[255.255.255.0]
192.168.239.129

Enter the network interface name on which the virtual IP address "192.168.239.131" is active
eth0

Enter an address or the name of the virtual IP used on node "oracle11gnodo2"[oracle11gnodo2-vip]

The following information can be collected by running ifconfig -a on node "oracle11gnodo2"
Enter the IP netmask of Virtual IP "192.168.239.132" on node "oracle11gnodo2"[192.168.239.129]
192.168.239.130

Enter the network interface name on which the virtual IP address "192.168.239.132" is active[eth0]

Enter an address or the name of the virtual IP[]
192.168.239.131

The following information can be collected by running ifconfig -a on node "oracle11gnodo1"
Enter the IP netmask of the virtual IP "192.168.239.131"[]
255.255.255.0

Enter the network interface name on which the virtual IP address "192.168.239.131" is active
eth0

Enter an address or the name of the virtual IP[]
192.168.239.131

The following information can be collected by running ifconfig -a on node "oracle11gnodo1"
Enter the IP netmask of the virtual IP "192.168.239.131"[255.255.255.0]

Enter the network interface name on which the virtual IP address "192.168.239.131" is active[eth0]

Enter an address or the name of the virtual IP

- Una vez ingresados todos los datos, comienza realmente la desinstalación

Network Configuration check config START

Network de-configuration trace file location: /home/oracle/oraInventory/logs/netdc_check32554.log

Network Configuration check config END

Asm Check Configuration START

ASM de-configuration trace file location: /home/oracle/oraInventory/logs/asmcadc_check32555.log

ASM configuration was not detected in this Oracle home. Was ASM configured in this Oracle home (y|n) [n]: y
Specify the ASM Diagnostic Destination [ ]:
Specify the diskgroups that are managed by this ASM instance []: DATA1

De-configuring ASM will drop all the diskgroups at cleanup time. Do you want deconfig tool to drop the diskgroups y|n [y]:

######################### CHECK OPERATION END #########################

####################### CHECK OPERATION SUMMARY #######################
Oracle Grid Infrastructure Home is: /u01/app/11.2.0/grid
The cluster node(s) on which the Oracle home exists are: (Please input nodes seperated by ",", eg: node1,node2,...)oracle11gnodo1,oracle11gnodo2
Oracle Home selected for de-install is: /u01/app/11.2.0/grid
Inventory Location where the Oracle home registered is: /home/oracle/oraInventory
ASM instance will be de-configured from this Oracle home
Do you want to continue (y - yes, n - no)? [n]: y
A log of this session will be written to: '/home/oracle/oraInventory/logs/deinstall_deconfig2009-09-21_02-57-31-PM.out'
Any error messages from this session will be written to: '/home/oracle/oraInventory/logs/deinstall_deconfig2009-09-21_02-57-31-PM.err'

######################## CLEAN OPERATION START ########################
ASM de-configuration trace file location: /home/oracle/oraInventory/logs/asmcadc_clean32556.log
ASM Clean Configuration START
ASM Clean Configuration END

Network Configuration clean config START

Network de-configuration trace file location: /home/oracle/oraInventory/logs/netdc_clean32557.log

De-configuring Naming Methods configuration file on all nodes...
Naming Methods configuration file de-configured successfully.

De-configuring Local Net Service Names configuration file on all nodes...
Local Net Service Names configuration file de-configured successfully.

De-configuring Directory Usage configuration file on all nodes...
Directory Usage configuration file de-configured successfully.

De-configuring backup files on all nodes...
Backup files de-configured successfully.

The network configuration has been cleaned up successfully.

Network Configuration clean config END

- Una vez pasado lo anterior, indica que debemos ejecutar ciertos comandos con root en cada uno de los nodos.

---------------------------------------->

Run the following command as the root user or the administrator on node "oracle11gnodo2".

/home/oracle/instaladores/deinstall/perl/bin/perl -I/home/oracle/instaladores/deinstall/perl/lib -I/home/oracle/instaladores/deinstall/crs/install /home/oracle/instaladores/deinstall/crs/install/rootcrs.pl -force -delete -paramfile /home/oracle/instaladores/deinstall/response/deinstall_Ora11g_gridinfrahome2.rsp

Run the following command as the root user or the administrator on node "oracle11gnodo1".

/home/oracle/instaladores/deinstall/perl/bin/perl -I/home/oracle/instaladores/deinstall/perl/lib -I/home/oracle/instaladores/deinstall/crs/install /home/oracle/instaladores/deinstall/crs/install/rootcrs.pl -force -delete -paramfile /home/oracle/instaladores/deinstall/response/deinstall_Ora11g_gridinfrahome2.rsp -lastnode

- Ejecutamos esos comandos en cada uno de los nodos del RAC con usuario root, y el desinstalador simplemente remueve y aquellos procesos que no puede eliminar, los deja para el reboteo.

[oracle@oracle11gnodo2 ~]$ su - root
Password:
[root@oracle11gnodo2 ~]# /home/oracle/instaladores/deinstall/perl/bin/perl -I/home/oracle/instaladores/deinstall/perl/lib -I/home/oracle/instaladores/deinstall/crs/install /home/oracle/instaladores/deinstall/crs/install/rootcrs.pl -force -delete -paramfile /home/oracle/instaladores/deinstall/response/deinstall_Ora11g_gridinfrahome2.rsp
2009-09-21 15:05:48: Parsing the host name
2009-09-21 15:05:48: Checking for super user privileges
2009-09-21 15:05:48: User has super user privileges
Using configuration parameter file: /home/oracle/instaladores/deinstall/response/deinstall_Ora11g_gridinfrahome2.rsp
PRCR-1035 : Failed to look up CRS resource ora.cluster_vip.type for 1
PRCR-1068 : Failed to query resources
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.gsd is registered
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.ons is registered
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.eons is registered
Cannot communicate with crsd

ADVM/ACFS is not supported on Redhat 4
ACFS-9201: Not Supported
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'oracle11gnodo2'
CRS-2673: Attempting to stop 'ora.crsd' on 'oracle11gnodo2'
CRS-4548: Unable to connect to CRSD
CRS-2675: Stop of 'ora.crsd' on 'oracle11gnodo2' failed
CRS-2679: Attempting to clean 'ora.crsd' on 'oracle11gnodo2'
CRS-4548: Unable to connect to CRSD
CRS-2678: 'ora.crsd' on 'oracle11gnodo2' has experienced an unrecoverable failure
CRS-0267: Human intervention required to resume its availability.
CRS-2795: Shutdown of Oracle High Availability Services-managed resources on 'oracle11gnodo2' has failed
CRS-4687: Shutdown command has completed with error(s).
CRS-4000: Command Stop failed, or completed with errors.
You must kill crs processes or reboot the system to properly
cleanup the processes started by Oracle clusterware
error: package cvuqdisk is not installed
Successfully deconfigured Oracle clusterware stack on this node

[oracle@oracle11gnodo1 ~]$ su - root
Password:
[root@oracle11gnodo1 ~]# /home/oracle/instaladores/deinstall/perl/bin/perl -I/home/oracle/instaladores/deinstall/perl/lib -I/home/oracle/instaladores/deinstall/crs/install /home/oracle/instaladores/deinstall/crs/install/rootcrs.pl -force -delete -paramfile /home/oracle/instaladores/deinstall/response/deinstall_Ora11g_gridinfrahome2.rsp -lastnode
2009-09-21 15:07:52: Parsing the host name
2009-09-21 15:07:52: Checking for super user privileges
2009-09-21 15:07:52: User has super user privileges
Using configuration parameter file: /home/oracle/instaladores/deinstall/response/deinstall_Ora11g_gridinfrahome2.rsp

CRS-2672: Attempting to start 'ora.cssd' on 'oracle11gnodo1'
CRS-2676: Start of 'ora.cssd' on 'oracle11gnodo1' succeeded
CRS-2672: Attempting to start 'ora.ctssd' on 'oracle11gnodo1'
CRS-2676: Start of 'ora.ctssd' on 'oracle11gnodo1' succeeded
CRS-2679: Attempting to clean 'ora.asm' on 'oracle11gnodo1'
CRS-5011: Check of resource "+ASM" failed: details at "(:CLSN00006:)" in "/u01/app/11.2.0/grid/log/oracle11gnodo1/agent/ohasd/oraagent_oracle/oraagent_oracle.log"
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0
CRS-5011: Check of resource "+ASM" failed: details at "(:CLSN00006:)" in "/u01/app/11.2.0/grid/log/oracle11gnodo1/agent/ohasd/oraagent_oracle/oraagent_oracle.log"
CRS-2681: Clean of 'ora.asm' on 'oracle11gnodo1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'oracle11gnodo1'
CRS-2676: Start of 'ora.asm' on 'oracle11gnodo1' succeeded
CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'oracle11gnodo1'
CRS-2677: Stop of 'ora.cssdmonitor' on 'oracle11gnodo1' succeeded
CRS-2529: Unable to act on 'ora.cssd' because that would require stopping or relocating 'ora.asm', but the force option was not specified
CRS-4000: Command Stop failed, or completed with errors.
Command return code of 1 (256) from command: /u01/app/11.2.0/grid/bin/crsctl stop resource ora.cssd -init
PRCR-1068 : Failed to query resources
Cannot communicate with crsd
PRCR-1068 : Failed to query resources
Cannot communicate with crsd
PRCR-1068 : Failed to query resources
Cannot communicate with crsd
PRCR-1068 : Failed to query resources
Cannot communicate with crsd
PRCR-1035 : Failed to look up CRS resource ora.cluster_vip.type for 1
PRCR-1068 : Failed to query resources
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.gsd is registered
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.ons is registered
Cannot communicate with crsd
PRCR-1070 : Failed to check if resource ora.eons is registered
Cannot communicate with crsd

ADVM/ACFS is not supported on Redhat 4
ACFS-9201: Not Supported

CRS-2673: Attempting to stop 'ora.ctssd' on 'oracle11gnodo1'
CRS-2673: Attempting to stop 'ora.evmd' on 'oracle11gnodo1'
CRS-2673: Attempting to stop 'ora.asm' on 'oracle11gnodo1'
CRS-2677: Stop of 'ora.evmd' on 'oracle11gnodo1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'oracle11gnodo1' succeeded
CRS-2677: Stop of 'ora.asm' on 'oracle11gnodo1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'oracle11gnodo1'
CRS-2677: Stop of 'ora.cssd' on 'oracle11gnodo1' succeeded
CRS-2673: Attempting to stop 'ora.diskmon' on 'oracle11gnodo1'
CRS-2677: Stop of 'ora.diskmon' on 'oracle11gnodo1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'oracle11gnodo1'
CRS-2676: Start of 'ora.cssdmonitor' on 'oracle11gnodo1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'oracle11gnodo1'
CRS-2672: Attempting to start 'ora.diskmon' on 'oracle11gnodo1'
CRS-2676: Start of 'ora.diskmon' on 'oracle11gnodo1' succeeded
CRS-2676: Start of 'ora.cssd' on 'oracle11gnodo1' succeeded
This ASM diskgroup does not contain voting disks to be deleted
CRS-2672: Attempting to start 'ora.ctssd' on 'oracle11gnodo1'
CRS-2676: Start of 'ora.ctssd' on 'oracle11gnodo1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'oracle11gnodo1'
CRS-2676: Start of 'ora.asm' on 'oracle11gnodo1' succeeded
ASM de-configuration trace file location: /home/oracle/oraInventory/logs/asmcadc_clean2043844166297175867.log
ASM Clean Configuration START
ASM Clean Configuration END

ASM with SID +ASM1 deleted successfully. Check /home/oracle/oraInventory/logs/asmcadc_clean2043844166297175867.log for details.

CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'oracle11gnodo1'
CRS-2673: Attempting to stop 'ora.gpnpd' on 'oracle11gnodo1'
CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'oracle11gnodo1'
CRS-2673: Attempting to stop 'ora.ctssd' on 'oracle11gnodo1'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'oracle11gnodo1'
CRS-2677: Stop of 'ora.cssdmonitor' on 'oracle11gnodo1' succeeded
CRS-2677: Stop of 'ora.gpnpd' on 'oracle11gnodo1' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'oracle11gnodo1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'oracle11gnodo1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'oracle11gnodo1'
CRS-2677: Stop of 'ora.cssd' on 'oracle11gnodo1' succeeded
CRS-2673: Attempting to stop 'ora.diskmon' on 'oracle11gnodo1'
CRS-2673: Attempting to stop 'ora.gipcd' on 'oracle11gnodo1'
CRS-2677: Stop of 'ora.gipcd' on 'oracle11gnodo1' succeeded
CRS-2677: Stop of 'ora.diskmon' on 'oracle11gnodo1' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'oracle11gnodo1' has completed
CRS-4133: Oracle High Availability Services has been stopped.

error: package cvuqdisk is not installed
Successfully deconfigured Oracle clusterware stack on this node

- Una vez terminado lo anterior , procedemos a dar ENTER

Press Enter after you finish running the above commands

<----------------------------------------
Oracle Universal Installer clean START

Detach Oracle home '/u01/app/11.2.0/grid' from the central inventory on the local node : Done

Delete directory '/u01/app/11.2.0/grid' on the local node : Done

Delete directory '/u01/app/oracle' on the local node : Done

Detach Oracle home '/u01/app/11.2.0/grid' from the central inventory on the remote nodes 'oracle11gnodo2' : Done

Delete directory '/u01/app/11.2.0/grid' on the remote nodes 'oracle11gnodo2' : Done

Delete directory '/u01/app/oracle' on the remote nodes 'oracle11gnodo2' : Done

Oracle Universal Installer cleanup was successful.

Oracle Universal Installer clean END

Oracle install clean START

Clean install operation removing temporary directory '/tmp/install' on node 'oracle11gnodo1'
Clean install operation removing temporary directory '/tmp/install' on node 'oracle11gnodo2'

Oracle install clean END

Moved default properties file /home/oracle/instaladores/deinstall/response/deinstall_Ora11g_gridinfrahome2.rsp as /home/oracle/instaladores/deinstall/response/deinstall_Ora11g_gridinfrahome2.rsp3

######################### CLEAN OPERATION END #########################

- Y muestra en esta sección lo más importante, el resumen :>>

####################### CLEAN OPERATION SUMMARY #######################
ASM instance was de-configured successfully from the Oracle home
Oracle Clusterware is stopped and successfully de-configured on node "oracle11gnodo2"
Oracle Clusterware is stopped and successfully de-configured on node "oracle11gnodo1"
Oracle Clusterware is stopped and de-configured successfully.
Successfully detached Oracle home '/u01/app/11.2.0/grid' from the central inventory on the local node.
Successfully deleted directory '/u01/app/11.2.0/grid' on the local node.
Successfully deleted directory '/u01/app/oracle' on the local node.
Successfully detached Oracle home '/u01/app/11.2.0/grid' from the central inventory on the remote nodes 'oracle11gnodo2'.
Successfully deleted directory '/u01/app/11.2.0/grid' on the remote nodes 'oracle11gnodo2'.
Successfully deleted directory '/u01/app/oracle' on the remote nodes 'oracle11gnodo2'.
Oracle Universal Installer cleanup was successful.

Oracle install successfully cleaned up the temporary directories.
#######################################################################

############# ORACLE DEINSTALL & DECONFIG TOOL END #############

La herramienta desinstala absolutamente todo, es bastante poderosa, no se cae, pero... en las pruebas efectuadas, se demora bastante.

Más información del deinstall AQUÍ

Espero les sirva


by Ligarius
22.09.09. 14:31:06. 2537 words, 3151 views. Categories: Base de datos, Instalación, Oracle11gR2 , Leave a comment »Send a trackback »

1 2 3 4 5 >>