Acerca de admin

Tras más de 20 años trabajando con tecnologías Oracle, me decidí a recopilar en un Blog algunas de las cosillas útiles para el día a día.

Instalacion básica para Oracle 11

Repasando la entrada
Creación de una plataforma de pruebas RAC con VirtualBox veo como partimos de la base de una instalación de linux ya hecha.

Hoy vamos a hacer una entrada rápida con los pasos y paquetes que hay que preparar para una instalación básica de Oracle en un Oracle Linux 6.

Partiremos de la base de que tenemos una instalación mínima.

Los pasos serán

Deshabilitar SELinux

Editaremos el fichero vi /etc/selinux/config
dejándolo como

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Deshabilitar iptables y postfix

No necesitaremos estos servicios, por lo que podemos quitamos del arranque

root@plantilla rc3.d]# rm /etc/rc3.d/S08iptables 
rm: ¿borrar el enlace simbólico «/etc/rc3.d/S08iptables»? (s/n) s
[root@plantilla rc3.d]# rm /etc/rc3.d/S80postfix 
rm: ¿borrar el enlace simbólico «/etc/rc3.d/S80postfix»? (s/n) s

Actualizamos y metemos los paquetes básicos

Necesitaremos algunos paquetes para la BBDD, así pues, ejecutaremos

yum update 
yum install kernel-devel
yum  groupinstall "Development Tools"
yum install oracle-validated

Instalamos las X para los accesos remotos

Para poder lanzar las herramientas gráficas necesitaremos unos pocos paquetes,la manera mas sencilla de obtenerlos es con el paquete xeyes que es el testador definitivo de las Windows y aceptando las dependencias.

yum install xeyes xauth 

Instalamos Utilidades básicas

Hay una serie de utilidades que seguramente usaremos y que no estaban en la instalacion mínima, estas son

yum install unzip atop  yum-utils ntp parted  oracleasm-support kmod-oracleasm oracleasmlib oracleasm-`uname -r` 
yum install compat-libcap1 compat-libstdc++-33 sysstat libaio-devel ksh libaio bind-utils smartmontools cvuqdisk redhat-lsb-core

Con esto, tenemos un Oracle Linux instalado listo para servir de plantilla para la instalación de nuestra base de datos

Usuario administrador de Weblogic en OEM12C

Vamos con una entrada rápida de esas que nos evitarán quebraderos de cabeza.

¿Sabemos cual es el usuario de administración de nuestro weblogic?

Cuando vamos a parchear nuestro Cloud control nos encontramos con lo siguiente

oracle@emc 18295180]$ opatchauto apply -analyze -property_file bundle.xml
OPatch Automation Tool  
 Copyright (c) 2013, Oracle Corporation.  All rights reserved.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          OPatchauto version : 11.1.0.10.0                                                                                                                                                                                                             OUI version        : 11.1.0.11.0                                                                                                                                                                                                             Running from       : /u01/app/oracle/middleware/oms
Log file location  : /u01/app/oracle/middleware/oms/cfgtoollogs/opatch/opatch2015-05-26_09-09-22AM_1.log
opatchauto log file: /u01/app/oracle/middleware/oms/cfgtoollogs/opatchauto/18295180/opatch_oms_2015-05-26_09-09-27AM_analyze.log
OPatch will do the following:
[Get weblogic Admin Server information]                        : Interview to get weblogic Admin Server of the GC Domain
[Generate configuration context of the GC Domain]              : Get the configuration context for the GC Domain
[Run patch(es) deployment prerequisite checks]                 : Check the status of admin server of the GC Domain
                                                               :  Check the status of OMS repository 
[Run patch(es) binary prerequisite checks]                     :Check if all the patches can be applied to or rolled back from their corresponding Oracle Home
[Generate execution steps to apply and deploy the patch(es)]   : Generate execution steps to modify bits and deploy artifacts of the patch

Please enter the WebLogic Admin Server URL for primary OMS(t3s://emc.pamplona.name :7103):>
Please enter the WebLogic Admin Server username for primary OMS:> 
Please enter the WebLogic Admin Server password for primary OMS:> 

¿Cual es ese usuario que nos piden?
Si vamos a la URL que nos indica el fichero setupinfo.txt que nos dejó la instalacion en $ORACLE_HOME/install vemos que:

 Admin Server URL: https://emc.pamplona.name:7103/console

Y acediendo a esa URL nos encontramos con
ScreenHunter_112 May. 26 09.44

Pero si revisamos los pasos de la instalacion del OEM12c veremos como en ninguna de las ventanas indicamos cual era el usuario de administrador del servidor de aplicaciones que va a correr el OEM12c. Solo indicamos el password.

La respuesta es sencilla :

usuario : weblogic
Contraseña: La de la instalación

ORA-08189: no se puede realizar flashback

Hoy vamos a ver otra entrada para dummies.
Un error tremendamente sencillo que puede darnos algún susto, pero que hará que todo se quede en eso, en un susto.

Supongamos que queremos volver una tabla de nuestra base de datos ha hace 2 horas , lo más inmediato es intentar hacer:

FLASHBACK TABLE OWNER.TABLA 
  TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '120' minute);

