社区
基础和管理
帖子详情
求教闪回用法!!!
kahong
2005-11-09 11:08:04
各位高手,我在客户处进行操作数据时,误删除了几条纪录,而且提交了,oracle9i的库,虽然作了dmup,可如果恢复了,前面的操作就全部废了,用户这里没有日志归档,我查了下,可以利用闪回功能进行恢复,有高手能帮帮忙么?在线等啊!!!!谢谢~~~
...全文
204
7
打赏
收藏
求教闪回用法!!!
各位高手,我在客户处进行操作数据时,误删除了几条纪录,而且提交了,oracle9i的库,虽然作了dmup,可如果恢复了,前面的操作就全部废了,用户这里没有日志归档,我查了下,可以利用闪回功能进行恢复,有高手能帮帮忙么?在线等啊!!!!谢谢~~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
developer2002
2005-11-09
打赏
举报
回复
不需要那么复杂。
SELECT * FROM table AS OF TIMESTAMP (to_timestamp('20051108 08:00:33','yyyymmdd hh24:mi:ss'));
liuyi8903
2005-11-09
打赏
举报
回复
我把piner的帖子贴一下:
1、创建FLASH用户
SQL> create user flash identified by flash;
SQL> grant connect, resource to flash;
SQL> grant execute on dbms_flashback to flash;
SQL> connect flash/flash
2、创建一个测试表
SQL> CREATE TABLE tst(t number(5));
Table created.
SQL> INSERT INTO tst VALUES(1);
1 row created.
SQL> INSERT INTO tst VALUES(2);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> CREATE TABLE keep_date (date_scn_tracking date);
Table created.
SQL> SELECT * FROM tst;
T
----------
1
2
注意:在执行步骤3或者步骤4之前,等待5分钟。
3. 删除记录
SQL> execute dbms_flashback.disable;
PL/SQL procedure successfully completed.
SQL> INSERT INTO keep_date select sysdate from dual;
1 row created.
SQL> COMMIT;
Commit complete.
SQL> DELETE FROM tst WHERE t = 1;
1 row deleted.
SQL> COMMIT;
Commit complete.
SQL> SELECT * FROM tst;
T
----------
2
通过以上的操作,我们插入了两条记录,并删除了其中一条记录,现在的结果是,我们这里只有一条记录了。在以下的操作中,我们将通过flashback query找到删除的记录
4. 闪回查询
SQL> declare
2 restore_scn date;
3 begin
4 select date_scn_tracking into restore_scn from keep_date;
5 dbms_flashback.enable_at_time(restore_scn);
6 end;
7 /
PL/SQL procedure successfully completed.
SQL> SELECT * FROM tst;
T
----------
1
2
可以看到,虽然我们删除记录并提交了,但是通过特定操作,我们还能查询到删除前的两条记录,
这里需要特别注意的是,Oracle 9i是每五分钟记录一次SCN的,并将SCN和对应时间的映射做个纪录。如果原来插入的记录到做闪回的时间在5分钟之内,用基于时间的flashback可能并查询不到记录,因为如果是基于时间点的查询,也是转化为最近的一次SCN,然后从这个SCN开始进行恢复,因此,如果需要精确的查询,我们可以采用基于SCN的flashback,它将能精确的闪回到需要恢复的时间,关于获取SCN,我们可以通过DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER或者LOGMNR。如
DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(SCN_NUM);
来定位你的恢复时间点,下面是使用方法:
SQL> VARIABLE SCN_SAVE NUMBER;
SQL>EXECUTE :SCN_SAVE := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER;
PL/SQL procedure successfully completed.
SQL> print SCN_SAVE;
SCN_SAVE
----------
2.1202E+11
SQL>execute DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:SCN_SAVE);
最后注意,Oracle 9i的Flashback有如下限制。
·采用时间点的恢复,不能精确到最近5分钟,如果需要更精确的查询,需要采用SCN。
·不能flashback5天以前的数据,这个并不是undo_retention所能决定的。
·闪回查询无法恢复到表结构改变之前,因为闪回查询使用的当前的数据字典。
·由于受到undo_retention的影响,对于undo_retention之前的时间,flashback不保证能成功
·对于drop,truncate等不记录回滚的操作,flashback是无能为力的。
bierbin
2005-11-09
打赏
举报
回复
关注,回头看看处理方法。
kahong
2005-11-09
打赏
举报
回复
楼上的能帮忙写出来么?谢谢~~~~!!
developer2002
2005-11-09
打赏
举报
回复
用select语句的flash back子句。很简单的。
kahong
2005-11-09
打赏
举报
回复
一楼推荐的文章是10g的,和9i还有差别啊
haifeng1012
2005-11-09
打赏
举报
回复
http://blog.csdn.net/emag_oracle/archive/2005/02/01/276707.aspx
数据处理救星降世Power Query
0/ Excel数据处理新利器来了,准备好了吗? 1/ 比网红函数VLOOKUP还全面的功能。——查(查询) 2/ 取其精华,去其糟粕。...——聚(聚合) 9/ 我自己的难题自己造函数,不
求教
别人。——技法(自定义函数)
利用ORACLE的
闪回
功能恢复数据
使用FLASHBACK TABLE语句从撤消段中(undo segment)读取该表的过去映像,并利用Oracle9i中引入的回闪查询重建表行。UNDO_RETENTION给出了
闪回
支持的最小时间。也就是说,FLASHBACK最少可以支持UNDO_RETEN
java 参数变量,java新人
求教
,java方法变量和参数变量的区别,求高人指点啊。。。...
java新人
求教
,java方法变量和参数变量的区别,求高人指点啊。。。关注:95答案:3mip版解决时间 2021-01-29 09:58提问者帆佈素顔钕漢囝2021-01-28 22:26java...如下例子正常情况下我们使用方法应当如下创建一个画布:...
Android Camera Parameters 方法出错,
求教
============问题描述============ ...也就是说上述parameters调用的三个方法的任意一个不屏蔽都会报错,小弟实在找不出解决方法。跪求大神指导 ============解决方案1============ ...
java拍照控件焦距问题,Android Camera Parameters 方法出错,
求教
4296)09-24 16:58:52.385: E/AndroidRuntime(25089): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 也就是说上述parameters调用的三个方法的任意一个不屏蔽都会报错,小弟实在找...
基础和管理
17,377
社区成员
95,128
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章