Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686853
  • 博文数量: 191
  • 博客积分: 10987
  • 博客等级: 上将
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-22 09:52
文章分类

全部博文(191)

文章存档

2014年(10)

2011年(11)

2010年(38)

2009年(132)

分类: Oracle

2011-02-26 18:38:19

因为无法使用flashback(闪回)的方式恢复truncate掉的数据,
如果有备份,truncate掉的数据是可以恢复的,但是要进行不完全恢复,这在生产环境是不允许的.
如果没有备份,就无法恢复数据.
ODU工具就是针对没有备份的情况来恢复truncate掉的数据,其实有备份也可以使用ODU来恢复数据.
因此使用ODU工具来恢复truncate掉的数据:
(ODU详细用法不在本篇中介绍)
---------------------------------------------
 
测试环境:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
 
 windows xp系统平台
 
(同样适合oracle9i数据库版本)
 
开始:
 
1.建立测试表
  SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 2月 26 17:27:05 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> conn scott/tiger
已连接。
SQL> select count(*) from test;
  COUNT(*)
----------
     40701

SQL> insert into test  select * from test;
已创建40701行。
SQL> /
已创建81402行。
SQL> /
已创建162804行。
SQL> commit;
提交完成。
SQL> select count(*) from test;
  COUNT(*)
----------
    325608
SQL> truncate table test;
表被截断。
SQL> select count(*) from test;
  COUNT(*)
----------
         0
误删除数据之后,立刻锁定该表所在表空间,使其离线,保留
该数据不被覆盖.
SQL> alter tablespace users online;
表空间已更改。
SQL> alter system checkpoint;
 
2.运行ODU工具:
  (这个工具你可以搜索下载得到.)
 
Oracle Data Unloader:Release 3.0.5
loading default config.......
byte_order little
block_size  8192
data_path   data
lob_path    lob
charset_name ZHS16GBK
ncharset_name AL16UTF16
output_format text
lob_storage file
clob_byte_order little
trace_level 1
delimiter |
 

load control file 'config.txt' successful
loading default control file ......

 ts#   fn  rfn bsize   blocks bf offset filename
---- ---- ---- ----- -------- -- ------ ----------------------------------------
----
   0    1    1  8192    62720 N       0 D:\ORACLE\PRODUCT\10.2.0\ORADATA\MVIEW\S
YSTEM01.DBF
   1    2    2  8192    16640 N       0 D:\ORACLE\PRODUCT\10.2.0\ORADATA\MVIEW\U
NDOTBS01.DBF
   2    3    3  8192    39680 N       0 D:\ORACLE\PRODUCT\10.2.0\ORADATA\MVIEW\S
YSAUX01.DBF
   4    4    4  8192     5280 N       0 D:\ORACLE\PRODUCT\10.2.0\ORADATA\MVIEW\U
SERS01.DBF
   6    5    5  8192    12800 N       0 D:\ORACLE\PRODUCT\10.2.0\ORADATA\MVIEW\E
XAMPLE01.DBF
load control file 'control.txt' successful
loading dictionary data......
 
ODU> unload dict
CLUSTER C_USER# file_no: 1 block_no: 89
TABLE OBJ$ file_no: 1 block_no: 121
CLUSTER C_OBJ# file_no: 1 block_no: 25
CLUSTER C_OBJ# file_no: 1 block_no: 25
found IND$'s obj# 19
found IND$'s dataobj#:2,ts#:0,file#:1,block#:25,tab#:3
found TABPART$'s obj# 266
found TABPART$'s dataobj#:266,ts#:0,file#:1,block#:2121,tab#:0
found INDPART$'s obj# 271
found INDPART$'s dataobj#:271,ts#:0,file#:1,block#:2161,tab#:0
found TABSUBPART$'s obj# 278
found TABSUBPART$'s dataobj#:278,ts#:0,file#:1,block#:2217,tab#:0
found INDSUBPART$'s obj# 283
found INDSUBPART$'s dataobj#:283,ts#:0,file#:1,block#:2257,tab#:0
found IND$'s obj# 19
found IND$'s dataobj#:2,ts#:0,file#:1,block#:25,tab#:3
found LOB$'s obj# 151
found LOB$'s dataobj#:2,ts#:0,file#:1,block#:25,tab#:6
found LOBFRAG$'s obj# 299
found LOBFRAG$'s dataobj#:299,ts#:0,file#:1,block#:2393,tab#:0

