Category: ASM (Automatic Storage Management)

Lo potente de la vista V$ASM_DISK



La vista V$ASM_DISK es la encargada de mostrar entre otras cosas los discos que está utilizando una instancia RDBMS, pero tiene ciertas diferencias dependiendo donde se despliegue



Está es la consulta :)

col path format a40
set linesize 180
col path format a30
col name format a20

select group_number ,
disk_number ,
header_status ,
state ,
total_mb ,
free_mb ,
name ,
path
from v$asm_disk
order by 1 desc ,2



Si se ejecuta dentro de la instancia ASM , muestra todos los discos que han sido descubiertos mediante el parámetro ASM_DISKSTRING, parámetro existente en el archivo de inicialización de la instancia ASM

GROUP_NUMBER DISK_NUMBER HEADER_STATU STATE      TOTAL_MB    FREE_MB NAME                           PATH
------------ ----------- ------------ -------- ---------- ---------- ------------------------------ ----------------------------------------
           1           5 MEMBER       NORMAL        30720      10309 DATA_0005                      /dev/asm_disk6
           1           6 MEMBER       NORMAL        30720      10304 DATA_0006                      /dev/asm_disk7
           1           7 MEMBER       NORMAL        30720      10309 DATA_0007                      /dev/asm_disk11
           1           8 MEMBER       NORMAL        30720      10308 DATA_0008                      /dev/asm_disk12
           1           9 MEMBER       NORMAL        30720      10310 DATA_0009                      /dev/asm_disk13
           0          31 CANDIDATE    NORMAL         1024          0                                /dev/asm_disk38
           0          32 CANDIDATE    NORMAL         1024          0                                /dev/asm_disk39
           0          34 CANDIDATE    NORMAL         1024          0                                /dev/asm_disk40
           0          35 CANDIDATE    NORMAL         1024          0                                /dev/asm_disk41
           0          36 CANDIDATE    NORMAL         1024          0                                /dev/asm_disk42

Acá se verán los discos que ya se encuentran asignados a Diskgroups de ASM, pero también se verán los discos que son candidatos para utilizar en la expansión de otros diskgroups o en la creación de alguno nuevo, se puede ver pues en la columna HEADER_STATUS aparece como CANDIDATE





Si ejecutamos la misma consulta dentro de nuestra instancia RDBMS , veremos sólo los discos que forman parte de los diskgroups ya montados por la instancia ASM

GROUP_NUMBER DISK_NUMBER HEADER_STATU STATE      TOTAL_MB    FREE_MB NAME                           PATH
------------ ----------- ------------ -------- ---------- ---------- ------------------------------ ----------------------------------------
           1           5 UNKNOWN       NORMAL        30720      10309 DATA_0005                      /dev/asm_disk6
           1           6 UNKNOWN       NORMAL        30720      10304 DATA_0006                      /dev/asm_disk7
           1           7 UNKNOWN       NORMAL        30720      10309 DATA_0007                      /dev/asm_disk11
           1           8 UNKNOWN       NORMAL        30720      10308 DATA_0008                      /dev/asm_disk12
           1           9 UNKNOWN       NORMAL        30720      10310 DATA_0009                      /dev/asm_disk13





Más información sobre el parámetro ASM_DISKSTRING y más información sobre la vista V$ASM_DISK

by Ligarius
22.09.11. 13:08:46. 333 words, 7641 views. Categories: Base de datos, ASM (Automatic Storage Management) ,

/etc/init.d/oracleasm deletedisk FAILED :(



Hoy estuve arreglandoinstalando un RAC para una E-Businness Suite de Oracle , la mire hace unos días y dije que lo mejor era reinstalar todo, pues bien comencé con las desinstalaciones e instalaciones de los productos en cuestión. Y hoy ví la parte del Storage , cuando en eso me encuentro con un pequeño problema


Consulte si había discos generados mediante ASMLib , pues en la instalación anterior no habían ocupado el multipath de linux y sólo se habían remitido a ocupar el single path



Por ende había que eliminar los discos y crearlos apuntando al Device Mapper, pues bien en ese comando apareció el siguiente error

[root@hrdbd1 sysconfig]# /etc/init.d/oracleasm deletedisk VOL01
Removing ASM disk "VOL01": [FAILED]



El cual se puede ver en el log del ASM

[root@hrdbd1 sysconfig] vi /var/log/oracleasm

Unable to clear disk “VOL1″
Clearing disk header: oracleasm-write-label: Unable to open device “/dev/oracleasm/disks/VOL1″: Device or resource busy
failed
Unable to clear disk “VOL01″



Y la manera de solucionar es sobreescribir la cabecera de los path de los discos asociados al Device Mapper

[root@hrdbd1 sysconfig]# dd if=/dev/zero of=/dev/sdh count=100 bs=10240
100+0 records in
100+0 records out
1024000 bytes (1.0 MB ) copied, 0.009565 seconds, 107 MB/s



Podemos saber el dispositivo, consultando el mismisimo disco en el ASMLib

[root@hrdbd1 sysconfig]# /etc/init.d/oracleasm querydisk -v -d -p VOL01
Disk "VOL01" is a valid ASM disk on device [253, 28]
/dev/sdh: LABEL="VOL01" TYPE="oracleasm"



Una vez realizado, se puede borrar la etiqueta generada por ASMLib

[root@hrdbd1 sysconfig]# /etc/init.d/oracleasm deletedisk VOL01
Removing ASM disk "VOL01": [ OK ]



Y ahora si se puede generar la etiqueta con ASMLib sobre el dispositivo asociado al multipath :)

Links relacionados
http://www.oracleyyo.com/index.php/2010/08/18/problemas-al-momento-de-utilizar-asmlib

by Ligarius
29.06.11. 20:23:26. 300 words, 6972 views. Categories: ASM (Automatic Storage Management) ,

Centralizando el spfile en un RAC



Tengo un RAC con ASM pero cada instancia de base de datos posee su propio archivo de inicialización
¿Cómo lo centralizo en mi instancia ASM?



Al ejecutar la consulta de mi spfile en una de las instancias del RAC aparece lo siguiente :

SQL> show parameter pfile

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string



Cuando accedo a la instancia ASM mediante el ASMCMD , veo lo siguiente

[oracle@baliinfr03 ~]$ asmcmd

ASMCMD> ls
DISKGRP1/
DISKGRP2/
ASMCMD> cd DISKGRP1
ASMCMD> ls
DB_UNKNOWN/
IASDB/
ASMCMD> cd IASDB
ASMCMD> ls -ltr
Type      Redund  Striped  Time             Sys  Name
                                            Y    CONTROLFILE/
                                            Y    DATAFILE/
                                            Y    ONLINELOG/
                                            Y    PARAMETERFILE/
                                            N    datafilesysaux01.dbf => +DISKGRP1/IASDB/DATAFILE/SYSAUX.260.746407073
                                            N    datafileundotbs01.dbf => +DISKGRP1/IASDB/DATAFILE/UNDOTBS1.263.746409565
                                            N    datafileundotbs02.dbf => +DISKGRP1/IASDB/DATAFILE/UNDOTBS2.262.746409567
                                            N    datafileusers01.dbf => +DISKGRP1/IASDB/DATAFILE/USERS.261.746407073
ASMCMD>



Pues bien , elijo el diskgroup donde va a quedar y ejecuto el siguiente comando

SQL> create spfile='+DISKGRP1' from pfile;

File created.

SQL>



Y cuando voy a visualizar nuevamente el diskgroup aparece una nueva carpeta llamada PARAMETERFILE y dentro de esa carpeta aparece mi archivo de inicialización

ASMCMD> ls
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
datafilesysaux01.dbf
datafileundotbs01.dbf
datafileundotbs02.dbf
datafileusers01.dbf

ASMCMD> cd PARAMETERFILE

ASMCMD> ls -ltr
Type Redund Striped Time Sys Name
PARAMETERFILE UNPROT COARSE MAR 24 21:00:00 Y spfile.275.746659845

ASMCMD> pwd
+DISKGRP1/IASDB/PARAMETERFILE
ASMCMD>



Pues bien , ahora debemos apuntar nuestras instancias a ese archivo de inicialización
Para ello , dentro del archivo de inicialización colocamos el siguiente código

SPFILE='+DISKGRP1/IASDB/PARAMETERFILE/spfile.275.746659845'



Y realizamos una bajada y subida de los servicios, seteando el ORACLE_HOME donde esta instalado el Clusterware

[oracle@baliinfr03 ~]$ crs_stop -all



Y validamos los resultados

[oracle@baliinfr03 ~]$ crs_stat -t

Name           Type           Target    State     Host
------------------------------------------------------------
ora....SM1.asm application    OFFLINE   OFFLINE
ora....03.lsnr application    OFFLINE   OFFLINE
ora....r03.gsd application    OFFLINE   OFFLINE
ora....r03.ons application    OFFLINE   OFFLINE
ora....r03.vip application    OFFLINE   OFFLINE
ora....SM2.asm application    OFFLINE   OFFLINE
ora....04.lsnr application    OFFLINE   OFFLINE
ora....r04.gsd application    OFFLINE   OFFLINE
ora....r04.ons application    OFFLINE   OFFLINE
ora....r04.vip application    OFFLINE   OFFLINE
ora.iasdb.db   application    OFFLINE   OFFLINE
ora....b1.inst application    OFFLINE   OFFLINE
ora....b2.inst application    OFFLINE   OFFLINE



Después subimos los servicios

[oracle@baliinfr03 ~]$ crs_start -all



Y validamos los resultados

[oracle@baliinfr03 ~]$ crs_stat -t

