SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 18 11:14:05 2011
q[eH5b,Gs0
rb N9a,Kwn(]0Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
K;Z/B@g$e0ITPUB个人空间&N+CC\U
ITPUB个人空间\!]op,o
Connected to:ITPUB个人空间"Eru1jx+QV
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
qM;tP4oi#A4h0With the Partitioning, OLAP, Data Mining and Real Application Testing optionsITPUB个人空间Z)W8xL1v!a7m P
d4jY;[%a'W0SQL> desc dbms_flashback;ITPUB个人空间l2vt]7EJb
PROCEDURE DISABLEITPUB个人空间n;r.zvLD:L
PROCEDURE ENABLE_AT_SYSTEM_CHANGE_NUMBERITPUB个人空间@!jd-_h
Argument Name Type In/Out Default?ITPUB个人空间 `o8f3A |$c{%r
------------------------------ ----------------------- ------ --------ITPUB个人空间9j7[p$s[\$d g-}9_
QUERY_SCN NUMBER IN
{ WyT$`F[r&I0PROCEDURE ENABLE_AT_TIMEITPUB个人空间4U;ZZ6I3oa5CD
Argument Name Type In/Out Default?
*~ F/t$~ _/tL`0 ------------------------------ ----------------------- ------ --------ITPUB个人空间;m(Xh:YRi\
QUERY_TIME TIMESTAMP IN
NG9k/a K:ZW0FUNCTION GET_SYSTEM_CHANGE_NUMBER RETURNS NUMBERITPUB个人空间P]E-@i,|
Z*H@7aX&X$_bd3V6S0SQL> select dbms_flashback.get_system_change_number from dual;
1ny"?)MH#\,F0ITPUB个人空间L AgyHdM tI
GET_SYSTEM_CHANGE_NUMBERITPUB个人空间 rl)U#cNT-?AY E
------------------------
/X2D/e2I9b0 1654903ITPUB个人空间M.NRxXUB4~|.vu#h
Y+[3W\:]'fXE0SQL> select count(*) from t4;ITPUB个人空间8w _`\B:K
LL)i `f6F0 COUNT(*)
l+ZQv-@0----------
8O$j{fa3n0 720
(|h W2KC.n1~3I+p0
9tYO(f8L2^,s N0SQL> delete from t4 where rownum<=100;
7zR ?/q|0ITPUB个人空间 V7\6~LW RfA s5}
100 rows deleted.
cDgl&N i0
Z]#Q7\I"fZa6}0SQL> commit;
0D6L3~^:f\5x j o,g0
D L5|3i"V+DG0Commit complete.ITPUB个人空间dM8c!Nl.xA7~9v
t K]\ b1b0SQL> select count(1) from t4;ITPUB个人空间I g o"|%]!x:v
O:}&o(K0}$s0 COUNT(1)
]-G:b2G8S0----------
c g p8KX;]KKZ0 620ITPUB个人空间m*M@%a.M \
ITPUB个人空间 D UP N"S]A
SQL>
0z4X F/U.kQ Zy^0flashback_scn测试:
rJ+A2HK0首先获得当前scn,然后删除表的一些记录,删除之前720,删除之后620;接着测试导出,指定scn为删除之前查询出来的值:ITPUB个人空间-o+ON[j9li y
[oracle@localhost test]$ exp store1/store1 file=scn.dmp log=scn.log flashback_scn=1654903
9Ss} N7PBi0
q/G;t+ZF+bEq Q*O0Export: Release 10.2.0.4.0 - Production on Fri Nov 18 11:16:04 2011ITPUB个人空间t `:BQNUV M^
.。。。。。。ITPUB个人空间t"{Z TbR
. . exporting table T4 720 rows exported
xro3r7@6I2Vz[a0可以看到导出的是删除之前的720条记录,接着不指定scn导出:ITPUB个人空间 NQ9e vgN
[oracle@localhost test]$ exp store1/store1 file=scn.dmp log=scn.log
'q.^qLE7\0ITPUB个人空间|]WDZ'z A&W
Export: Release 10.2.0.4.0 - Production on Fri Nov 18 11:16:13 2011ITPUB个人空间az,V gF'g;D!O*E
ITPUB个人空间RHd kjy
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Qu|p"qbgH0.。。。。
|R/cU!AG,R-BV0. . exporting table T4 620 rows exported
;u(n'[&LU!dVf0]0这个情况下当然就是最新的620条记录了。
)bmNU#{I+KXj R1O0time测试,在删除之前看下时间,可以精确到秒,然后指定闪回exp的时间点,说到这里,测试过程中还遇到一个问题,就是转义的问题,最后使用参数文件解决了,其实使用参数文件是个很好的习惯,如果可能尽量使用参数文件,便于重复使用和操作,参数文件如下:
B UBF*D0[oracle@localhost test]$ cat >parafileITPUB个人空间MdWD,D g
flashback_time=to_timestamp('20111118 11:10:00','yyyymmdd hh24:mi:ss')
f)`!v`k!v0[oracle@localhost test]$ nl parafileITPUB个人空间xKP-O)V*YdW
1 flashback_time=to_timestamp('20111118 11:10:00','yyyymmdd hh24:mi:ss')ITPUB个人空间.Kg1e*l+I,g9U
使用time时间点导出:ITPUB个人空间 P$Yi3Ek!p-g
[oracle@localhost test]$ exp store1/store1 file=scntime.dmp log=scntime.log parfile=parafile
_k@d}9G2n0ITPUB个人空间A*@B/T JT
Export: Release 10.2.0.4.0 - Production on Fri Nov 18 11:20:02 2011
"d5A3B(?T]+s6Gn2I\0ITPUB个人空间!O8u ` Se lSA
.。。。ITPUB个人空间i5ian0b2r {R d
. about to export STORE1's tables via Conventional Path ...
:}8^9G8A5D0. . exporting table T4 720 rows exported
%v Q*r;a@$A0一样的也是删除之前的720条记录。
!\r%Z(fieR'z0exp使用flashback功能还是受到了诸多限制,其中最总要的闪回时间点不是太长,但是在一些特殊场合还是有一些用处,比如用于数据误删除的恢复等等。ITPUB个人空间*t GP t/{D+E
-The End-ITPUB个人空间7{-y8XM5t