Category: ASM (Automatic Storage Management)
Comando DROP DATABASE
Hoy tenía que llevar a cabo el borrado de una base de datos , que se encuentra en ASM , pensé en tablespaces por tablespaces, pero como era muchos, lo encontré algo tedioso , tampoco podía borrar los Raw Devices, pues no quería recrearlos nuevamente (en realidad no lo hago yo, lo hace gente de Unix) entonces allí me acordé del comando DROP DATABASE

Su funcionamiento es muy sencillo y sólo hay que llevar a cabo los siguientes pasos
export ORACLE_SID=nliq2 sqlplus /nolog SQL> conn / as sysdba Connected. SQL> shutdown abort ORACLE instance shut down. SQL> startup mount exclusive restrict; ORACLE instance started. Total System Global Area 2147483648 bytes Fixed Size 2085424 bytes Variable Size 402656720 bytes Database Buffers 1728053248 bytes Redo Buffers 14688256 bytes Database mounted.
Obs : Deben verificar que sea la instancia correcta la que van a eliminar ![]()
select * from v$instance;
Verificamos los datos dentro de ASM para visualizar el antes y después
[/home/ora10rac] asmcmd ASMCMD> lsdg State Type Rebal Unbal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name DISMOUNTED N N 512 4096 1048576 0 0 0 0 0 DATA/ MOUNTED EXTERN N N 512 4096 1048576 552960 74173 0 74173 0 DGDATA/ MOUNTED EXTERN N N 512 4096 1048576 184320 91422 0 91422 0 DGFRA/ DISMOUNTED N N 512 4096 1048576 0 0 0 0 0 FRA/ ASMCMD> cd DGDATA ASMCMD> ls NLIQ/ NLIQ2/ ASMCMD> cd NLIQ2 ASMCMD> ls CONTROLFILE/ DATAFILE/ ONLINELOG/ PARAMETERFILE/ TEMPFILE/ spfilenliq2.ora ASMCMD> cd DATAFILE ASMCMD> ls -ltr Type Redund Striped Time Sys Name DATAFILE UNPROT COARSE OCT 25 03:00:00 Y NUEVA_LIQ_INDEX.315.765431891 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y ADMININD.325.765432841 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y BASE_R.326.765432845 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y CDA_DATA.327.765432847 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y CDA_INDEX.328.765432865 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y MANT_PROTX_TAB.329.765432883 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y NUEVA_LIQ_DATA.320.765432319 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y NUEVA_LIQ_DATA.321.765432389 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y NUEVA_LIQ_INDEX.316.765431993 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y NUEVA_LIQ_INDEX.317.765432063 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y NUEVA_LIQ_INDEX.318.765432133 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y NUEVA_LIQ_INDEX.319.765432201 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y PERFILADOR_DATA.323.765432815 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y PERFILADOR_INDEX.324.765432819 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y PRUEBA.322.765432733 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y TBKSDV_DATA.330.765432941 DATAFILE UNPROT COARSE OCT 25 04:00:00 Y TBKSDV_IND.331.765432951 DATAFILE UNPROT COARSE OCT 25 05:00:00 Y UNDOTBS1.307.765430439 DATAFILE UNPROT COARSE OCT 25 05:00:00 Y USERS.308.765430439 DATAFILE UNPROT COARSE OCT 25 22:00:00 Y SYSTEM.305.765430439 DATAFILE UNPROT COARSE OCT 26 00:00:00 Y SYSAUX.306.765430439 ASMCMD>
Ejecutamos el comando drop database
SQL> drop database; Database dropped. Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>
Y cuando verificamos el espacio disponible en mi storage de ASM, vemos se ha liberado , de una forma muy rápida
ASMCMD> ASMCMD> lsdg State Type Rebal Unbal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name DISMOUNTED N N 512 4096 1048576 0 0 0 0 0 DATA/ MOUNTED EXTERN N N 512 4096 1048576 552960 247858 0 247858 0 DGDATA/ MOUNTED EXTERN N N 512 4096 1048576 184320 169430 0 169430 0 DGFRA/ DISMOUNTED N N 512 4096 1048576 0 0 0 0 0 FRA/ ASMCMD>
La instancia es bajada
[/oracle10/product/10.2.0/db10g/dbs] ps -fea | grep pmon
ora10rac 10027222 1 0 Oct 25 - 0:08 asm_pmon_+ASM
ora10rac 21692626 7798942 0 22:39:42 pts/9 0:00 grep pmon
[/oracle10/product/10.2.0/db10g/dbs]
El archivo de inicialización es eliminado
[/oracle10/product/10.2.0/db10g/dbs] ls -ltr
total 26176
-rw-r----- 1 ora10rac oinstall 8385 Sep 11 1998 init.ora
-rw-r--r-- 1 ora10rac oinstall 12920 May 03 2001 initdw.ora
-rw-r----- 1 ora10rac oinstall 1536 Oct 25 01:54 orapw+ASM
-rw-rw---- 1 ora10rac oinstall 24 Oct 25 01:54 lk+ASM
-rw-r----- 1 ora10rac oinstall 1536 Oct 25 01:55 spfile+ASM.ora
-rw-rw---- 1 ora10rac oinstall 24 Oct 25 02:03 lkNLIQ
-rw-rw---- 1 ora10rac oinstall 24 Oct 25 03:33 lkNLIQ2
-rw-r----- 1 ora10rac oinstall 39 Oct 25 03:35 initnliq2.ora
-rw-r----- 1 ora10rac oinstall 1536 Oct 25 04:54 orapwnliq2
-rw-rw---- 1 ora10rac oinstall 1544 Oct 26 22:28 hc_+ASM.dat
-rw-rw---- 1 ora10rac oinstall 563 Oct 26 22:34 ab_+ASM.dat
-rw-rw---- 1 ora10rac oinstall 1544 Oct 26 22:39 hc_nliq2.dat
Y el controlfile, permanece, aunque en la documentación diga que se elimina
ASMCMD> cd DGDATA ASMCMD> ls NLIQ2/ ASMCMD> cd NLIQ2 ASMCMD> ls CONTROLFILE/ ASMCMD> cd CONTROLFILE ASMCMD> ls Current.309.765430489 ASMCMD>
Hay que tener en cuenta lo siguiente
Los archivelogs y backupset tampoco son eliminados
La documentación de DROP DATABASE para versión 10gr2
![]()
28.10.11. 07:11:03. 683 words, 772 views. Categories: Base de datos, Oracle 10g, ASM (Automatic Storage Management) , Leave a comment » • Send a trackback »
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 a20select 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
22.09.11. 13:08:46. 333 words, 1252 views. Categories: Base de datos, ASM (Automatic Storage Management) , Leave a comment » • Send a trackback »
/etc/init.d/oracleasm deletedisk FAILED :(
Hoy estuve
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
![]()
29.06.11. 20:23:26. 300 words, 1175 views. Categories: ASM (Automatic Storage Management) , Leave a comment » • Send a trackback »
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.dbfASMCMD> cd PARAMETERFILE
ASMCMD> ls -ltr
Type Redund Striped Time Sys Name
PARAMETERFILE UNPROT COARSE MAR 24 21:00:00 Y spfile.275.746659845ASMCMD> 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
24.03.11. 19:31:47. 574 words, 605 views. Categories: ASM (Automatic Storage Management) , Leave a comment » • Send a trackback »
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
![]()
18.08.10. 18:01:38. 340 words, 1485 views. Categories: Oracle11gR2, ASM (Automatic Storage Management), Real Application Cluster , Leave a comment » • Send a trackback »