12 febrero 2013

Errores Míticos de Oracle: ORA-27303



El siguiente mensaje apareció al iniciar el cluster de bases de datos, en unas de esas instalaciones que hago por Europa últimamente.
.
>srvctl start database d clusdb
PRCR-1079 : Failed to start resource ora.clusdb.db
CRS-5017: The resource action "ora.clusdb.db start" encountered the following error:
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+DATA/clusdb/spfileclusdb.ora'
ORA-17503: ksfdopn:2 Failed to open file +DATA/clusdb/spfileclusdb.ora
ORA-27140: attach to post/wait facility failed
ORA-27300: OS system dependent operation:invalid_egid failed with status: 1
ORA-27301: OS failure message: Operation not permitted
ORA-27302: failure occurred at: skgpwinit6
ORA-27303: additional information: startup egid = 501 (oinstall), current egid = 506 (asmadmin)

Los permisos de los ficheros eran:.


cd $ORACLE_HOME/bin ls -l oracle
-rwxr-s--x 1 oracle
asmadmin 232437369 Feb 30 14:01 oracle

cd $GI_HOME/bin ls -l oracle
-rwxr-x--x 1 oracle oinstall 204010819 Feb 30 13:57 oracle

Los permisos correctos de estos ficheros son:

cd $ORACLE_HOME/bin ls -l oracle
-rwsr-s--x. 1 oracle asmadmin 220009315 Jun 12 16:59 oracle

cd $GI_HOME/bin ls -l oracle
-rwsr-s--x. 1 grid oinstall 204009973 Jun 12 14:14 oracle


Si se usa separación de roles

cd $GI_HOME/bin ls -l oracle
-rwsr-s--x 1 oracle oinstall 204010819 Feb 30 13:57 oracle

Los permisos se pueden cambiar mediante estos comandos y el error desaparecerá:

chmod 6751 $ORACLE_HOME/bin/oracle
ls -l $ORACLE_HOME/bin/oracle

-rwsr-s--x 1 oracle asmadmin 232437369 Feb 30 14:01 oracle

chmod 6751 $GI_HOME/bin/oracle
ls -l oracle
-rwsr-s--x 1 oracle oinstall 204010819 Feb 30 13:57 oracle
 



Notas útiles de Oracle

  • 11gR2 GRID User Cannot Connect To ASM Instance [ID 1382648.1]
  •  Pre 11.2 Database Issues in 11gR2 Grid Infrastructure Environment [ID 948456.1]
  •   How to change ownership and group memberships of Grid home in 11.2 Standalone [ID 1171674.1]
  •  ORA-15183 Unable to Create Database on Server using 11.2 ASM and Grid Infrastructure [ID 1054033.1] 
  • Database Creation on 11.2 Grid Infracture with Role Separation ( ORA-15025, KFSG-00312, ORA-15081 ) [ID 1084186.1]

Introducción a ASM




ASM es un manejador de volúmenes y solución de almacenamiento de Oracle para manejar archivos de la Base de Datos Oracle.
ASM en 11gR2 se instala con el ORACLE_HOME del  Grid Infrastructure y antes de que se instale la primera Base de Datos, esta a su vez tiene un ORACLE_HOME distinto.

ASM utiliza grupos de discos para almacenar los archivos; Estos grupos de discos son una colección de discos que ASM los maneja como una unidad. Los discos pueden ser:
·         Un disco duro completo o una partición del disco duro 
·         Un disco o una partición de un array de discos
·         Volúmenes lógicos
·         NFS (Network File System)

Cada disco está dividido en unidades de alojamiento (AU), esta unidad es fundamentalmente como se alojan los datos en el disco, un extent de archivo son una o varias AUs y un archivo en ASM consiste de uno o varios extents. El AU se determina con el parámetro AU_SIZE y los valores pueden ser 1, 2, 4, 8, 16, 32, o 64 MB.

Los archivos que se almacenan en ASM si no se está utilizando ACFS (ASM Cluster  Filesystem), es decir, entornos con una sola instancia sin RAC, son: 
·         Control files
·         Data files, data files temporales, y copias de los data files
·         SPFILEs
·         Online redo logs, archive logs, y Flashback logs
·         Ficheros de respaldos de RMAN
·         Change tracking bitmaps
·         Juegos de datos Data Pump.

ASM también te permite manejar el espejeo (Mirroring) de los discos en tres maneras
·         Normal.-Espejeo de dos vías
·         High.-Espejeo de tres vías
·         External.-No usa espejeo de ASM, si no tu configuración RAID que usaste para la redundancia.

ASM te permite dos tipos de repartir los datos entre los discos (Disk Striping), que se le llaman:
·         Fine-Grained Striping.- Este reduce el estado latente para ciertos tipos de archivos repartiendo la carga más ampliamente entre los discos. Todas las unidades del “stripe” son de 128kb sin importar el tamaño de la AU.
·         Coarse-Grained Striping.- Este provee un balance de cargas para los grupos de discos. Todas las unidades del stripe son igual al tamaño del AU.

Instancia de Automated Storage Management (ASM)

ASM utiliza una instancia para manejar los grupos de discos, esta es una instancia común y corriente, esta realiza mucho menores tareas que una instancia que utilizarías en producción y por ende su memoria es mucho menor (en 11.2.0.3 se recomienda que sea MEMORY_TARGET=1536m).

Grupo de Discos ASM
Oracle recomienda dos grupos de discos (diskgroups) por instancia no RAC o por nodo RAC, para proveer balance de utilización, rendimiento y gestión.

Database Work Area: Aquí es donde los ficheros activos de la base de datos (datafiles, control files, online redo logs y ficheros change tracking usados en la salvaguarda incremental) son almacenados.
Esta localización está indicada en  DB_CREATE_FILE_DEST.

·         Grupo de Discos para desarrollo 1 (0.5 Tb, por ejemplo)
·         Grupo de discos para desarrollo 2 (3.5 Tb, por ejemplo)


Figura 1: Arquitectura de ASM  en la máquina de desarrollo.

Respaldos de la instancia ASM.
No aplicable, dado que ASM no tiene ficheros que aplicar
Despliegue típico de ASM
Un despliegue típico podría venir como sigue:
Administrador del ASM
o    Usuario: asm
o    Grupos: oinstall, asmdba(OSDBA), asmadmin(OSASM)
Administrador  del base de datos
o    Usuario: oracle
o    Grupos: oinstall, asmdba(OSDBA of ASM), dba(OSDBA)

Conclusión

En Oracle Grid Infrastructure 11g Release 2, ASM simplifica, automatiza y reduce los costes y gastos generales, proporcionando una solución unificada e integrada para todas sus necesidades de gestión de archivos que elimina la necesidad de una tercera parte del volumen gerentes, sistemas de archivos y plataformas de clúster.