Extracting Datafile Blocks From ASM [ID 294727.1]

In this Document
  Purpose
  Scope and Application
  Extracting Datafile Blocks From ASM
  References


Applies to:

Oracle Server - Enterprise Edition - Version: 10.1.0.2 to 11.1.0.7
Information in this document applies to any platform.

Purpose

This note explains how to use RMAN to copy an ASM based datafile onto the file system. Once the datafile is on the file system, the OS command dd can be used to extract the block(s) from the datafile.

Scope and Application

This note may help Oracle DBAs while working with Oracle Support.

The approach presented here may be used with any ASM redundancy. It should be noted that this method requires the free space on the file system equivalent to the size of datafile being extracted.

This method can be used for datafiles, datafile copies and archived redo log files stored within ASM.

Extracting Datafile Blocks From ASM

Lets look at an example of corruption reported on an ASM datafile with normal redundancy. The objective is to extract the corrupted block from the datafile, patch it and put it back into the database. 

1. Corruption reported:

SQL> SELECT COUNT(*) FROM T1;
SELECT COUNT(*) FROM T1
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 7, block # 65)
ORA-01110: data file 7: '+GROUPA/aa10g/datafile/ts_bane.267.3'

2. Take the file offline, to make sure there are no further changes while the block is being examined/patched.

SQL> alter database datafile 7 offline;
Database altered.

3. Use RMAN 'BACKUP AS COPY DATAFILE' command to extract the datafile from ASM onto the file system:

RMAN> CONNECT TARGET;
connected to target database: AA10G (DBID=1449158500)

RMAN> BACKUP AS COPY DATAFILE 7 FORMAT '/tmp/df_%f';
Starting backup at 
Uusing target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=215 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00007 name=+GROUPA/aa10g/datafile/ts_bane.267.3
output filename=/tmp/df_7 tag=TAG20041230T125410 recid=7 stamp=546267252
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 

4. Now that the file is on the file system, the OS command dd can be used to extract the block from the copy of the datafile:

$ dd if=df_7 of=f7b65.dd count=1 skip=65 bs=8192

5. Lets say that at this step the block has been examined and patched.

6. Put the patched block back into df_7:

$ dd if=f7b65.dd of=df_7 bs=8192 seek=65 count=1 conv=notrunc

7. Restore the patched datafile from the file system back into ASM:

RMAN> CONNECT TARGET;
connected to target database: AA10G (DBID=1449158500)

RMAN> run {
RESTORE DATAFILE 7 FROM TAG 'TAG20041230T125410';
RECOVER DATAFILE 7;
SQL "ALTER DATABASE DATAFILE 7 ONLINE";
}

Starting restore at 
using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=213 devtype=DISK
channel ORA_DISK_1: restoring datafile 00007
input datafilecopy recid=7 stamp=546267252 filename=/tmp/df_7
destination for restore of datafile 00007: +GROUPA/aa10g/datafile/ts_bane.267.3
channel ORA_DISK_1: copied datafilecopy of datafile 00007
output filename=+GROUPA/aa10g/datafile/ts_bane.267.3 recid=8 stamp=546267683
Finished restore at 

Starting recover at 
using channel ORA_DISK_1
starting media recovery
media recovery complete
Finished recover at 

sql statement: ALTER DATABASE DATAFILE 7 ONLINE
RMAN>

8. Once the patched datafile has been restored, select from table T1 works as expected:

SQL> SELECT COUNT(*) FROM T1;

COUNT(*)
--------
1536

References

Oracle Database Recovery Manager Reference 10g Release 1 (10.1)
Oracle Database Administrator's Guide 10g Release 1 (10.1),Chapter 12 Using Automatic Storage Management


 

相关内容

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/38267/viewspace-743196/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/38267/viewspace-743196/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值