is902ea1量产工具-(is903量产工具)

电脑教程 次浏览手机阅读
is902ea1量产工具 (is903量产工具)

本文的truncate恢复仅针对堆表(非堆表)lob)实际上,对于分区表和lob段的恢复原理是一样的。

根据之前对truncate原理分析,truncate是否不能通过闪回查询或闪回查询logminer恢复的方法,因为truncate操作不会对数据块进行任何操作。那么truncate如何恢复?以下是几种常见的方法供参考。

数据库闪回(要求flashback database打开,必要的闪回日志和归档日不能丢失,因为闪回数据库不仅需要闪回日志,还需要归档日志。)异机恢复(需要可用的备份和必要的归档日志)TSPITR(需要可用的备份和必要的归档日志)

数据库闪回和TSPITR对数据库影响很大。

假如数据库flashback database如何在没有备份的情况下恢复?

本文介绍了两种不常见的修复元数据方法:

ODU(要求数据不被覆盖,如果数据被覆盖,也可以最大限度地恢复数据)通过修复元数据来恢复truncate(要求有truncate操作时的redo而且数据不被覆盖,如果数据被覆盖,也可以最大限度地恢复数据)

01

ODU的方式

ODU是前Oracle ACED 熊军开发的专业强大Oracle恢复工具适用于所有场景的恢复,具体查看http://www.oracleodu.com/cn/,这里简单介绍一下ODU恢复truncate的原理。

ODU恢复truncate原理是通过scan生成一个数据文件ext.odu根据表格的文件dataobj#具体扫描extent然后通过信息ext.odu需要恢复的表数据可以导出,最后导入数据库。

02

修复元数据的方法

根据之前对truncate原理分析,truncate本质是修改数据块而不修改数据块segment header的data_object_id,hwm,extent map,aux map实现清空表等信息的目的,还涉及数据字典基表和L1、L修改2位图块,需要确认哪些元数据块和数据字典需要通过修改元数据进行恢复。

通过10046的跟踪发现(可以验证,需要flush shared pool和buffer cache),全表扫描查询或通过全表扫描查询rowid查询一定会访问segment header,但是没有访问L1、L2位图块的,访问的数据字典基表包括user$、obj$、tab$、tab_stats$、ts$、seg$、ind$、ind_stats$、col$、objauth$、cdef$、histgrm$、hist_head$,以10046跟踪为重点truncate操作有变更的基表obj$、tab$、seg$、tab_stats$(不管统计信息)seg$只要经过测试block#、file#、ts#不被改变就不需要理会,但是truncate操作不会修改seg$的ts#、file#、block#的,具体测试过程如下:

SYS@TEST(test):1>select obj#,dataobj# from obj$ where owner# in (select user# from user$ where name='TEST') and name='T1'; OBJ# DATAOBJ#---------- ---------- 17284 17284SYS@TEST(test):1>select TS#,FILE#,BLOCK# from tab$ where OBJ#=17284; TS# FILE# BLOCK#---------- ---------- ---------- 9 4 290 SYS@TEST(test):1>update seg$ set blocks=1,extents=1,minexts=1,maxexts=1,extsize=1,bitmapranges=1,hwmincr=1,type#=1 where ts#=9 and file#=4 and block#=290; 1 row updated. SYS@TEST(test):1>commit; Commit complete. SYS@TEST(test):1>alter system flush shared_pool; System altered. SYS@TEST(test):1>select count(*) from test.t1; COUNT(*)---------- 14164 SYS@TEST(test):1>delete from seg$ where ts#=9 and file#=4 and block#=290; 1 row deleted. SYS@TEST(test):1>commit;Commit complete. SYS@TEST(test):1>select count(*) from test.t1;select count(*) from test.t1 *ERROR at line 1:ORA-00600: internal error code, arguments:[ktsircinfo_num1],[9],[4],[290],[],[],[],[],[],[],[],[]

因此,需要恢复的元数据块、数据字典基表和内容如下:

segment header(dataobj#、LHWM、HHWM、extent map、aux map以及extents个数)tab$(dataobj#)obj$(dataobj#)

下面提供segment header信息对应offset:

segment header dump:

Extent Control Header ----------------------------------------------------------------- Extent Header:: spare1: 0 spare2: 0 #extents: 28 #blocks: 1664 last map 0x00000000 #maps: 0 offset: 2716 Highwater:: 0x01405b83 ext#: 27 blk#: 3 ext size: 128 #blocks in seg. hdr's freelists: 0 #blocks below: 1539 mapblk 0x00000000 offset: 27 Unlocked -------------------------------------------------------- Low HighWater Mark : Highwater:: 0x01405b83 ext#: 27 blk#: 3 ext size: 128 #blocks in seg. hdr's freelists: 0 #blocks below: 1539 mapblk 0x00000000 offset: 27 Level 1 BMB for High HWM block: 0x01405b80 Level 1 BMB for Low HWM block: 0x01405b80 -------------------------------------------------------- Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0 L2 Array start offset: 0x00001434 First Level 3 BMB: 0x00000000 L2 Hint for inserts: 0x01400769 Last Level 1 BMB: 0x01405b81 Last Level II BMB: 0x01400769 Last Level III BMB: 0x00000000 Map Header:: next 0x00000000 #extents: 28 obj#: 16840 flag: 0x10000000 Inc # 0 Extent Map ----------------------------------------------------------------- 0x01400768 length: 8 0x01402f48 length: 8 0x01402f50 length: 8 0x01402f58 length: 8 0x01402f60 length: 8 0x01402f68 length: 8 0x01402f70 length: 8 0x01402f78 length: 8 0x01402e80 length: 8 0x01402e88 length: 8 0x01402e90 length: 8 0x01402e98 length: 8 0x01402ea0 length: 8 0x01402ea8 length: 8 0x01402eb0 length: 8 0x01402eb8 length: 8 0x01403f80 length: 128 0x01404000 length: 128 0x01404080 length: 128 0x01404180 length: 128 0x01405800 length: 128 0x01405880 length: 128 0x01405900 length: 128 0x01405980 length: 128 0x01405a00 length: 128 0x01405a80 length: 128 0x01405b00 length: 128 0x01405b80 length: 128 Auxillary Map -------------------------------------------------------- Extent 0 : L1 dba: 0x01400768 Data dba: 0x0140076b Extent 1 : L1 dba: 0x014007路由知识68 Data dba: 0x01402f48 Exten t





































喜欢 ()