度量快速开发平台-专业、快速的软件定制快开平台

标题: oralce flashback 使用方法总结 [打印本页]

作者: 陈晓龙    时间: 2020-5-15 14:36
标题: oralce flashback 使用方法总结
一,关键知识点
在oracle 10g中,如果是使用drop 把表对象删除了,会把这个对象放在回收站里
查看回收站:select * from recyclebin;
然后恢复对象:flashback table TABLENAME to before drop;
删除不放回回收站:drop table TABLENAME purge;


如果不小心误删除了某个表中的部分数据,需要恢复回来,可以利用oracle flashback闪回误删除的表数
据。但要注意:flashback table 需要下面几个条件:
1. 需要有flashback any table的系统权限或者是flashback这个表的对象权限;
2. 需要有对这个表的基本的dml,alter操作权限;
3. 必须保证该表row movement(这主要是让flashback记住表的rowid)

扩展:oracle flashback闪回不仅可以误删除的表数据,还可以错误的修改也可以恢复过来;
注意:
ORA-08189: cannot flashback the table because row movement is not enabled
但是抛出了8189错误,原因就是因为表没有row movement,改变下表的属性:
SQL> alter table test_tablename enable row movement;
再执行闪回操作;


二,实例


1.创建示例表:
CREATE TABLE TBL_TEST
(
ID    NUMBER,
NAME VARCHAR2(100 BYTE),
PID   NUMBER                                  DEFAULT 0
);


2.插入测试数据:

INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');


3.恢复误删除的表数据
例如:
FlashBack table TBL_TEST to timestamp to_timestamp('2009-8-1 16:59:36','yyyy-mm-dd

hh24:mi:ss');
报错:ORA-08189: cannot flashback the table because row movement is not enabled

错误解决,要执行:alter table TBL_TEST enable row movement;
FlashBack table TBL_TEST to timestamp to_timestamp('2009-8-1 16:59:36','yyyy-mm-dd

hh24:mi:ss');

4.恢复误表数据错误的修改:
例如:
update TBL_TEST set pid=1 where id =5;
FlashBack table TBL_TEST to timestamp to_timestamp('2009-8-1 16:59:36','yyyy-mm-dd

hh24:mi:ss');

5.恢复被删除表的步骤:
(1)显示回收站信息
select * from RECYCLEBIN;
(2)确定被删除表存在后,可以恢复诶删除表,此时可以指定表明或者回收站对象名
  flashback table TBL_TEST to before drop;
  或 flashback table "BIN$zgwx7wCsQ92JRcrAVpABQg==$0" to before drop
   
6.恢复被删除表的同时可以改变被删除表的名称
flashback table TBL_TEST to before drop rename to test_TBL_TEST
或 flashback table "BIN$zgwx7wCsQ92JRcrAVpABQg==$0" to before drop rename to test_TBL_TEST

7.删除不放回回收站:
drop table TBL_TEST purge;


目前只在pl/sql developer 上,实际操作了上面几点,也是常用的知识点。可能还有其他的处理方法,如Flashback Database to time to_timestamp(xxx),这些有待继续研究。


作者: 张兴康    时间: 2020-5-15 17:16
来了,痕迹留下了,走了... ... ...
作者: 陈晓龙    时间: 2020-5-16 16:26
张兴康 发表于 2016-6-15 17:16
来了,痕迹留下了,走了... ... ...

慢走!
作者: 张兴康    时间: 2020-5-16 17:21
陈晓龙 发表于 2016-6-16 16:26
慢走!

不用送
作者: 陈晓龙    时间: 2020-5-17 16:59
张兴康 发表于 2016-6-16 17:21
不用送

没说要送你呀!
作者: 张兴康    时间: 2020-5-20 14:40
陈晓龙 发表于 2016-6-17 16:59
没说要送你呀!

所以说不用送噻
作者: 陈晓龙    时间: 2020-5-20 14:52
张兴康 发表于 2016-6-20 14:40
所以说不用送噻

不送你啊!
作者: 张兴康    时间: 2020-5-21 18:07
陈晓龙 发表于 2016-6-20 14:52
不送你啊!

没要你送啊
作者: 陈晓龙    时间: 2020-5-22 14:23
张兴康 发表于 2016-6-21 18:07
没要你送啊

死循环了迈!
作者: 张兴康    时间: 2020-5-22 14:35
陈晓龙 发表于 2016-6-22 14:23
死循环了迈!

宕机了




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2