ODU> desc scott.test
Object ID:54518
Storage(Obj#=54518 DataObj#=54519 TS#=4 File#=4 Block#=35 Cluster=0)
NO. SEG INT Column Name                    Null?     Type
--- --- --- ------------------------------ --------- ---------------------------
---
  1   1   1 OWNER                          NOT NULL  VARCHAR2(30)
  2   2   2 OBJECT_NAME                    NOT NULL  VARCHAR2(30)
  3   3   3 SUBOBJECT_NAME                           VARCHAR2(30)
  4   4   4 OBJECT_ID                      NOT NULL  NUMBER
  5   5   5 DATA_OBJECT_ID                           NUMBER
  6   6   6 OBJECT_TYPE                              VARCHAR2(19)
  7   7   7 CREATED                        NOT NULL  DATE
  8   8   8 LAST_DDL_TIME                  NOT NULL  DATE
  9   9   9 TIMESTAMP                                VARCHAR2(19)
 10  10  10 STATUS                                   VARCHAR2(7)
 11  11  11 TEMPORARY                                VARCHAR2(1)
 12  12  12 GENERATED                                VARCHAR2(1)
 13  13  13 SECONDARY                                VARCHAR2(1)

ODU>
ODU> scan extent tablespace 4
scan extent start: 2011-02-26 17:42:07
scanning extent...
scanning extent finished.
scan extent completed: 2011-02-26 17:42:09
 
ODU> dump datafile 4 block 35
Block Header:
block type=0x23 (ASSM segment header block)
block format=0xa2 (oracle 10)
block rdba=0x01000023 (file#=4, block#=35)
scn=0x0000.005d5bff, seq=1, tail=0x5bff2301
block checksum value=0x6878=26744, flag=4
Data Segment Header:
  Extent Control Header
  -------------------------------------------------------------
  Extent Header:: extents: 51  blocks: 4608
                  last map: 0x00000000  #maps: 0  offset: 2716
      Highwater:: 0x01000024  (rfile#=4,block#=36)
                  ext#: 0  blk#: 3   ext size:8
      #blocks in seg. hdr's freelists: 0
      #blocks below: 0
      mapblk: 0x00000000   offset: 0
  --------------------------------------------------------
  Low HighWater Mark :
      Highwater::  0x01000024  ext#: 0      blk#: 3      ext size: 8
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0
  mapblk  0x00000000  offset: 0
  Level 1 BMB for High HWM block: 0x01000021
  Level 1 BMB for Low HWM block: 0x01000021
  --------------------------------------------------------
  Segment Type: 1 nl2: 1      blksz: 8192   fbsz: 0
  L2 Array start offset:  0x00001434
  First Level 3 BMB:  0x00000000
  L2 Hint for inserts:  0x01000022
  Last Level 1 BMB:  0x01000021
  Last Level 1I BMB:  0x01000022
  Last Level 1II BMB:  0x00000000
     Map Header:: next  0x00000000  #extents: 51    obj#: 54520  flag: 0x2100000
00
  Extent Map
  -------------------------------------------------------------
   0x01000021  length: 8
   0x01000199  length: 8
   0x010001a1  length: 8
   0x010001a9  length: 8
   0x010001b1  length: 8
   0x010001b9  length: 8
   0x010001c1  length: 8
   0x010001d9  length: 8
   0x010001e9  length: 8
   0x01000201  length: 8
   0x01000209  length: 8
   0x01000211  length: 8
   0x01000219  length: 8
   0x01000221  length: 8
   0x01000229  length: 8
   0x01000231  length: 8
   0x01000289  length: 128
   0x01000309  length: 128
   0x01000389  length: 128
   0x01000409  length: 128
   0x01000489  length: 128
   0x01000509  length: 128
   0x01000589  length: 128
   0x01000609  length: 128
   0x01000689  length: 128
   0x01000709  length: 128
   0x01000789  length: 128
   0x01000809  length: 128
   0x01000889  length: 128
   0x01000909  length: 128
   0x01000989  length: 128
   0x01000a09  length: 128
   0x01000a89  length: 128
   0x01000b09  length: 128
   0x01000b89  length: 128
   0x01000c09  length: 128
   0x01000c89  length: 128
   0x01000d09  length: 128
   0x01000d89  length: 128
   0x01000e09  length: 128
   0x01000e89  length: 128
   0x01000f09  length: 128
   0x01000f89  length: 128
   0x01001009  length: 128
   0x01001089  length: 128
   0x01001109  length: 128
   0x01001189  length: 128
   0x01001209  length: 128
   0x01001289  length: 128
   0x01001309  length: 128
   0x01001389  length: 128
  Auxillary Map
  -------------------------------------------------------------
   Extent 0      :  L1 dba:  0x01000021 Data dba:  0x01000024
   Extent 1      :  L1 dba:  0x01000021 Data dba:  0x01000199
   Extent 2      :  L1 dba:  0x010001a1 Data dba:  0x010001a2
   Extent 3      :  L1 dba:  0x010001a1 Data dba:  0x010001a9
   Extent 4      :  L1 dba:  0x010001b1 Data dba:  0x010001b2
   Extent 5      :  L1 dba:  0x010001b1 Data dba:  0x010001b9
   Extent 6      :  L1 dba:  0x010001c1 Data dba:  0x010001c2
   Extent 7      :  L1 dba:  0x010001c1 Data dba:  0x010001d9
   Extent 8      :  L1 dba:  0x010001e9 Data dba:  0x010001ea
   Extent 9      :  L1 dba:  0x010001e9 Data dba:  0x01000201
   Extent 10     :  L1 dba:  0x01000209 Data dba:  0x0100020a
   Extent 11     :  L1 dba:  0x01000209 Data dba:  0x01000211
   Extent 12     :  L1 dba:  0x01000219 Data dba:  0x0100021a
   Extent 13     :  L1 dba:  0x01000219 Data dba:  0x01000221
   Extent 14     :  L1 dba:  0x01000229 Data dba:  0x0100022a
   Extent 15     :  L1 dba:  0x01000229 Data dba:  0x01000231
   Extent 16     :  L1 dba:  0x01000289 Data dba:  0x0100028b
   Extent 17     :  L1 dba:  0x01000309 Data dba:  0x0100030b
   Extent 18     :  L1 dba:  0x01000389 Data dba:  0x0100038b
   Extent 19     :  L1 dba:  0x01000409 Data dba:  0x0100040b
   Extent 20     :  L1 dba:  0x01000489 Data dba:  0x0100048b
   Extent 21     :  L1 dba:  0x01000509 Data dba:  0x0100050b
   Extent 22     :  L1 dba:  0x01000589 Data dba:  0x0100058b
   Extent 23     :  L1 dba:  0x01000609 Data dba:  0x0100060b
   Extent 24     :  L1 dba:  0x01000689 Data dba:  0x0100068b
   Extent 25     :  L1 dba:  0x01000709 Data dba:  0x0100070b
   Extent 26     :  L1 dba:  0x01000789 Data dba:  0x0100078b
   Extent 27     :  L1 dba:  0x01000809 Data dba:  0x0100080b
   Extent 28     :  L1 dba:  0x01000889 Data dba:  0x0100088b
   Extent 29     :  L1 dba:  0x01000909 Data dba:  0x0100090b
   Extent 30     :  L1 dba:  0x01000989 Data dba:  0x0100098b
   Extent 31     :  L1 dba:  0x01000a09 Data dba:  0x01000a0b
   Extent 32     :  L1 dba:  0x01000a89 Data dba:  0x01000a8b
   Extent 33     :  L1 dba:  0x01000b09 Data dba:  0x01000b0b
   Extent 34     :  L1 dba:  0x01000b89 Data dba:  0x01000b8b
   Extent 35     :  L1 dba:  0x01000c09 Data dba:  0x01000c0b
   Extent 36     :  L1 dba:  0x01000c89 Data dba:  0x01000c8b
   Extent 37     :  L1 dba:  0x01000d09 Data dba:  0x01000d0b
   Extent 38     :  L1 dba:  0x01000d89 Data dba:  0x01000d8b
   Extent 39     :  L1 dba:  0x01000e09 Data dba:  0x01000e0b
   Extent 40     :  L1 dba:  0x01000e89 Data dba:  0x01000e8b
   Extent 41     :  L1 dba:  0x01000f09 Data dba:  0x01000f0b
   Extent 42     :  L1 dba:  0x01000f89 Data dba:  0x01000f8b
   Extent 43     :  L1 dba:  0x01001009 Data dba:  0x0100100b
   Extent 44     :  L1 dba:  0x01001089 Data dba:  0x0100108b
   Extent 45     :  L1 dba:  0x01001109 Data dba:  0x0100110b
   Extent 46     :  L1 dba:  0x01001189 Data dba:  0x0100118b
   Extent 47     :  L1 dba:  0x01001209 Data dba:  0x0100120b
   Extent 48     :  L1 dba:  0x01001289 Data dba:  0x0100128b
   Extent 49     :  L1 dba:  0x01001309 Data dba:  0x0100130b
   Extent 50     :  L1 dba:  0x01001389 Data dba:  0x0100138b
  -------------------------------------------------------------
   Second Level Bitmap block DBAs
  -------------------------------------------------------------
   DBA 1:   0x01000022
 
ODU> dump datafile 4 block 36 header
Block Header:
block type=0x06 (table/index/cluster segment data block)
block format=0xa2 (oracle 10)
block rdba=0x01000024 (file#=4, block#=36)
scn=0x0000.005d5755, seq=1, tail=0x57550601
block checksum value=0xcd0a=52490, flag=6
Data Block Header Dump:
 Object id on Block? Y
 seg/obj: 0xd4f7=54519  csc: 0x00.5d5719  itc: 2  flg: E  typ: 1 (data)
     brn: 0  bdba: 0x1000021 ver: 0x01
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.00e.000007c9  0x00800c42.02d1.13  --U-   79  fsc 0x0000.005d5755
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
Data Block Dump:
================
flag=0x0 --------
ntab=1
nrow=79
frre=-1
fsbo=0xb0
ffeo=0x3f5
avsp=0x345
tosp=0x345

ODU> unload table scott.test object 54519
Unloading table: TEST,object ID: 54518
Unloading segment,storage(Obj#=54518 DataObj#=54519 TS#=4 File#=4 Block#=35 Clus
ter=0)
325608 rows unloaded    ####数据已经找回!
ODU>exit
-----------------------------------------------
 
E:\oracle资料\ODU\odu_305_win32\odu\data>sqlldr scott/tiger control=scott_test.ctl
SQL*Loader: Release 10.2.0.1.0 - Production on 星期六
Copyright (c) 1982, 2005, Oracle.  All rights reserve
达到提交点 - 逻辑记录计数 7025
达到提交点 - 逻辑记录计数 14050
达到提交点 - 逻辑记录计数 21075
达到提交点 - 逻辑记录计数 28100
达到提交点 - 逻辑记录计数 35125
达到提交点 - 逻辑记录计数 42150
达到提交点 - 逻辑记录计数 49175
达到提交点 - 逻辑记录计数 56200
达到提交点 - 逻辑记录计数 63225
达到提交点 - 逻辑记录计数 69202
达到提交点 - 逻辑记录计数 76227
达到提交点 - 逻辑记录计数 83252
达到提交点 - 逻辑记录计数 90277
达到提交点 - 逻辑记录计数 97302
达到提交点 - 逻辑记录计数 104327
达到提交点 - 逻辑记录计数 111352
达到提交点 - 逻辑记录计数 118377
达到提交点 - 逻辑记录计数 125402
达到提交点 - 逻辑记录计数 132427
达到提交点 - 逻辑记录计数 138594
达到提交点 - 逻辑记录计数 145619
达到提交点 - 逻辑记录计数 152644
达到提交点 - 逻辑记录计数 159669
达到提交点 - 逻辑记录计数 166694
达到提交点 - 逻辑记录计数 173719
达到提交点 - 逻辑记录计数 180744
达到提交点 - 逻辑记录计数 187769
达到提交点 - 逻辑记录计数 194794
达到提交点 - 逻辑记录计数 201819
达到提交点 - 逻辑记录计数 207916
达到提交点 - 逻辑记录计数 214941
达到提交点 - 逻辑记录计数 221966
达到提交点 - 逻辑记录计数 228991
达到提交点 - 逻辑记录计数 236016
达到提交点 - 逻辑记录计数 243041
达到提交点 - 逻辑记录计数 250066
达到提交点 - 逻辑记录计数 257091
达到提交点 - 逻辑记录计数 264116
达到提交点 - 逻辑记录计数 271141
达到提交点 - 逻辑记录计数 276730
达到提交点 - 逻辑记录计数 283755
达到提交点 - 逻辑记录计数 290780
达到提交点 - 逻辑记录计数 297805
达到提交点 - 逻辑记录计数 304830
达到提交点 - 逻辑记录计数 311855
达到提交点 - 逻辑记录计数 318880
达到提交点 - 逻辑记录计数 325608
E:\oracle资料\ODU\odu_305_win32\odu\data>sqlplus /nolog
 
SQL> conn scott/tiger
已连接。
SQL> select count(*) from test;
  COUNT(*)
----------
    325608
 
至此,325608条数据已经成功恢复!
 
 
 
 
 
 

 
 
阅读(1675) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-06 17:20:34

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com