You are hereBlogs / almudena's blog / Cómo provocar un bloque corrupto en BD baseadas en ASM e restaurar con RMAN a nivel de bloque
Cómo provocar un bloque corrupto en BD baseadas en ASM e restaurar con RMAN a nivel de bloque
Detallo a continuación os pasos seguidos para provocar un bloque corrupto unha BD con ASM e levar a cabo unha restauración a nivel de bloque con RMAN. Elo é posible por estar traballando con unha BD Enterprise Edition. Mencionar tamén que se trata dun contorno de test.
1. Creamos tablespace/usuario/táboa e procemento para insertar filas.
14:25:39 SYS@orcl1> create tablespace bad_data_test_acc;
Tablespace created.
14:27:32 SYS@orcl1> select file_name, file_id , tablespace_name from dba_data_files
14:27:42 2 where tablespace_name like '%BAD%';
FILE_NAME FILE_ID TABLESPACE_NAME
----------------------------------------------------------- ---------- -------------------------------------------------------------------------
+DATA/orcl/datafile/bad_data_test_acc.342.812469967 12 BAD_DATA_TEST_ACC
create user acc identified by ***** default tablespace bad_data_test_acc;
create table test (username varchar2(9), password varchar2(6));
DECLARE
u VARCHAR2(9);
p VARCHAR2(6);
BEGIN
FOR jump IN 1 ..10000 LOOP
u := 'TEST'||jump;
p := 'P'||jump;
insert into test values (u,p);
END LOOP;
commit;
END;
/ 2. Quedámonos cos datos que precisaremos para forzar a corrupción dun bloque.
select
rowid ,
to_number(utl_encode.base64_decode(utl_raw.cast_to_raw(lpad(substr(rowid, 1, 6), 8, 'A'))), 'XXXXXXXXXXXX') as objid,
to_number(utl_encode.base64_decode(utl_raw.cast_to_raw(lpad(substr(rowid, 7, 3), 4, 'A'))), 'XXXXXX') as filenum,
to_number(utl_encode.base64_decode(utl_raw.cast_to_raw(lpad(substr(rowid, 10, 6), 8, 'A'))), 'XXXXXXXXXXXX') as blocknum,
to_number(utl_encode.base64_decode(utl_raw.cast_to_raw(lpad(substr(rowid, 16, 3), 4, 'A'))), 'XXXXXX') as rowslot
from test where password='P7777'
/
ROWID OBJID FILENUM BLOCKNUM ROWSLOT
------------------ ---------- ---------- ---------- ----------
AAARofAAMAAAACeAAr 72223 12 158 43
2. Lanzamos un backup RMAN da BD que contén os últimos datos creados.
3. Poñemos o tablespace offline e pasámolo a fs empregando RMAN para elo.
alter tablespace bad_data_test_acc offline;
RMAN> copy datafile 12 to '/tmp/block_corruption/bad_data_01.dbf';
Starting backup at 11/04/2013 14:26:27
using target database control file instead of recovery catalog
(...)
channel ORA_DISK_7: SID=197 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_8
channel ORA_DISK_8: SID=236 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_9
channel ORA_DISK_9: SID=278 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_10
channel ORA_DISK_10: SID=316 instance=orcl1 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00012 name=+DATA/orcl/datafile/bad_data_test_acc.342.812469967
output file name=/tmp/block_corruption/bad_data_01.dbf tag=TAG20130411T142632 RECID=1 STAMP=812471194
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
4. Forzamos a corrupción no bloque.
[oracle@oracle block_corruption]$ dd if=/tmp/block_corruption/bad_data_01.dbf bs=8k count=158 of=/tmp/block_corruption/bad_data_01.dbf_new
158+0 records in
158+0 records out
1294336 bytes (1.3 MB) copied, 0.00493063 s, 263 MB/s
[oracle@oracle block_corruption]$ dd if=/tmp/block_corruption/bad_data_01.dbf bs=8k count=1 >> /tmp/block_corruption/bad_data_01.dbf_new
1+0 records in
1+0 records out
8192 bytes (8.2 kB) copied, 0.000112149 s, 73.0 MB/s
[oracle@oracle block_corruption]$ dd if=/tmp/block_corruption/bad_data_01.dbf bs=8k skip=159 >> /tmp/block_corruption/bad_data_01.dbf_new
12642+0 records in
12642+0 records out
103563264 bytes (104 MB) copied, 0.374947 s, 276 MB/s
[oracle@oracle block_corruption]$
mv /tmp/block_corruption/bad_data_01.dbf_new /tmp/block_corruption/bad_data_01.dbf
5. Copiamos os datos do datafile de fs a ASM de novo con RMAN.
run {
set maxcorrupt for datafile 12 to 2;
restore datafile 12 from tag 'TAG20130411T142632';
recover datafile 12;
}
channel ORA_DISK_1: restoring datafile 00012
input datafile copy RECID=1 STAMP=812471194 file name=/tmp/block_corruption/bad_data_01.dbf
destination for restore of datafile 00012: +DATA/orcl/datafile/bad_data_test_acc.342.812469967
channel ORA_DISK_1: copied datafile copy of datafile 00012
output file name=+DATA/orcl/datafile/bad_data_test_acc.342.812469967 RECID=0 STAMP=0
Finished restore at 11/04/2013 14:35:41
Starting recover at 11/04/2013 14:35:41
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4
using channel ORA_DISK_5
using channel ORA_DISK_6
using channel ORA_DISK_7
using channel ORA_DISK_8
using channel ORA_DISK_9
using channel ORA_DISK_10
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 11/04/2013 14:35:42
6. Poñemos tablespace online e comprobamos que temos o bloque corrupto.
alter tablespace bad_data_test_acc online;
14:36:39 ACC@orcl1> select * from test where password='P7777';
select * from test where password='P7777'
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 12, block # 158)
ORA-01110: data file 12: '+DATA/orcl/datafile/bad_data_test_acc.342.812469967'
14:37:38 SYS@orcl1> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
12 158 1 0 CORRUPT
[oracle@oracle log]$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Thu Apr 11 14:37:58 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: orcl (DBID=1700599633)
RMAN> backup check logical validate tablespace bad_data_test_acc;
Starting backup at 11/04/2013 14:38:42
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=471 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_2
(...)
allocated channel: ORA_DISK_9
channel ORA_DISK_9: SID=236 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_10
channel ORA_DISK_10: SID=278 instance=orcl1 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00012 name=+DATA/orcl/datafile/bad_data_test_acc.342.812469967
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
12 OK 1 12641 12800 356051175
File Name: +DATA/orcl/datafile/bad_data_test_acc.342.812469967
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 27
Index 0 0
Other 0 132
Finished backup at 11/04/2013 14:38:48
RMAN>
7. Restauramos a nivel de bloque con rman.
[oracle@oracle log]$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Thu Apr 11 14:40:36 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: orcl (DBID=1700599633)
RMAN> recover datafile 12 block 158;
Starting recover at 11/04/2013 14:40:44
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=471 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=626 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=665 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=939 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_5
channel ORA_DISK_5: SID=120 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_6
channel ORA_DISK_6: SID=159 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_7
channel ORA_DISK_7: SID=198 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_8
channel ORA_DISK_8: SID=236 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_9
channel ORA_DISK_9: SID=278 instance=orcl1 device type=DISK
allocated channel: ORA_DISK_10
channel ORA_DISK_10: SID=316 instance=orcl1 device type=DISK
channel ORA_DISK_1: restoring block(s) from datafile copy /tmp/block_corruption/bad_data_01.dbf
ORA-19587: error occurred reading 8192 bytes at block number 0
ORA-27069: attempt to do I/O beyond the range of the file
Additional information: 1
Additional information: 12801
ORA-19600: input file is datafile copy 0 (/tmp/block_corruption/bad_data_01.dbf)
failover to previous backup
channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00012
channel ORA_DISK_1: reading from backup piece +FRA/orcl/backupset/2013_04_11/nnndf0_tag20130411t141520_0.473.812470521
channel ORA_DISK_1: piece handle=+FRA/orcl/backupset/2013_04_11/nnndf0_tag20130411t141520_0.473.812470521 tag=TAG20130411T141520
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:01
starting media recovery
media recovery complete, elapsed time: 00:00:07
Finished recover at 11/04/2013 14:40:58
8. Comprobamos que xa non hai bloques corruptos na BD.
14:42:55 ACC@orcl1> select * from test where password='P7777';
USERNAME PASSWO
--------- ------
TEST7777 P7777
14:42:00 ACC@orcl1> select * from v$database_block_corruption;
no rows selected
14:42:08 ACC@orcl1> exit


