[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数据文件,实际上文件头也是最后更新到数据文件的.

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

--//这个就带来另外的问题oracle的备份还有另外模式backup as copy实现image的拷贝,是否这样建立的备份也是最后写文件头呢?
--//通过前面的分析,感觉应该与备份集一样.还是通过真实的测试来证明自己的判断:

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 -c16 -g 2 -s 8192 -l 16 $1 >> /tmp/sysaux_head.txt 2>/dev/null
    sleep 0.1
done

2.测试:
--//首先启动dump_head.sh脚本,session 1:
$ .  dump_head.sh /home/oracle/backup/sysaux01.dbf &

--//在sesion 2,在rman下执行备份:
RMAN> backup as copy datafile 2 format '/home/oracle/backup/%b';

Starting backup at 2017-11-20 09:47:11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=119 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=132 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=144 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/mnt/ramdisk/book/sysaux01.dbf
output file name=/home/oracle/backup/sysaux01.dbf tag=TAG20171120T094712 RECID=13 STAMP=960544037
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
Finished backup at 2017-11-20 09:47:20
Starting Control File and SPFILE Autobackup at 2017-11-20 09:47:20
piece handle=/u01/app/oracle/fast_recovery_area/BOOK/autobackup/2017_11_20/o1_mf_s_960544040_f14f183w_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2017-11-20 09:47:21

--//session 1:
$ fg
. dump_head.sh /home/oracle/backup/sysaux01.dbf
^C

3.检查/tmp/sysaux_head.txt输出记录:

$ head /tmp/sysaux_head.txt
0002000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0002000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0002000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0002000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0002000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0002000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0002000: 00a2 0000 0100 8000 0000 0000 0000 0105  ................
0002000: 00a2 0000 0100 8000 0000 0000 0000 0105  ................
0002000: 00a2 0000 0100 8000 0000 0000 0000 0105  ................
0002000: 00a2 0000 0100 8000 0000 0000 0000 0105  ................

$ tail /tmp/sysaux_head.txt
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................
0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................

$ uniq -c /tmp/sysaux_head.txt
      6 0002000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     22 0002000: 00a2 0000 0100 8000 0000 0000 0000 0105  ................
    161 0002000: 0ba2 0000 0100 8000 0000 0000 0000 0104  ................

--//从输出可以发现使用backup as copy备份,一定先建立一个空文件,输出一堆0000,大小与数据文件一致,这样可以先检测是否磁盘满足备份需求.
--//然后写入开头00a2,我脚本每次执行调用sleep 0.1(不考虑执行脚本消耗),写入正确文件头应该是3秒的时候,而备份完成需要7秒.

--//从以上信息我的推断是先建立空文件,然后"格式化"新块,然后顺序从数据文件写入备份文件.
--//也就是as copy备份方式不是最后写入文件头,我前面的推测错误页.
--//不知道我现在的推断是否正确.希望高手指点.

时间: 2024-10-23 20:02:21

[20171121]rman backup as copy.txt的相关文章

[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 ----------------

[20171122]rman backup as copy的备份问题

[20171122]rman backup as copy的备份问题.txt --//以前曾经写过一篇[20160524]rman备份与检查点4.txt=>链接:http://blog.itpub.net/267265/viewspace-2106087/ --//里面提到加入备份时间很长,这样可能会出现数据块里面的scn号大于文件头scn号.我提到视图v$backup_datafile --//的ABSOLUTE_FUZZY_CHANGE#字段记录了备份时块最大的scn号.查询视图: sele

[20160329]backup as copy问题.txt

[20160329]backup as copy问题.txt --别人问的一个问题,想通过dg建立测试库,我建议他停止日志应用,然后使用拷贝的方式建立测试库,只要路径一样,生成一个新的控 --制文件就ok了.本来一个很简单通过nfs mount文件系统,cp就ok了.没有选择cp而使用rman的backup as copy命令方式,遇到一点点 --小问题,自己重复测试看看: 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                   

[20160421]backup as copy问题2.txt

[20160421]backup as copy问题2.txt http://blog.itpub.net/267265/viewspace-2070878/ --前面提到使用backup as copy datafile 1 format '/home/oracle/backup/%b' ;这样的方式会报错 RMAN-03009: failure of backup command on ORA_DISK_1 channel at 03/29/2016 09:24:29 ORA-19715:

[20121126]backup as copy datafile 1的问题.txt

[20121126]backup as copy datafile 1的问题.txt SQL> select * from v$version where rownumBANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production RMA

[20171031]rman merge例子2.txt

[20171031]rman merge例子2.txt --//以前做的测试 [20170626]rman merge例子.txt --//链接 http://blog.itpub.net/267265/viewspace-2141253/ --//不断应用日志,常用的方式如下: 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --------------------------

[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数据文件,实际上文件

[20171130]关于rman的一些总结.txt

[20171130]关于rman的一些总结.txt --//最近一直做rman相关测试,测试那个乱,没办法.无法从周围的人获得帮助,纯粹是自己的乱猜,乱测,不知道别人是否能看懂我写的东西. --//有必要做一些总结,不一定对,仅仅是我当前的看法. 1.数据文件备份集中,文件头是最后写到备份集文件的. 2.使用备份集恢复也是一样,文件头也是最好写入的. 3.以上情况对as copy的方式也是一样. --//oracle这样操作主要目的保证备份是好的可用,反之恢复也是一样. 4.关于备份参数file

RMAN-06023: no backup or copy of datafile 1 found to restore

在ORACLE 10g数据库还原过程遭遇RMAN-06023: no backup or copy of datafile x found to restore,具体情况如下所示 ..................................................................................... File Name: /u03/flash_recovery_area/EPPS/archivelog/2015_01_26/o1_mf_1_10_