BBED跳过归档

  1 通过BBED 跳过归档,以当前数据库 8号文件为例:
  2 SQL> select * from v$dbfile where file#=8;
  3      FILE# NAME
  4 ---------- --------------------------------------------------
  5          8 /u01/app/oracle/oradata/orcl/d4k01.dbf
  6 
  7 
  8 1、rman 备份 8号文件
  9 RMAN> backup datafile '/u01/app/oracle/oradata/orcl/d4k01.dbf' format '/home/oracle/back/d4k01_%U.bak';
 10         Starting backup at 03-SEP-16
 11         using channel ORA_DISK_1
 12         channel ORA_DISK_1: starting full datafile backup set
 13         channel ORA_DISK_1: specifying datafile(s) in backup set
 14         input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/d4k01.dbf
 15         channel ORA_DISK_1: starting piece 1 at 03-SEP-16
 16         channel ORA_DISK_1: finished piece 1 at 03-SEP-16
 17         piece handle=/home/oracle/back/d4k01_03reraaj_1_1.bak tag=TAG20160903T004403 comment=NONE
 18         channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
 19         Finished backup at 03-SEP-16
 20 
 21 
 22 2、进行多次日志切换(用于产生多个日志归档)
 23 SQL> alter system switch logfile;
 24 
 25 
 26 3、将 8 号数据文件脱机,并删除
 27 SQL> alter database datafile '/u01/app/oracle/oradata/orcl/d4k01.dbf' offline;
 28 rm -rf /u01/app/oracle/oradata/orcl/d4k01.dbf
 29 
 30 4、rman还原 8 号文件
 31 RMAN> restore datafile '/u01/app/oracle/oradata/orcl/d4k01.dbf';
 32         Starting restore at 03-SEP-16
 33         using channel ORA_DISK_1
 34         channel ORA_DISK_1: starting datafile backup set restore
 35         channel ORA_DISK_1: specifying datafile(s) to restore from backup set
 36         channel ORA_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/orcl/d4k01.dbf
 37         channel ORA_DISK_1: reading from backup piece /home/oracle/back/d4k01_03reraaj_1_1.bak
 38         channel ORA_DISK_1: piece handle=/home/oracle/back/d4k01_03reraaj_1_1.bak tag=TAG20160903T004403
 39         channel ORA_DISK_1: restored backup piece 1
 40         channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
 41         Finished restore at 03-SEP-16
 42 
 43 
 44 5、联机 8号数据文件,提示需要介质恢复
 45     因为在rman备份的数据文件,写入数据文件头的检查点(V$DATAFILE_HEADER 视图的 CHECKPOINT_CHANGE#) 是备份时候的检查点编号,
 46     切换多次日志后,在控制文件(V$DATAFILE 视图的 CHECKPOINT_CHANGE#) 里的是当前数据库检查点编号,这两个编号不一致,
 47     所以需要介质恢复,也就是读取备份之后,所产生的redo日志。
 48 
 49 6、介质恢复的起点,记录在数据文件头,分两部分(检查点和rba)
 50 
 51 7、dump数据文件头
 52 SQL> alter system set events 'immediate trace name file_hdrs level 10';
 53 
 54 8、在dump文件中找到 8 号数据文件对应的内容
 55 DATA FILE #8:
 56   name #28: /u01/app/oracle/oradata/orcl/d4k01.dbf
 57  creation size=12800 block size=8192 status=0x1c head=28 tail=28 dup=1
 58  tablespace 11, index=9 krfil=8 prev_file=0
 59  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 60  Checkpoint cnt:92 scn: 0x0000.004218e6 09/03/2016 00:45:06
 61  Stop scn: 0x0000.00421998 09/03/2016 00:52:57
 62  Creation Checkpointed at scn:  0x0000.00325a8a 06/15/2016 18:20:45
 63  thread:1 rba:(0x30.992c.10)
 64 --------------------------------------------------------------------------
 65 Tablespace #11 - D4K  rel_fn:8
 66     Creation   at   scn: 0x0000.00325a8a 06/15/2016 18:20:45
 67     Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
 68      reset logs count:0x3661a1e6 scn: 0x0000.002387eb
 69      prev reset logs count:0x361abe00 scn: 0x0000.000e6c20
 70      recovered at 09/03/2016 01:00:43
 71      status:0x0 root dba:0x00000000 chkpt cnt: 77 ctl cnt:76
 72     begin-hot-backup file size: 0
 73     Checkpointed at scn:  0x0000.00421867 09/03/2016 00:44:03
 74      thread:1 rba:(0x69.1056d.10)
 75 
 76 在dump文件里面8号文件有两大部分:
 77 1、data file 8# (这部分来着控制文件,是当前日志的检查点),
 78 2、Tablespace #11 - D4K  rel_fn:8 (这是8号文件对应的表空间,这部分数据来自数据文件头,是需要修改的部分)
 79 
 80 9、修改 rba和 checkpoint at scn  ,将其修改到指定的归档日志开始恢复(归档日志的序列号和检查点)
 81     通过计算如下rba 的到 从 105 号归档的 66925号块开始恢复 (16进制69为10进制105...)
 82     Checkpointed at scn:  0x0000.00421867 09/03/2016 00:44:03
 83     thread:1 rba:(0x69.1056d.10)  
 84 
 85 查询归档日志视图(V$archived_log),获取序列号和检查点信息
 86 SQL> select sequence#,first_change# from v$archived_log;
 87  SEQUENCE# FIRST_CHANGE#
 88 ---------- -------------
 89        103       4299914
 90        104       4300188
 91        105       4324652
 92        ................. 
 93        120       4331692
 94        121       4331695
 95        122       4331698
 96        123       4331701
 97        124       4331704
 98        125       4331707
 99        126       4331710
100        127       4331713
101        128       4331716
102        129       4331719
103 
104 
105 10、通过BBED,修改rba和检查点,将其改到第120号归档
106 BBED> show all;
107         FILE#           8
108         BLOCK#          1
109         OFFSET          0
110         DBA             0x02000001 (33554433 8,1)
111         FILENAME        /u01/app/oracle/oradata/orcl/d4k01.dbf
112         BIFILE          bifile.bbd
113         LISTFILE        /home/oracle/bbed.lit
114         BLOCKSIZE       8192
115         MODE            Edit
116         EDIT            Unrecoverable
117         IBASE           Dec
118         OBASE           Dec
119         WIDTH           80
120         COUNT           512
121         LOGFILE         log.bbd
122         SPOOL           No
123 
124 BBED> dump
125  File: /u01/app/oracle/oradata/orcl/d4k01.dbf (8)
126  Block: 1                Offsets:    0 to  511           Dba:0x02000001
127 ------------------------------------------------------------------------
128  0ba20000 01000002 00000000 00000104 86390000 00000000 0000200b 7e099055 
129  4f52434c 00000000 b39a0000 00960000 00200000 08000300 00000000 00000000 
130  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
131  00000000 8a5a3200 00000000 7dd78336 e6a16136 eb872300 00000000 00000000 
132  00000000 00000000 00000000 4d000000 3baded36 4c000000 00000000 00000000 
133  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
134  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
135  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
136  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
137  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
138  00000000 00000000 00000000 0b000000 03004434 4b000000 00000000 00000000 
139  00000000 00000000 00000000 00000000 08000000 00000000 00000000 00000000 
140  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
141  00be1a36 206c0e00 00000000 00000000 00000000 00000000 00000000 00000000 
142  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
143  00000000 67184200 00006f6c 53a9ed36 01000000 69000000 6d050100 1000ffff 
144  <32 bytes per line>
145 
146 
147 在bbed的dump中查找 rba的日志块号(1056d)和检查点(421867),在bbed中是反的,即为:6d0501 和 671842
148 使用find命令:
149 BBED> find /x 6d0501
150  File: /u01/app/oracle/oradata/orcl/d4k01.dbf (8)
151  Block: 1                Offsets:  504 to 1015           Dba:0x02000001
152 BBED> find /x 67184200
153  File: /u01/app/oracle/oradata/orcl/d4k01.dbf (8)
154  Block: 1                Offsets:  484 to  995           Dba:0x02000001
155 
156 将检查点修改为120号归档的检查点(4331692),转换为16进制为(4218AC),反过来为(AC1842)
157 BBED> modify /x AC1842 offset 484
158 
159 
160 将rba的日志序列号改为(120),转换16进制为(78161 BBED> modify /x 78 offset 500
162 
163 
164 将rba中的日志块号改小一点,改为从第三号块开始
165 BBED> modify /x 110000 offset 504
166 
167 
168 改完dump结果如下:
169 BBED> dump
170  File: /u01/app/oracle/oradata/orcl/d4k01.dbf (8)
171  Block: 1                Offsets:    0 to  511           Dba:0x02000001
172 ------------------------------------------------------------------------
173  0ba20000 01000002 00000000 00000104 213c0000 00000000 0000200b 7e099055 
174  4f52434c 00000000 b39a0000 00960000 00200000 08000300 00000000 00000000 
175  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
176  00000000 8a5a3200 00000000 7dd78336 e6a16136 eb872300 00000000 00000000 
177  00000000 00000000 00000000 4d000000 3baded36 4c000000 00000000 00000000 
178  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
179  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
180  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
181  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
182  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
183  00000000 00000000 00000000 0b000000 03004434 4b000000 00000000 00000000 
184  00000000 00000000 00000000 00000000 08000000 00000000 00000000 00000000 
185  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
186  00be1a36 206c0e00 00000000 00000000 00000000 00000000 00000000 00000000 
187  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
188  00000000 ac184200 00006f6c 53a9ed36 01000000 78000000 11000000 1000ffff 
189  <32 bytes per line>
190 
191 重新计算校验和
192 BBED> sum apply
193 Check value for File 8, Block 1:
194 current = 0x3c21, required = 0x3c21
195 
196 
197 11、恢复8号文件
198 SQL> recover datafile '/u01/app/oracle/oradata/orcl/d4k01.dbf';
199 ORA-00279: change 4331692 generated at 09/03/2016 00:44:03 needed for thread 1
200 ORA-00289: suggestion : /u01/app/oracle/oradata/archive/1_120_912368102.dbf
201 ORA-00280: change 4331692 for thread 1 is in sequence #120
202 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
203 AUTO
204 ORA-00279: change 4331695 generated at 09/03/2016 00:45:02 needed for thread 1
205 ORA-00289: suggestion : /u01/app/oracle/oradata/archive/1_121_912368102.dbf
206 ORA-00280: change 4331695 for thread 1 is in sequence #121

 

posted on 2017-01-12 11:07  rodo  阅读(233)  评论(0编辑  收藏  举报