Oracle Live

25/07/2016

Laboratorio – Simular block corruption sobre ASM

Filed under: Laboratorios — mogukiller @ 4:06 pm

Con el objetivo de probar las herramientas de reparación de bloques corruptos, vamos a simular corrupción de bloques sobre un almacenamiento en ASM.

-- Creamos un TS de unos 100M

SQL> CREATE TABLESPACE PRUEBAS DATAFILE '+DATA/test12cbck/DATAFILE/prueba01.dbf' SIZE 100M;

-- Creamos una tabla sobre ese tablespace

SQL> conn mogu/temporal
SQL> CREATE TABLE PRUEBA TABLESPACE PRUEBAS AS SELECT DBMS_RANDOM.STRING('u',50) AS VALOR FROM DUAL CONNECT BY LEVEL <=1000;

-- Ponemos el tablespace en offline

SQL> ALTER TABLESPACE PRUEBAS OFFLINE;

-- Realizamos un backup del datafile.

> rman target /
RMAN> BACKUP AS COPY DATAFILE '+DATA/test12cbck/DATAFILE/prueba01.dbf' FORMAT '/tmp/prueba01.dbf';

-- Comprobamos el tamaño de la cabecera de ese datafile.

SQL> SELECT HEADER_FILE, HEADER_BLOCK FROM DBA_SEGMENTS WHERE SEGMENT_NAME='PRUEBA';

/*
HEADER_FILE HEADER_BLOCK
----------- ------------
          7          130
*/

-- Generamos corrupcion de bloques a partir del bloque 131

dd of=/tmp/prueba01.dbf bs=8192 conv=notrunc seek=131 <<EOF
> #Prueba bloque
EOF
/*
0+1 records in
0+1 records out
11 bytes (11 B) copied, 0.000159895 s, 68.8 kB/s
*/

dd of=/tmp/prueba01.dbf bs=8192 conv=notrunc seek=132 <<EOF
> #Prueba bloque
EOF
/*
0+1 records in
0+1 records out
11 bytes (11 B) copied, 0.000159895 s, 68.8 kB/s
*/

-- Validamos con DBVERIFY que tengamos corrupcion

dbv file=prueba01.dbf blocksize=8192
/*
DBVERIFY: Release 12.1.0.2.0 - Production on Mon Jul 25 16:52:39 2016

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - Verification starting : FILE = /tmp/prueba01.dbf
Page 131 is marked corrupt
Corrupt block relative dba: 0x01c00083 (file 7, block 131)
Bad header found during dbv: 
Data in bad block:
 type: 62 format: 0 rdba: 0x62657572
 last change scn: 0x716f.6c622061 seq: 0x75 flg: 0x65
 spare1: 0x23 spare2: 0x50 spare3: 0x0
 consistency value in tail: 0xfb380602
 check value in block header: 0x690a
 computed block checksum: 0x6354

Page 132 is marked corrupt
Corrupt block relative dba: 0x01c00084 (file 7, block 132)
Bad header found during dbv: 
Data in bad block:
 type: 62 format: 0 rdba: 0x62657572
 last change scn: 0x716f.6c622061 seq: 0x75 flg: 0x65
 spare1: 0x23 spare2: 0x50 spare3: 0x0
 consistency value in tail: 0xfb380602
 check value in block header: 0x660a
 computed block checksum: 0x634c
*/

-- Borramos el dbf antes de restaurarlo

ASMCMD> rm -f PRUEBAS.279.918146887

-- Restauramos el datafile sobre ASM

rman target /
RUN{
	SET MAXCORRUPT FOR DATAFILE '+DATA/test12cbck/DATAFILE/prueba01.dbf' TO 3;
	RESTORE DATAFILE '+DATA/test12cbck/DATAFILE/prueba01.dbf';
	RECOVER DATAFILE '+DATA/test12cbck/DATAFILE/prueba01.dbf';
}

/*
Finished recover at 2016/07/25 16:58:50
*/

-- Comprobamos que RMAN ha identificado los bloques corruptos

SQL>SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;
/*
     FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO     CON_ID
---------- ---------- ---------- ------------------ --------- ----------
         7        131          2                  0 CORRUPT            0
*/

-- Ponemos el tablespace online

SQL> ALTER TABLESPACE PRUEBAS ONLINE;

-- Validamos que ahora una query me da error
SQL>SELECT * FROM PRUEBA;
/*
SELECT * FROM PRUEBA
       *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 7, block # 131)
ORA-01110: data file 7: '+DATA/test12cbck/DATAFILE/prueba01.dbf'
*/

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: