[20171121]rman使用copy image恢复.txt

[20171121]rman使用copy image恢复.txt

--//上个星期做数据文件块头恢复时,提到使用rman备份数据文件时,文件头数据库信息是最后写入备份集文件的,在filesperset=1的情况
--//下写入备份集文件中的倒数第2块就是文件头的备份.参考链接:

http://blog.itpub.net/267265/viewspace-2147297/=>[20171115]恢复数据文件块头4补充.txt

--//而且我最后还做了测试证明如果resotre数据文件,实际上文件头也是最后更新到数据文件的.

--//我当时的分析是oracle这样设计有它一定道理.因为没有正确写入文件头,dbv检查报坏块.这个数据文件是"无用".
--//另外一个原因就是假设restore时发生中断,而这个时候文件头已经前期正常写入,很可能可以online该数据文件.
--//而最后写入,保证这个restore的数据文件是完整的.

--//这个就带来另外的问题oracle的备份还有另外模式backup as copy实现image的拷贝,
--//我的测试:
--//先建立空文件,然后"格式化"新块,然后顺序从数据文件写入备份文件.也就是as copy备份方式不是最后写入文件头,我前面的推测错
--//误页.

--//继续测试恢复的情况:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

$ cat dump_head.sh
#! /bin/bash
for i in $(seq 1000)
do
#   echo $i
    xxd -c32 -g 2 -s 8192 -l 32 $1 >> /tmp/sysaux_head.txt 2>/dev/null
    sleep 0.1
done

SYS@book> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.

SYS@book> startup mount ;
ORACLE instance started.
Total System Global Area    634732544 bytes
Fixed Size                    2255792 bytes
Variable Size               197133392 bytes
Database Buffers            427819008 bytes
Redo Buffers                  7524352 bytes
Database mounted.

$ cd /mnt/ramdisk/book/
$ mv sysaux01.dbf sysaux01.dbf_20171120

2.测试:
--//首先启动dump_head.sh脚本,session 1:
$ rm /tmp/sysaux_head.txt
$ .  dump_head.sh /mnt/ramdisk/book/sysaux01.dbf

--//在sesion 2,在rman下执行恢复:
RMAN> restore datafile 2;
Starting restore at 2017-11-20 10:24:10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=14 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=28 device type=DISK

channel ORA_DISK_1: restoring datafile 00002
input datafile copy RECID=16 STAMP=960545822 file name=/home/oracle/backup/sysaux01.dbf
destination for restore of datafile 00002: /mnt/ramdisk/book/sysaux01.dbf
channel ORA_DISK_1: copied datafile copy of datafile 00002
output file name=/mnt/ramdisk/book/sysaux01.dbf RECID=0 STAMP=0
Finished restore at 2017-11-20 10:24:19

$ .  dump_head.sh /mnt/ramdisk/book/sysaux01.dbf
^C

3.检查/tmp/sysaux_head.txt文件:

$ uniq -c /tmp/sysaux_head.txt
     18 0002000: 00a2 0000 0100 8000 0000 0000 0000 0105 81a7 0000 0000 0000 0000 0000 0000 0000  ................................
     46 0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104 3238 0000 0000 0000 0004 200b 6e21 b74f  ................28........ .n!.O

--//我又将脚本sleep 改成0.01.重复测试:
$ grep "^0002000" /tmp/sysaux_head.txt | uniq -c
      1 0002000: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000  ................................
    119 0002000: 00a2 0000 0100 8000 0000 0000 0000 0105 81a7 0000 0000 0000 0000 0000 0000 0000  ................................
    208 0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104 3238 0000 0000 0000 0004 200b 6e21 b74f  ................28........ .n!.O

--//resotre datafile 使用copy image,先建立空文件,然后"格式化"新块,然后顺序从备份文件写入数据文件.

时间: 2024-07-31 14:51:23

[20171121]rman使用copy image恢复.txt的相关文章

[20171121]rman backup as copy.txt

[20171121]rman backup as copy.txt --//上个星期做数据文件块头恢复时,提到使用rman备份数据文件时,文件头数据库信息是最后写入备份集文件的,在filesperset=1的情况 --//下写入备份集文件中的倒数第2块就是文件头的备份.参考链接: http://blog.itpub.net/267265/viewspace-2147297/=>[20171115]恢复数据文件块头4补充.txt --//而且我最后还做了测试证明如果resotre数据文件,实际上文

[20171121]rman backup as copy 2.txt

[20171121]rman backup as copy 2.txt --//昨天测试backup as copy ,备份时备份文件的文件头什么时候更新.是最后完成后还是顺序写入备份文件. --//我测试的数据文件使用数据文件2(表空间sysaux),也许是文件不够大,应该减慢备份速度来测试看看. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ----------------

[20160524]rman备份与检查点4.txt

[20160524]rman备份与检查点4.txt --链接: http://blog.itpub.net/267265/viewspace-2105221/ http://blog.itpub.net/267265/viewspace-2105223/ --昨晚仔细思考,重复测试看看,使用新的控制文件是否可以恢复.感觉我的问题在于我做了catalog注册了备份文件时丢失某些信息.重新 --测试看看. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING      

[20160523]rman备份与检查点3.txt

[20160523]rman备份与检查点3.txt --从前面的测试可以发现: --1.通过以上信息可以确定备份文件会写检查点. --2.而且备份文件是先写检查点,再做备份. --我这里就产生1个疑问,假设某个数据文件备份时间很长,这样数据文件的某个数据块的scn可能大于文件头的CHECKPOINT_CHANGE#.当我 --们恢复使用不完全恢复到某个时间点或者SCN,应该使用那个备份文件呢?做一个测试来说明问题. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRIN

[20170105]关于使用datafilecopy恢复.txt

[20170105]关于使用datafilecopy恢复.txt --如果指定恢复数据文件是从datafilecopy,必须加括号,写一个例子说明: 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ------------------------------------------------

[20150601]rman备份出现坏块.txt

[20150601]rman备份出现坏块.txt --昨天看链接: http://www.jydba.net/磁盘损坏造成RMAN备份文件有坏块的恢复案例/ --提到如果备份片存在坏块的恢复案例,他使用的参数,我自己从来没见过. alter system set event='19548 trace name context forever', '19549 trace name context forever' scope=spfile; -- oerr ora 19548,oerr ora

[20120925]truncate的恢复.txt

[20120925]truncate的恢复.txt 1.做好备份: RMAN> delete archivelog all completed before 'sysdate-8/24' ; RMAN> backup database format '/data/testtest/%U'; Starting backup at 2012-09-25 10:25:08using channel ORA_DISK_1channel ORA_DISK_1: starting full datafil

[20160523]rman备份与检查点2.txt

[20160523]rman备份与检查点2.txt --写过几篇关于检查点的文章,测试看看如果rman做备份时是否写检查点. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING         VERSION        BANNER ------------------- -------------- ---------------------------------------------------------------------------- x86

[20161118]rman备份的疑问2.txt

[20161118]rman备份的疑问2.txt --这个是我前几天做测试时遇到的疑问,不知道为什么rman 备份要修改数据块的dba地址. --我在itpub上也问了这个问题,链接http://www.itpub.net/thread-2071504-1-1.html,可惜没有人解答. --具体细节不清楚,读取数据文件然后重新编码组织数据,将kcbh.rdba_kcbh的后2位放入tailchk中,设置spare3_kcbh=0x0001, --也许为了区分备份与数据文件,当然还有别的目的,再