exp之flashback_scn&flashback_time_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 5396 | 回复: 1   主题: exp之flashback_scn&flashback_time        上一篇   下一篇 
barry
注册用户
等级:中校
经验:1534
发帖:236
精华:2
注册:2012-1-13
状态:离线
发送短消息息给barry 加好友    发送短消息息给barry 发消息
发表于: IP:您无权察看 2012-2-9 9:55:12 | [全部帖] [楼主帖] 楼主

这两个参数用于控制导出特定scn和时间戳的时间点的数据,注意这个参数应该和在数据库中使用闪回查询一样有时间限制的(经典的快照过旧:ORA-01555snapshot too old),测试如下:

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 18 11:14:05 2011

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> desc dbms_flashback;

PROCEDURE DISABLE

PROCEDURE ENABLE_AT_SYSTEM_CHANGE_NUMBER

Argument Name            Type            In/Out Default?

------------------------------ ----------------------- ------ --------

QUERY_SCN            NUMBER            IN

PROCEDURE ENABLE_AT_TIME

Argument Name            Type            In/Out Default?

------------------------------ ----------------------- ------ --------

QUERY_TIME            TIMESTAMP        IN

FUNCTION GET_SYSTEM_CHANGE_NUMBER RETURNS NUMBER

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

1654903

SQL> select count(*) from t4;

COUNT(*)

----------

720

SQL> delete from t4 where rownum<=100;

100 rows deleted.

SQL> commit;

Commit complete.

SQL> select count(1) from t4;

COUNT(1)

----------

620

SQL>

flashback_scn测试:

首先获得当前scn,然后删除表的一些记录,删除之前720,删除之后620;接着测试导出,指定scn为删除之前查询出来的值:

[oracle@localhost test]$ exp store1/store1 file=scn.dmp log=scn.log flashback_scn=1654903

Export: Release 10.2.0.4.0 - Production on Fri Nov 18 11:16:04 2011

.。。。。。。

. . exporting table                             T4        720 rows exported

可以看到导出的是删除之前的720条记录,接着不指定scn导出:

[oracle@localhost test]$ exp store1/store1 file=scn.dmp log=scn.log

Export: Release 10.2.0.4.0 - Production on Fri Nov 18 11:16:13 2011

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

.。。。。

. . exporting table                             T4        620 rows exported

这个情况下当然就是最新的620条记录了。

time测试,在删除之前看下时间,可以精确到秒,然后指定闪回exp的时间点,说到这里,测试过程中还遇到一个问题,就是转义的问题,最后使用参数文件解决了,其实使用参数文件是个很好的习惯,如果可能尽量使用参数文件,便于重复使用和操作,参数文件如下:

[oracle@localhost test]$ cat >parafile

flashback_time=to_timestamp('20111118 11:10:00','yyyymmdd hh24:mi:ss')

[oracle@localhost test]$ nl parafile

1    flashback_time=to_timestamp('20111118 11:10:00','yyyymmdd hh24:mi:ss')

使用time时间点导出:

[oracle@localhost test]$ exp store1/store1 file=scntime.dmp log=scntime.log parfile=parafile

Export: Release 10.2.0.4.0 - Production on Fri Nov 18 11:20:02 2011

.。。。

. about to export STORE1's tables via Conventional Path ...

. . exporting table                             T4        720 rows exported

一样的也是删除之前的720条记录。

exp使用flashback功能还是受到了诸多限制,其中最总要的闪回时间点不是太长,但是在一些特殊场合还是有一些用处,比如用于数据误删除的恢复等等。

-The End-




赞(0)    操作        顶端 
twany
注册用户
等级:少校
经验:1408
发帖:17
精华:0
注册:2015-6-2
状态:离线
发送短消息息给twany 加好友    发送短消息息给twany 发消息
发表于: IP:您无权察看 2016-3-10 10:04:21 | [全部帖] [楼主帖] 2  楼

高手,赞一个



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论