martes, 19 de junio de 2012

Oracle ERROR ORA-15027, al intentar hacer un drop de un diskgroup en ASM


Al intentar borrar un diskgroup en ASM, nos aparece el siguiente error:

SQL> DROP DISKGROUP DATA INCLUDING CONTENTS;
DROP DISKGROUP DATA INCLUDING CONTENTS
*
ERROR at line 1:
ORA-15039: diskgroup not dropped
ORA-15027: active use of diskgroup "DATA" precludes its dismount

El grupo para que pueda ser borrado es necesario que esté en estado mounted. Lo comprobamos.

SQL> select GROUP_NUMBER,NAME,STATE  from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           1 DATA                           MOUNTED

Al intentar realizar la operación de desmontado, nos aparece el mismo error.

SQL> alter DISKGROUP DATA DISMOUNT;
alter DISKGROUP DATA DISMOUNT
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15027: active use of diskgroup "DATA" precludes its dismount

Uno de los motivos por el que no nos deje realizar ninguna de estas operaciones es porque el grupo esta siendo usado por alguna base de datos.
Para hacer esta comprobación consultamos la vista “V$ASM_CLIENT”.

SQL> select * from  v$asm_client;

no rows selected

No es nuestro caso, lo siguiente que comprobaremos es el contenido del diskgroup, para ver si hay algún contenido que esté provocando este error.

SQL> select group_number, file_number, bytes, type from v$asm_file;
GROUP_NUMBER FILE_NUMBER      BYTES TYPE
------------ ----------- ---------- ------------------------------------------
           1         253       1536 ASMPARAMETERFILE
           1         256  713039872 DATAFILE
           1         257  576724992 DATAFILE
           1         258   94380032 DATAFILE
           1         259    5251072 DATAFILE
           1         260    9748480 CONTROLFILE
           1         261    9748480 CONTROLFILE
           1         262   52429312 ONLINELOG
           1         263   52429312 ONLINELOG
           1         264   52429312 ONLINELOG
           1         265   52429312 ONLINELOG
           1         266   52429312 ONLINELOG
           1         267   52429312 ONLINELOG
           1         268   30416896 TEMPFILE
           1         269       2560 PARAMETERFILE

Como podemos ver en la primera línea de la consulta, este diskgroup contiene el ASMPARAMETERFILE, por lo tanto no podemos borrar el diskgroup hasta que no hayamos movido el ASMPARAMETERFILE a otro diskgroup o a una ubicación física fuera del ASM.

Comprobamos que efectivamente el parameterfile del ASM está en este diskgroup.

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------
spfile                               string     +DATA/asm/asmparameterfile/reg
                                                 istry.253.786031013

Es recomendable ubicar el asmparameterfile en un diskgroup de ASM, pero hasta que no creemos uno nuevo lo moveremos temporalmente a una ubicación externa al ASM. Usaremos la utilidad “asmcmd” desde el SO.

-bash-3.00$ asmcmd
ASMCMD> spget
+DATA/asm/asmparameterfile/registry.253.786031013

Realizamos el movimiento con “spmove”

ASMCMD> spmove '+DATA/asm/asmparameterfile/registry.253.786031013' '/oracle/app/oracle/11.2/grid/dbs/spfile+ASM.ora'
ORA-15032: not all alterations performed
ORA-15028: ASM file '+DATA/asm/asmparameterfile/registry.253.786031013' not dropped; currently being accessed (DBD ERROR: OCIStmtExecute)

El error que nos muestra es normal, se debe a que la base de datos está abierta con ese spfile, el proceso de movimiento ha copiado correctamente a la nueva ubicación el spfile, pero a la hora de borrarlo no puede ya que el archivo está en uso.

Comprobamos que lo ha movido correctamente a pesar del error.

ASMCMD> spget
/oracle/app/oracle/11.2/grid/dbs/spfile+ASM.ora
ASMCMD> quit



Reiniciamos la base de datos ASM para que arranque con el parameterfile de la nueva ubicación.

-bash-3.00$ echo $ORACLE_SID
+ASM
-bash-3.00$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.1.0 Production on Mar Jun 19 10:10:20 2012

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


Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Automatic Storage Management option

SQL> shutdown immediate;
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup;
ASM instance started

Total System Global Area  284008448 bytes
Fixed Size                  2147392 bytes
Variable Size             256695232 bytes
ASM Cache                  25165824 bytes
ORA-15110: no diskgroups mounted

SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------
spfile                               string     /oracle/app/oracle/11.2/grid/d
                                                bs/spfile+ASM.ora

Procedemos de Nuevo con el borrado del diskgroup.