Pero, nos encontramos con el error:

Error at line 1
ORA-08189: no se puede realizar flashback en la tabla porque el movimiento de filas no está activado

Lo primero que nos viene a la cabeza es pensar que no vamos a poder ser capaces de recupera la tabla, pero, realmente, cuando obtenemos este error (o en Ingles)
ORA-08189: cannot flashback the table because row movement is not enabled
no está todo perdido, simplemente nos está indicando que no tenemos la opcion de «row movement» para poder llevar a cabo esta actualizacion.

Para solventar este problema haremos


ALTER TABLE OWNER.TABLA ENABLE ROW MOVEMENT;

Con este sencillo comando ya podremos ejecutar nuestro flashback… TO TIMESTAMP sin recibir alertas de error

ORA-24247 con el paquete STMP

Hoy vamos a ver como resolver errores ORA-24247 en la version 11g . Aunque desde aquí siempre hemos mantenido (y mantendremos) que la base de datos no debería ser la responsable de enviar correos o conectarse a «vete a saber donde» hay entornos en los que nos vemos obligados a ello.

¿Que ocurre si nos encontramos con un error de este tipo ?

error-ora-ORA-24247.jpg

ERROR at line 1:
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at "SYS.UTL_TCP", line 17
ORA-06512: at "SYS.UTL_TCP", line 246
ORA-06512: at "SYS.UTL_SMTP", line 115
ORA-06512: at "SYS.UTL_SMTP", line 138
ORA-06512: at "XXX", line 36
ORA-06512: at line 1

Este error es debido a que no contamos con una ACl para el servicio de red, las ACLs son un elemento nuevo de Oracle 11g (11.1.0.6) que establece un filtrado mas detallado (fine-grained access) y que controla el acceso a algunos paquetes como el UTL_SMTP o el UTL_HTTP.

¿como lo solicionamos?

Sencillamente tenemos que crear una ACL que nos permita acceder al puerto 25 de nuestro servidor de correo.
En este caso lo haremos para

  • SMTP Server 127.0.0.1 (localhost de la BBDD)
  • Puerto 25 ( puerto estandard de correo)
  • usuarios Usuario1 y usuario2

Así pues , ejecutaremos :

begin
--creamos la ACL
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL
   (acl => 'send_mail.xml',
   description => '
   send_mail ACL',
   principal => 'USUARIO1',
   is_grant => true, 
   privilege => 'connect');
-- Asignamos privilegios  al usuario elegido 
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
   acl => 'send_mail.xml',
   principal => 'USUARIO1',
   is_grant  => true,
   privilege => 'connect');
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
   acl => 'send_mail.xml',
   principal => 'USUARIO1',
   is_grant  => true,
   privilege => 'resolve');
-- Asignamos provilegios  al usuario elegido 
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
   acl => 'send_mail.xml',
   principal => 'USUARIO2',
   is_grant  => true,
   privilege => 'connect');
--Asignamos recursos 
 dbms_network_acl_admin.assign_acl (
   acl => 'send_mail.xm',
   host => '127.0.0.1',
   lower_port => 25,
  upper_port => 25);
END;
/
COMMIT;

Si queremos ver las ACL creadas

SELECT * FROM dba_network_acls;

Y los privilegios de cada una de ellas

SELECT acl
      ,principal
      ,privilege
      ,is_grant
      ,invert
      ,start_date
      ,end_date
  FROM dba_network_acl_privileges;

Como siempre , mas información en oracle en las notas:

ORA-29786 eliminando un Diskgroup

Hoy vamos a ver un error que puede ser bastante común si creamos las cosas a mano » a la antigua usanza».

Veamos algo que puede ocurrirnos cuando intentamos eliminar un diskgroup en nuestro ASM

[oracle@test]$ sqlplus "/as sysasm"
SQL*Plus: Release 11.2.0.3.0 Production on Fri Apr 09 21:10:38 2015
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Automatic Storage Management option
SQL> DROP DISKGROUP TEMP INCLUDING CONTENTS;
DROP DISKGROUP TEMP INCLUDING CONTENTS
*ERROR at line 1:
ORA-15039: diskgroup not dropped
ORA-29786: SIHA attribute GET failed with error [Attribute 'SPFILE' sts[200]lsts[0]]

Este error nos va a dar tanto si está montado, desmontado, tiene ficheros, o está vacío, y , el problema es el modo de creacion.

Desde la versión 11gr2 el ASM es un recurso mas del CRS, por lo cual, para poder llevar a cabo determinadas operaciones como create/drop diskgroup, create pfile/spfile es necesario que el ASM esté registrado como un recurso del cluster.

La solucion para poder llevar a cabo estas acciones es añadir el ASM al repositorio del cluster

srvctl add asm -h
Adds an ASM configuration to be managed by Oracle Restart.
Usage: srvctl add asm [-l ] [-p ] [-d ]
    -l            Listener name
    -p               Server parameter file path
    -d       ASM diskgroup discovery string
    -h                       Print usage


srvctl add asm  -p $GRID_HOME/dbs/init+ASM.ora 
srvctl status asm

Más informacion como siempre en metalink en la nota