Redundancia de los votingdisk en ASM

Hoy vamos a ver un a entrada sencilla sobre la redundancia en los voting disk.
Supongamos tenemos un RAC con un votedisk en un grupo de ASM externo.

[grid@rac1 ~]$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   9711d76755664f81bfeac1daf04aefcf (/dev/oracleasm/disks/OCRVOTING) [OCRVOTING]
Located 1 voting disk(s).

[grid@rac1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
	 Version                  :          3
	 Total space (kbytes)     :     262120
	 Used space (kbytes)      :       2692
	 Available space (kbytes) :     259428
	 ID                       :  241611837
	 Device/File Name         : +OCRVOTING
                                    Device/File integrity check succeeded
                                    Device/File not configured
                                    Device/File not configured
                                    Device/File not configured
                                    Device/File not configured
	 Cluster registry integrity check succeeded
         Logical corruption check bypassed due to non-privileged user

Nosotros tenemos un DISKGROUP de ASM con redundancia HIGH , y queremos llevar nuestro votingdisk a este disco .

column name format a20;
column state format a20;
column type format a20;
select NAME,STATE,TYPE from v$asm_diskgroup;

NAME		     STATE		  TYPE
-------------------- -------------------- --------------------
OCRVOTING	     MOUNTED		  EXTERN
REDO		     DISMOUNTED
DATA		     MOUNTED		  HIGH
ACFS		     DISMOUNTED
OCRASM		     MOUNTED		  EXTERN

Ejecutamos el comando crsctl replace votedisk +DATA y recibiremos el siguiente error:

[grid@rac1 ~]$ crsctl replace votedisk +DATA
Failed to create voting files on disk group DATA.
Change to configuration failed, but was successfully rolled back.
CRS-4000: Command Replace failed, or completed with errors.

¿Como podemos saber mas de este error?

Vamos a mirar el alert.log del asm

tail -900 /u01/app/oracle/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log
TE: [crsctl.bin@rac1.pamplona.name (TNS V1-V3) 20094] opening OCR file
Wed Aug 19 11:39:20 2015
NOTE: updated gpnp profile ASM diskstring: /dev/oracleasm/disks/*
Wed Aug 19 11:39:20 2015
NOTE: Creating voting files in diskgroup DATA
Wed Aug 19 11:39:20 2015
NOTE: Voting File refresh pending for group 3/0xe73953ba (DATA)
NOTE: Attempting voting file creation in diskgroup DATA
NOTE: voting file allocation on grp 3 disk DATA_0000
NOTE: voting file allocation on grp 3 disk DATA_0001
NOTE: voting file allocation on grp 3 disk DATA_0002
ERROR: Voting file allocation failed for group DATA
Errors in file /u01/app/oracle/diag/asm/+asm/+ASM1/trace/+ASM1_ora_20102.trc:

Y que error tenemos en este fichero de traza?

cat /u01/app/oracle/diag/asm/+asm/+ASM1/trace/+ASM1_ora_20102.trc
..
.

*** 2015-08-19 11:39:24.754
Updating headers of disk /dev/oracleasm/disks/ASM03 with 96 128
PST-new:0x7f6053f8fe60:0x9f1d9478:45:
  /dev/oracleasm/disks/ASM03:67f2cd24882e4f46bfe07f85554e0d33:
ORA-15274: Not enough failgroups (5) to create voting files

Como podemos ver, el GRID ha visto que nuestro grupo de ASM no cuenta con 5 failgroups ( solamente cuenta con 3 discos), con lo que ha echado atrás la operación.

Que pasaría si quisiesemos llevarlo a otro external?

Si queremos llevarlo a otro external veremos que funciona correctamente.

[grid@rac1 ~]$ crsctl replace votedisk  +OCRASM
Successful addition of voting disk 5f3f3404c2cd4f24bfa6ca5de9494bba.
Successful deletion of voting disk 9711d76755664f81bfeac1daf04aefcf.
Successfully replaced voting disk group with +OCRASM.
CRS-4266: Voting file(s) successfully replaced

Y si quisiéramos añadir otra ASM con redundancia external?

[grid@rac1 ~]$ crsctl add css votedisk +OCRVOTING
CRS-4671: This command is not supported for ASM diskgroups.
CRS-4000: Command Add failed, or completed with errors.

Vemos como tampoco nos permite el poner el voting disk en 2 ASM DISKGROUPS

Conclusiones

Podemos beneficiarnos (y es aconsejable) de la redundancia del ASM para el voting disk, pero, hay que tener en cuenta que :

  • No podemos mezclar voting disk en asm y no asm
  • Voting disk necesita unos determinados failugre groups en ASM
    • External: No ha dependencia ya que se gestiona externamente
    • Normal: Deberemos de tener un mínimo de 3 failgroups
    • External: deberemos de terner un mínimo de 5 failgroups
  • Si usamos ASM para los voting disk la redundancia la marca el ASM

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: