社区
基础和管理
帖子详情
求教闪回用法!!!
kahong
2005-11-09 11:08:04
各位高手,我在客户处进行操作数据时,误删除了几条纪录,而且提交了,oracle9i的库,虽然作了dmup,可如果恢复了,前面的操作就全部废了,用户这里没有日志归档,我查了下,可以利用闪回功能进行恢复,有高手能帮帮忙么?在线等啊!!!!谢谢~~~
...全文
230
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
Oracle
闪回
详解(
闪回
查询,
闪回
数据,回退数据,
闪回
表,
闪回
数据库,
闪回
快照,
闪回
主备库(恢复关系),
闪回
归档,注意事项,有关
闪回
常用查询命令)
本文详细介绍了Oracle
闪回
功能,从Oracle 9i开始支持,10g全面支持,11g有所完善。内容包括
闪回
开启的必要条件和操作步骤,
闪回
查询、
闪回
表、
闪回
DROP、
闪回
数据库等使用方法,还提及
闪回
注意事项及相关数据字典和常用查询语句。
oracle
闪回
技术
本文详细介绍了Oracle数据库的
闪回
技术,包括
闪回
查询、
闪回
数据归档、
闪回
事务查询、
闪回
事务、
闪回
表、
闪回
删除和
闪回
数据库。解释了每种技术的工作原理、使用场景及限制条件,帮助读者全面理解如何利用
闪回
功能对抗人为错误。
oracle
闪回
查询,
闪回
版本查询,
闪回
事务查询,
闪回
表,
闪回
删除,
闪回
数据库
本文详细介绍了Oracle数据库的
闪回
技术,包括
闪回
查询、
闪回
事务、
闪回
表和
闪回
删除等。通过
闪回
查询,可以按照时间点或SCN恢复数据;
闪回
事务查询允许恢复特定事务;
闪回
表则能将表数据恢复到先前状态;
闪回
删除可用于从回收站中恢复已删除对象。此外,还讲解了如何启用和配置数据库的
闪回
功能,包括设置归档模式、恢复区和
闪回
保留时间。
Oracle
闪回
技术详解
本文详细介绍了Oracle数据库的
闪回
技术,包括
闪回
删除、
闪回
查询、
闪回
表等多种
闪回
类型及其原理。通过实例演示了如何使用
闪回
技术恢复误删数据,查询历史数据状态,以及如何设置
闪回
日志和归档策略。
基础和管理
17,377
社区成员
95,113
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章