single bet calculator single bet calculator .
888.starz 888.starz .
atofawuge473@gmail.com
Tego typu wsparcie promocyjne zapewnia wysoka aktywnosc i satysfakcje wsrod graczy.
vulkan casino kod https://play24-vulkan.com/kod-promocyjny/
Perfect, thank you!
диплом призера школьного этапа всероссийской олимпиады школьников купить диплом призера школьного этапа всероссийской олимпиады школьников купить .
Reading in a foreign language is a challenge, but rewarding. An international archive of romance offers books in many languages. I download the PDF in a language I am studying to practice my reading comprehension in a fun and engaging way. https://anarchiveofromancepdf.top/ An Archive Of Romance Novel Download
Spark Iron Flame saga! Violet soars strong. Get free at ironflamepdf.top! https://ironflamepdf.top/ What Is Iron Flame About
mainganho3@gmail.com
куплю диплом медсестры в москве куплю диплом медсестры в москве .
обучение в Чехии или Orlando Parks
Австралия: Топ-10 мест для туризма
https://samoylovaoxana.ru/tag/mavzolej/
Ещё можно узнать: клавиша евро на клавиатуре
комплектная трансформаторная подстанция цена комплектная трансформаторная подстанция цена .
купить диплом с занесением в реестр в уфе https://arus-diplom33.ru .
достопримечательности Португалии или Америка
Косумель
https://samoylovaoxana.ru/dlia-posesheniia-katara-teper-nyjna-dopolnitel...
Ещё можно узнать: как правильно резать мясо
уличное кашпо для цветов напольное уличное кашпо для цветов напольное .
купить диплом легальный о высшем образовании https://arus-diplom32.ru/ .
купить аттестат в уфе за 11 класс https://arus-diplom21.ru/ .
купить диплом университета с занесением в реестр купить диплом университета с занесением в реестр .
диплом проведенный купить диплом проведенный купить .
купить диплом с проводкой купить диплом с проводкой .
купить диплом в уфе с реестром https://arus-diplom31.ru/ .
диплом купить в реестре диплом купить в реестре .
купить диплом где можно купить диплом где можно .
купить аттестат за 11 класс в улан удэ https://arus-diplom23.ru .
диплом о среднем образовании купить легально www.arus-diplom31.ru .
диплом строителя купить диплом строителя купить .
купить диплом в омске купить диплом в омске .
диплом в оренбурге купить диплом в оренбурге купить .
что здесь и кто?
школьный аттестат за 9 класс купить https://www.arus-diplom4.ru .
Enviar un nuevo comentario