Instalando Oracle 12c en linux

A primeros de este mes Oracle anuncio el lanzamiento de la versión 12c de Oracle.En el post de hoy vamos a ver como se hace la instalación para Oracle Linux 6.4
La mayor ventaja de el uso de Oracle Linux va a ser que como veremos la instalación será practicamente limpia.

Los prerrequisitos van a ser los mismos que en versiones anteriores de Oracle, instalaremos un Oracle Linux, y crearemos un usuario oracle y un grupo oinstall

La primera imagen que vemos es una pantalla con los colores corporativos y un aspecto mas renovado.

1

Tras esta pantalla, nos viene la tipica imagen en la que nos solicita nuestro usuario de soporte. Nosotros le diremos que no queremos actualizaciones de Oracle.
2

También omitiremos la opcion de registrarla automáticamente con metalink.

3

Tras estas primeras pantallas, llegamos a la opción de crear base de datos, instalar o actualizar, nosotros vamos a probar la instalación en un servidor limpio.En otra entrada probaremos como funciona la actualización, aunque, siempre soy mas partidario de instalar en otro entorno y actualizar despues la base de datos

4

En la siguiente pantalla nos encontramos una opcion nueva y , para mi bastante sorprendente, «escritorio o servidor» .
Sinceramente no se que puede ser una «instalacion de escritorio» de oracle, con lo que, directamente iremos a servidor
5

La siguiente pantalla es bastante mas interesante, además de las opciones clásicas de base de datos «alone» o «Rac», nos aparece la nueva entrada de «Rac OneNode»
En esta entrada haremos una instalación «alone», dejando la de RAC ONE NODE para otra entrada.
Como aperitivo, os diré que el producto Rac One Node es la respuesta de Oracle a la necesidad de una alta disponibilidad «activo/pasivo».
6

Seleccionamos instalación avalada
7

En ingles
8

y Enterprise ( como decía mi abuela, «ande o no ande la burra grande»)
9

En la siguiente pantalla al fin empezamos a elegir opciones de la base de datos.
Al tratarse de una primera instalación de base de datos de pruebas en un entorno virtual vamos a ir a lo fácil y elegiremos una instalación en filesystem.

instalacion oracle 12c paso 9

Indicamos donde queremos el orainventory y el grupo de instalacion (oinstall)
instalacion oracle 12c paso  10
Y el tipo de base de datos (en nuestro caso es indiferente)
instalacion oracle 12c paso 11

En el paso 13 además del SID nos encontramos con una opción interesante, la creación de un contenedor de bases de datos, nosotros vamos a dejarlo como nos pide por defecto

instalacion oracle 12c paso 13
Asignamos la memoria y el juego de caracteres
instalacion oracle 12c paso 13

Y la ubicación de los datafiles (en nuestro caso lo haremos sencillo indicándole que queremos un directorio en el filesystem)
instalacion oracle 12c paso 14

Nosotros no vamos a registrarla en ningun cloud control, ni activaremos la FRA (lo haremos después )

instalacion oracle 12c paso 15
instalacion oracle 12c paso 16

La siguiente pantalla es la de las contraseñas, dado que es un entorno de pruebas, vamos ha hacer la poco recomendable opción de poner en todas la misma
instalacion oracle 12c paso 17 instalacion oracle 12c paso 17[/caption]instalacion oracle 12c paso 18

Al fin llegamos al punto 20, el punto de las comprobaciones, aquí veremos si tenemos todos los parámetros del kernel y paquetes.
instalacion oracle 12c paso 20

Tras esto llegamos a la ventana de resumen, esta version 12c tiene dos mejoras considerables

  • Opcion de editar directamente los puntos que te puedan parecer incorrectos
  • Opcion de generar un fichero de respuesta con las opciones que has creado de la base de datos

instalacion oracle 12c paso 20

Con toda esta información oracle se pondrá a instalar hasta la habitual pantalla en la que nos pide que ejecutemos como root 2 scripts en el filesystem
21

22

tras esto ya solamente queda que cree nuestra base de datos y ya tendremos nuestra version de Oracle 12c funcionando

Opatch, Parcheando la base de datos

Vamos de vuelta con las entradas «for dummies». Hoy vamos a ver la heraamienta de parcheado de Oracle, Opatch

Opatch es un binario que suele estar en el directorio $ORACLE_HOME/OPatch , este directorio no está en la ruta de los binarios, con lo que , probablemente si desde linea de comandos de oracle ejecutas «opatch» no encuentres nada.

Otra de las características mas importantes del Opatch es que es bastante independiente, es decir, al ahora de un parcheado, puedes instalar la ultima versión del Opatch sin interferir con la base de datos, podréis encontrar mas información de esto en soporte con la nota «How To Download And Install The Latest OPatch Version [ID 274526.1]», pero básicamente os adelanto que los pasos son:

  • Descargar el .tgz del ultimo opatch
  • Renombrar el subdirectorio actual ( mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch-fecha )
  • Descomprimir el nuevo opatch ( cd $ORACLE_HOME ; unzup /mnt/downloas/opatch.tgz )

Como decíamos al principio, Opatch es la herramienta que se utiliza para el parcheado de las bases de datos, su uso exacto está descrito en cada uno de los README.TXT del parche a aplicar, con lo que , SIEMPRE hay que seguir esos pasos, pero , en esta entrada vamos a ver la salida básica de algunos casos en los que se usa

Supongamos queremos instalar el parche 8730312, para ello lo descargaremos, y lo descomprimiremos en /home/oracle/parches/

    Comprobacion de prerequisitos de un parche

Lo primero que deberíamos de hacer es comprobar que no va ha haber ningún conflicto entre nuestro parche y la instalacion actual, para ello lanzaremos el Opatch con la opcion CheckConflictAgainstOHWithDetail

[oracle@pruebas1.pamplona.name] [$   ./opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/oracle/parches/
Invoking OPatch 11.1.0.6.6

Oracle Interim Patch Installer version 11.1.0.6.6
Copyright (c) 2009, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /opt/oracle/product/11.1/dbhome_1
Central Inventory : /oracle/oraInventory
   from           : /etc/oraInst.loc
OPatch version    : 11.1.0.6.6
OUI version       : 11.2.0.1.0
OUI location      : /opt/oracle/product/11.1/dbhome_1/oui
Log file location : /opt/oracle/product/11.1/dbhome_1/cfgtoollogs/opatch/opatch2013-03-07_18-45-30PM.log
Patch history file: /opt/oracle/product/11.1/dbhome_1/cfgtoollogs/opatch/opatch_history.txt
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
    Instalación del parche

Una vez tenemos claro que podemos aplicarlo, lo aplicamos siguiendo el README.txt del parche.
La salida del comando de aplicación será algo similar a esto.

 ./opatch apply /home/oracle/parches/8730312/
Invoking OPatch 11.1.0.6.6

Oracle Interim Patch Installer version 11.1.0.6.6
Copyright (c) 2009, Oracle Corporation.  All rights reserved.

Oracle Home       : /opt/oracle/product/11.1/dbhome_1
Central Inventory : /oracle/oraInventory
   from           : /etc/oraInst.loc
OPatch version    : 11.1.0.6.6
OUI version       : 11.2.0.1.0
OUI location      : /opt/oracle/product/11.1/dbhome_1/oui
Log file location : /opt/oracle/product/11.1/dbhome_1/cfgtoollogs/opatch/opatch2013-03-01_16-11-15PM.log
Patch history file: /opt/oracle/product/11.1/dbhome_1/cfgtoollogs/opatch/opatch_history.txt
ApplySession applying interim patch '8730312' to OH '/opt/oracle/product/11.1/dbhome_1'
Running prerequisite checks...
OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/opt/oracle/product/11.1/dbhome_1')

Is the local system ready for patching? [y|n]  y
User Responded with: Y
Backing up files and inventory (not for auto-rollback) for the Oracle Home
Backing up files affected by the patch '8730312' for restore. This might take a while...
Backing up files affected by the patch '8730312' for rollback. This might take a while...

Patching component oracle.rdbms, 11.2.0.1.0...
Updating archive file "/opt/oracle/product/11.1/dbhome_1/lib/libserver11.a"  with "lib/libserver11.a/kewa.o"
Updating archive file "/opt/oracle/product/11.1/dbhome_1/lib/libserver11.a"  with "lib/libserver11.a/kewast.o"
Running make for target ioracle
ApplySession adding interim patch '8730312' to inventory

Verifying the update...
Inventory check OK: Patch ID 8730312 is registered in Oracle Home inventory with proper meta-data.
Files check OK: Files from Patch ID 8730312 are present in Oracle Home.

The local system has been patched and can be restarted.
OPatch succeeded.
    Ver los parches que tienes instalados

Una de las funcionalidades es el ver que parches tienes instalados, para ello, solamente hay que ir al directorio donde está el Opatch y ejecutar el comando con el flag lsinventory

[oracle@pruebas1.pamplona.name] [$ cd  $ORACLE_HOME/OPatch
[oracle@pruebas1.pamplona.name] [$ ./opatch lsinventory
Invoking OPatch 11.1.0.6.6
Oracle Interim Patch Installer version 11.1.0.6.6
Copyright (c) 2009, Oracle Corporation.  All rights reserved.
Oracle Home       :/opt/oracle/product/11.1/dbhome_1
Central Inventory : /oracle/oraInventory
   from           : /etc/oraInst.loc
OPatch version    : 11.1.0.6.6
OUI version       : 11.2.0.1.0
OUI location      : /opt/oracle/product/11.1/dbhome_1
Log file location : /opt/oracle/product/11.1/dbhome_1/cfgtoollogs/opatch/opatch2013-03-26_11-46-16AM.log

Patch history file: /opt/oracle/product/11.1/dbhome_1/cfgtoollogs/opatch/opatch_history.txt

Lsinventory Output file location : /opt/oracle/product/11.1/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2013-03-26_11-46-16AM.txt

--------------------------------------------------------------------------------
Installed Top-level Products (1):

Oracle Database 11g                                                  11.2.0.1.0
There are 1 products installed in this Oracle Home.

Interim patches (1) :

Patch  8730312      : applied on Fri Mar 01 16:12:29 CET 2013
Unique Patch ID:  12177426
   Created on 7 Feb 2010, 06:41:26 hrs PST8PDT
   Bugs fixed:
     8730312
--------------------------------------------------------------------------------

OPatch succeeded.

Aquí podemos ver como tenemos aplicado el parche 8730312 , la fecha en la que se aplicó y el bug que soluciona.

Como siempre, mas información en soporte en las notas

  • 274526.1 How To Download And Install The Latest OPatch Version
  • 458485.1 How to find whether the one-off Patches will conflict or not?
  • 551394.1 What Are The MANDATORY Information Required To File A Merge Patch Request?.

Modificar el editor por defecto de SQLplus en Unix

Vamos con una nota rápida y sencilla, pero bastante útil.

SQLPlus tiene por defecto el editor ed , sinceramente, el ed no es el editor mas usado del mundo, de hecho, no conozco a nadie que lo tenga como su primera opción, la pregunta ahora es, ¿Como hacemos para modificar este editor por defecto?

muy sencillo:


define_editor='vi'

Para no tener que estar añadiendo esta línea cada vez que entramos, podemos añadirla al fichero profile de sqlplus genérico que se encuentra en


$ORACLE_HOME/sqlplus/admin/glogin.sql

Problemas con los requerimientos del cliente 11gr2 en windows

Volvemos tras las vacaciones navideñas con una pequeña entrada de esas tremendamente simples, pero que pueden ser evitarnos una gran pérdida de tiempo.

Una de las cosas mas engorrosas de las instalaciones de Oracle es la instalación del cliente, en primer lugar, porque pocas veces nos especifican que es exactamente los componentes del cliente que necesitan, y en segundo lugar, por que, hasta estas últimas versiones la instalación ( especialmente la desinstalación) del cliente de windows era muy engorrosa.

Pues bien, el otro día en la instalación de un cliente 11gr2 en windows me encontré con un error nuevo:

error_instalacion_XP

Mi windows XP detectaba un error en los requerimientos de la instalacion del cliente (no instantclient), cuando, todos los requerimientos eran correctos.

La solución es tan sencilla como el habilitar el uso compartido de C$. Parece ser que el instalador utiliza «\\< servidor >\C$\temp» , con lo que si no está habilitado el recurso, la instalación falla.

La información completa del caso está (como siempre) en metalink, en la nota «Installation of 11gR2 on Windows Fails Checking Requirements [ID 1133495.1]»

Sqlplus para dummies III ( Bloqueos )

Otra de las cosas que mas amenudo tenemos que hacer es el encontrar quien nos está bloqueando y que bloquea.

Para ello, la consulta mas sencilla que podemos hacer es:

SELECT
     a.session_id , username ,type , mode_held, mode_requested 
     lock_id1,lock_id2
FROM
     sys.v_$session b,
     sys.dba_blockers c,
     sys.dba_lock a
WHERE
     c.holding_session=a.session_id AND
     c.holding_session=b.sid

Pero,  seguramente queramos saber mas cosas, como que tipo de bloqueos y que objetos están implicados, para ello podemos usar esta consulta en la que aparecen  datos de la sesión, del proceso tanto en el server como en el cliente y de los objetos y tipo de bloqueo que lleva a cabo

 

SELECT 
substr(to_char(l.sid),1,4) "SID", 
s.serial# "SERIAL",
P.spid "Server  PID", 
s.USERNAME,
s.type, 
s.process "Client  PID", 
MACHINE, 
l.type, 
DECODE(L.TYPE,'MR','File_ID: '||L.ID1, 
'TM', LO.NAME, 
'TX','USN: '||to_char(TRUNC(L.ID1/65536))||' RWO: '||nvl(RWO.NAME,'None'),L.ID1) LOCK_ID1, 
decode(l.lmode, 
0, 'None', 
1, 'Null', 
2, 'Row-S (SS)', 
3, 'Row-X (SX)', 
4, 'Share', 
5, 'S/Row-X (SSX)', 
6, 'Exclusive', 
substr(to_char(l.lmode),1,13)) "Locked Mode", 
decode(l.request, 
0, 'None', 
1, 'Null', 
2, 'Row-S (SS)', 
3, 'Row-X (SX)', 
4, 'Share', 
5, 'S/Row-X (SSX)', 
6, 'Exclusive', 
substr(to_char(l.request),1,13)) "Requested", 
l.ctime, 
l.block ,
s.logon_time
FROM v$process P, 
v$session S, 
v$lock l, 
sys.obj$ lo, 
sys.obj$ rwo 
WHERE l.sid = S.sid (+) 
AND S.paddr = P.addr (+) 
AND LO.OBJ#(+) = L.ID1 
AND RWO.OBJ#(+) = S.ROW_WAIT_OBJ#
and S.type!='BACKGROUND'
order by SID;