楼主: yjf6660

(原创)使用9i的flashback恢复丢失的数据

[复制链接]
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
11#
发表于 2005-1-24 16:25 | 只看该作者
为什么会这样,flashback 和恢复什么区别,也是通过日志?
16:11:04 SQL> insert into test values('test' , 1);

已创建 1 行。

已用时间:  00: 00: 00.00
16:11:40 SQL> insert into test values('test1' , 2);

已创建 1 行。

已用时间:  00: 00: 00.00
16:11:52 SQL> insert into test values('test2' , 3);

已创建 1 行。

已用时间:  00: 00: 00.00
16:11:59 SQL> commit;

提交完成。

已用时间:  00: 00: 00.00
16:12:01 SQL> select *from test;

AA                 BB
---------- ----------
test                1
test1               2
test2               3

已用时间:  00: 00: 00.00
16:12:04 SQL> select to_char(sysdate,'mm-dd-yy hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'
-----------------
01-24-04 16:12:14

已用时间:  00: 00: 00.00
16:12:14 SQL> delete from test;

已删除3行。

已用时间:  00: 00: 00.00
16:12:27 SQL> commit;

提交完成。

已用时间:  00: 00: 00.00
16:12:29 SQL> select to_char(sysdate,'mm-dd-yy hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'
-----------------
01-24-04 16:12:32

已用时间:  00: 00: 00.00

已用时间:  00: 00: 00.00
16:14:00 SQL> exec dbms_flashback.enable_at_time(to_date('2004-01-24 16:12:14','
yyyy-mm-dd hh24:mi:ss'));

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.00
16:14:33 SQL> select * from test;
select * from test
              *
ERROR 位于第 1 行:
ORA-01466: 无法读数据 - 表定义已更改


已用时间:  00: 00: 00.00
16:14:52 SQL> select * from test.test;
select * from test.test
                   *
ERROR 位于第 1 行:
ORA-01466: 无法读数据 - 表定义已更改


已用时间:  00: 00: 00.00
16:14:57 SQL> desc test
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------

AA                                                 VARCHAR2(10)
BB                                                 NUMBER(10)

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
12#
发表于 2005-1-24 16:38 | 只看该作者
为什么没有闪回,看来的好好看看原理了!
16:27:43 SQL> create table t(aa varchar2(10));

表已创建。

已用时间:  00: 00: 00.00
16:27:50 SQL> insert into t values('test');

已创建 1 行。

已用时间:  00: 00: 00.00
16:27:56 SQL> commit;

提交完成。

已用时间:  00: 00: 00.00
16:27:57 SQL> select * from t;

AA
----------
test

已用时间:  00: 00: 00.00
16:28:06 SQL> select to_char(sysdate,'mm-dd-yy hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'
-----------------
01-24-04 16:28:19

已用时间:  00: 00: 00.00
16:28:19 SQL> delete from t;

已删除 1 行。

已用时间:  00: 00: 00.00
16:28:26 SQL> commit;

提交完成。

已用时间:  00: 00: 00.00
16:28:28 SQL> exec dbms_flashback.enable_at_time(to_date('2004-01-24 16:28:06','
yyyy-mm-dd hh24:mi:ss'));

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.00
16:29:17 SQL> select * from t;

未选定行

已用时间:  00: 00: 00.00
16:29:21 SQL> execute dbms_flashback.disable;

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.00
16:30:11 SQL> select * from t;

未选定行

已用时间:  00: 00: 00.00

16:30:18 SQL>

使用道具 举报

回复
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
13#
发表于 2005-1-24 16:38 | 只看该作者
你的系统时间有问题?
现在是05年了。

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
14#
发表于 2005-1-24 16:42 | 只看该作者
最初由 yangtingkun 发布
[B]你的系统时间有问题?
现在是05年了。 [/B]


我知道,装了一个过期的软件,改了,应该不影响吧!

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2005-1-24 16:48 | 只看该作者
你的时间应该用oracle的时间01-24-04 16:28:19
,而不是2004-01-24 16:28:06。
即exec dbms_flashback.enable_at_time(to_date('2004-01-24 16:28:19','
yyyy-mm-dd hh24:mi:ss'));
在16:28:06秒的时候你还没有朝这个表插入数据呢,所以flashback的结果是空的。

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
16#
发表于 2005-1-24 17:03 | 只看该作者
[QUOTE]最初由 yjf6660 发布
[B]你的时间应该用oracle的时间01-24-04 16:28:19
,而不是2004-01-24 16:28:06。
即exec dbms_flashback.enable_at_time(to_date('2004-01-24 16:28:19','
yyyy-mm-dd hh24:mi:ss'));
在16:28:06秒的时候你还没有朝这个表插入数据呢,所以flashback的结果是空的。 [/B][/QUOTE

谢谢,明白了!

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
17#
发表于 2005-1-24 17:08 | 只看该作者
不过为什么老是出现这样的错误呢:
17:02:48 SQL> select * from test1;

AA         BB         CC
---------- ---------- ----------
a          test       a
c          test2      c
b          test1      b
d          test3      d
e          test4      e
f          test5      f
j          test9      j
g          test6      g
h          test7      h
i          test8      i

已选择10行。

已用时间:  00: 00: 00.00
17:02:51 SQL> delete from test1;

已删除10行。

已用时间:  00: 00: 00.01
17:03:05 SQL> commit;

提交完成。

已用时间:  00: 00: 00.00
17:03:07 SQL> exec dbms_flashback.enable_at_time(to_date('2004.01.24 17:03:05','
yyyy.mm.dd hh24:mi:ss'));

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.00
17:03:24 SQL> select * from test1;
select * from test1
              *
ERROR 位于第 1 行:
ORA-01466: 无法读数据 - 表定义已更改


已用时间:  00: 00: 00.00
17:03:30 SQL>

使用道具 举报

回复
论坛徽章:
0
18#
 楼主| 发表于 2005-1-24 17:28 | 只看该作者
找到biti的一篇大作,http://www.*****.org/viewthread.php?tid=929
,这上面很好的解释了这个问题,就是说对于五分钟之内创建的表使用flashback就会出现ORA-01466的错误。因为我的表是早就建好的,所以没有出现这个问题,也没有发现这个问题。看来,biti高手真是名不虚传哦,佩服之至!

使用道具 举报

回复
论坛徽章:
0
19#
 楼主| 发表于 2005-1-24 17:30 | 只看该作者

使用道具 举报

回复
论坛徽章:
0
20#
 楼主| 发表于 2005-1-24 17:30 | 只看该作者
*****

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表