SQL> drop diskgroup DATA including contents;
drop diskgroup DATA including contents
*
ERROR at line 1:
ORA-15039: diskgroup not dropped
ORA-15001: diskgroup "DATA" does not exist or is not mounted

El comando de borrado vuelve a fallar porque el grupo está desmontado, lo montamos y ejecutamos el drop de nuevo.

SQL> select GROUP_NUMBER,NAME,STATE  from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           0 DATA                           DISMOUNTED

SQL> alter diskgroup DATA mount;

Diskgroup altered.

SQL> drop diskgroup DATA including contents;

Diskgroup dropped.


Creamos un nuevo grupo de ASM, para mas info: http://zelioman.blogspot.com.es/2012/06/asm-disk-groups.html

Una vez ya tenemos el nuevo grupo de ASM creado, movemos de nuevo el parameterfile de ASM al nuevo grupo de discos ASM.

ASMCMD> spget
/oracle/app/oracle/11.2/grid/dbs/spfile+ASM.ora
ASMCMD> spmove '/oracle/app/oracle/11.2/grid/dbs/spfile+ASM.ora' '+DATA1/asm/asmparameterfile/spfile+ASM.ora'
ORA-15056: additional error message
ORA-17502: ksfdcre:4 Failed to create file +DATA1/asm/asmparameterfile/spfile+ASM.ora
ORA-15046: ASM file name '+DATA1/asm/asmparameterfile/spfile+ASM.ora' is not in single-file creation form
ORA-15124: ASM file name '+DATA1/asm/asmparameterfile/spfile+ASM.ora' contains an invalid alias name
ORA-06512: at line 7 (DBD ERROR: OCIStmtExecute)

El nombre no es válido, vamos a usar el que tenía antes.

ASMCMD> spmove '/oracle/app/oracle/11.2/grid/dbs/spfile+ASM.ora' '+DATA1/asm/asmparameterfile/registry.253.786031013'
ORA-15056: additional error message
ORA-17502: ksfdcre:4 Failed to create file +DATA1/asm/asmparameterfile/registry.253.786031013
ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higher
ORA-06512: at line 7 (DBD ERROR: OCIStmtExecute)
ASMCMD> quit

El diskgroup debe tener la propiedad COMPATIBLE en 11.2, ahora tiene la 10.1.

-bash-3.00$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.1.0 Production on Mar Jun 19 11:18:35 2012

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


Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Automatic Storage Management option

SQL> select GROUP_NUMBER,SECTOR_SIZE,STATE,COMPATIBILITY,DATABASE_COMPATIBILITY from  v$asm_diskgroup;

GROUP_NUMBER SECTOR_SIZE STATE       COMPATIBILITY                                                DATABASE_COMPATIBILITY
------------ ----------- ----------- ------------------------------------------------------------ ------------------------------------------------------------
           1         512 MOUNTED     10.1.0.0.0                                                   10.1.0.0.0

Cambiamos el COMPATIBILITY a 11.2.

SQL> alter diskgroup DATA1 set attribute 'compatible.asm' = '11.2';

Diskgroup altered.

SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Automatic Storage Management option

-bash-3.00$ asmcmd
ASMCMD> spget
/oracle/app/oracle/11.2/grid/dbs/spfile+ASM.ora
ASMCMD> spmove '/oracle/app/oracle/11.2/grid/dbs/spfile+ASM.ora' '+DATA1/asm/asmparameterfile/registry.253.786031013'
ORA-15056: additional error message
ORA-17502: ksfdcre:4 Failed to create file +DATA1/asm/asmparameterfile/registry.253.786031013
ORA-15177: cannot operate on system aliases
ORA-06512: at line 7 (DBD ERROR: OCIStmtExecute)

El nombre proporcionado no es válido.

ASMCMD> spmove '/oracle/app/oracle/11.2/grid/dbs/spfile+ASM.ora' '+DATA1/asm/asmparameterfile/spfile'
ASMCMD> spget
+DATA1/asm/asmparameterfile/spfile











Reiniciamos la base de datos para que arranque con el spfile en la nueva ubicación.

-bash-3.00$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.1.0 Production on Mar Jun 19 11:46:23 2012

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


Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Automatic Storage Management option

SQL> shutdown immediate;
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup
ASM instance started

Total System Global Area  284008448 bytes
Fixed Size                  2147392 bytes
Variable Size             256695232 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted
SQL>
SQL>
SQL>
SQL>
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------
spfile                               string     +DATA1/asm/asmparameterfile/sp
                                                file







No hay comentarios:

Publicar un comentario