Name           Type           Target    State     Host
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    baliinfr03
ora....03.lsnr application    ONLINE    ONLINE    baliinfr03
ora....r03.gsd application    ONLINE    ONLINE    baliinfr03
ora....r03.ons application    ONLINE    ONLINE    baliinfr03
ora....r03.vip application    ONLINE    ONLINE    baliinfr03
ora....SM2.asm application    ONLINE    ONLINE    baliinfr04
ora....04.lsnr application    ONLINE    ONLINE    baliinfr04
ora....r04.gsd application    ONLINE    ONLINE    baliinfr04
ora....r04.ons application    ONLINE    ONLINE    baliinfr04
ora....r04.vip application    ONLINE    ONLINE    baliinfr04
ora.iasdb.db   application    ONLINE    ONLINE    baliinfr03
ora....b1.inst application    ONLINE    ONLINE    baliinfr03
ora....b2.inst application    ONLINE    ONLINE    baliinfr04



Hay que tener en claro que el archivo de inicialización de las instancias debe ser un pfile y dentro de este archivo se debe colocar el puntero al SPFILE que está en el ASM

NO PUEDE SER UN SPFILE apuntando a otro SPFILE, dado que si hacemos esto cualquier cambio que hagamos quedará solo en el nodo donde ejecutamos el comando ALTER SYSTEM

Explicandolo en español, dentro del $ORACLE_HOME/dbs de cada nodo, debe exitir un init.ora y dentro de eso el código SPFILE='DISKGROUP/nombre de spfile'

by Ligarius
24.03.11. 19:31:47. 574 words, 4587 views. Categories: ASM (Automatic Storage Management) ,

Problemas al momento de utilizar ASMLib con PowerPath Multipathing



El Multipath es una técnica que provee alta disponibilidad para las tarjetas que acceden al Storage, esto es la más sencilla explicación que encontre.

EMC PowerPath Multipathing

Cuando se generan estos accesos a Storage , se generan particiones con el siguiente nombre

more /proc/partitions

120 0 52429440 emcpowera
120 16 52429440 emcpowerb
120 32 52429440 emcpowerc
120 48 52429440 emcpowerd
120 64 52429440 emcpowere
120 80 52429440 emcpowerf
120 96 52429440 emcpowerg
120 112 52429440 emcpowerh
120 128 408960 emcpoweri
120 144 408960 emcpowerj
120 160 408960 emcpowerk
120 176 408960 emcpowerl
120 192 408960 emcpowerm




Y como somos DBA de peso... necesitamos generar etiquetas con ASMLib para nuestro RAC, ejecutamos el siguiente comando

[root@g500603sv401 dev]# /etc/init.d/oracleasm createdisk VOL01 /dev/emcpowera



Pero recibimos el siguiente mensaje

Marking disk "VOL01" as an ASM disk: [FAILED]



Nos preguntamos ... ¿Cómo puede ser si la partición existe?

De hecho, lo vemos como partición y lo vemos como dispositivo válido

[root@g500603sv401 dev]# ls -ltr /dev/emcpowera
brwxrwxr-x 1 root disk 120, 0 Aug 4 16:05 /dev/emcpowera



Para lo anterior , existe una solución de más bajo nivel que es ocupar asmtools, que en el fondo es el comando que ocupa el utilitario oracleasm .

[root@g500603sv401 init.d]# /usr/sbin/asmtool -C -l /dev/oracleasm -n VOL01 /dev/emcpowera -s /dev/emcpowera -a force=yes
asmtool: Device "/dev/emcpowera" is not a partition
asmtool: Continuing anyway



Nos indica claramente que los dispositivos PowerPath no son una partición , pero ese mensaje lo podemos pasar por alto.

De hecho, se genera el volumen VOL1 que creamos con el ASMLib y lo podemos visualizar

[root@g500603sv401 init.d]# ls -ltr /dev/oracleasm/disks/
total 0
brw-r----- 1 root root 120, 0 Aug 4 17:11 VOL01
[root@g500603sv401 init.d]#




Pero hay un gran detalle, queda con privilegios de root, o sea, no nos sirve de mucho, pero para solucionar eso , ejecutamos el siguiente comando

[root@g500603sv401 init.d]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [ OK ]



Después de haber escaneado los discos.. :>> , ahora si son de oracle y se pueden leer y escribir

[root@g500603sv401 init.d]# ls -ltr /dev/oracleasm/disks/
total 0
brw-rw---- 1 oracle oinstall 120, 0 Aug 4 17:11 VOL01



Espero les sirva

by Ligarius
18.08.10. 18:01:38. 340 words, 11230 views. Categories: Oracle11gR2, ASM (Automatic Storage Management), Real Application Cluster ,

Oracle 11gr1 : Nuevas instrucciones para el utilitario ASMCMD (New features ASMCMD)



Bueno, como no hay primera sin segunda.... Como en una ronda de cervezas



Acá va la actualización para el utilitario ASMCMD que nació en 10gr1

Ahora , disponible el documento para Oracle 11gr1 , ¿adivinen cual viene después? :P

Para leer el documento haz click Acá

Y si quieres leer la genésis del utilitario ASMCMD , puedes buscar nuestro anterior Post

ASMCMD : Utilitario para trabajar con instancias ASM

Espero les sirva

by Ligarius
22.04.10. 16:01:26. 71 words, 6967 views. Categories: Oracle 11g, ASM (Automatic Storage Management) ,

<< 1 2 3 >>