flashback使用记录
来源:互联网 发布:关于网络信息的段子 编辑:程序博客网 时间:2024/05/22 03:19
作者:gtlions 【转载时请以超链接心事标明文章出处和作者信息,谢谢.】
链接:http://blog.csdn.net/gtlions/archive/2010/03/29/5430076.aspx
今天中午同事误操作了一个动作,导致生产环境的550多条的业务数据丢失,折腾了10-15分钟把数据给恢复了。
晚上回到酒店在本机稍微小结和还原下操作过程,在此记录下。
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as crmii
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> create table flashback_table_test1 (id number(4),name varchar2(10));
Table created
SQL> create table flashback_table_test2 as select * from flashback_table_test1 where 1=0;
Table created
SQL> insert into flashback_table_test1 values(1,'张三');
1 row inserted
SQL> insert into flashback_table_test1 values(2,'李四');
1 row inserted
SQL> insert into flashback_table_test1 values(3,'王五');
1 row inserted
SQL> insert into flashback_table_test2 select * from flashback_table_test1;
3 rows inserted
SQL> commit;
Commit complete
SQL> select sysdate from dual;
SYSDATE
-----------
2010/3/29 2
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 1800
undo_tablespace string UNDOTBS1
SQL>
SQL> select * from flashback_table_test1;
ID NAME
----- ----------
1 张三
2 李四
3 王五
SQL> select * from flashback_table_test2;
ID NAME
----- ----------
1 张三
2 李四
3 王五
SQL>
1、DELETE情况下的恢复
SQL> delete from flashback_table_test1;
3 rows deleted
SQL> commit;
Commit complete
SQL> select * from flashback_table_test1;
ID NAME
----- ----------
SQL> select * from flashback_table_test1 as of timestamp (sysdate-3/1440);
ID NAME
----- ----------
1 张三
2 李四
3 王五
SQL> insert into flashback_table_test1 select * from flashback_table_test1 as of timestamp (sysdate-3/1440);
3 rows inserted
SQL> commit;
Commit complete
SQL> select * from flashback_table_test1;
ID NAME
----- ----------
1 张三
2 李四
3 王五
SQL>
数据成功恢复。
2、Truncate情况下的恢复
SQL> truncate table flashback_table_test2;
Table truncated
SQL> select * from flashback_table_test2 as of timestamp (sysdate-3/1440);
select * from flashback_table_test2 as of timestamp (sysdate-3/1440)
ORA-01466: 无法读取数据 - 表定义已更改
SQL> select * from flashback_table_test2 as of timestamp (sysdate-2/1440);
select * from flashback_table_test2 as of timestamp (sysdate-2/1440)
ORA-01466: 无法读取数据 - 表定义已更改
SQL> select * from flashback_table_test2 as of timestamp (sysdate-1/1440);
select * from flashback_table_test2 as of timestamp (sysdate-1/1440)
ORA-01466: 无法读取数据 - 表定义已更改
SQL> flashback table flashback_table_test2 to before drop rename to test2_r;
Done
SQL> select * from test2_r;
ID NAME
---------- --------------------
2 test 2
SQL> drop table flashback_table_test2;
Table dropped
SQL> flashback table flashback_table_test2 to before drop rename to test2_r_2;
Done
SQL> select * from test2_r_2;
ID NAME
----- ----------
SQL>
恢复以失败告终;
3、Drop情况下恢复
SQL> select * from flashback_table_test1;
ID NAME
----- ----------
1 张三
2 李四
3 王五
SQL> drop table flashback_table_test1;
Table dropped
SQL> select * from flashback_table_test1;
select * from flashback_table_test1
ORA-00942: 表或视图不存在
SQL> flashback table flashback_table_test1 to before drop to rename flashback_table_test1_r;
flashback table flashback_table_test1 to before drop to rename flashback_table_test1_r
ORA-00933: SQL 命令未正确结束
SQL> flashback table flashback_table_test1 to before drop rename to flashback_table_test1_r;
Done
SQL> select * from flashback_table_test1_r;
ID NAME
----- ----------
1 张三
2 李四
3 王五
SQL>
数据也成功恢复。
初步总结:
1、正常的Delete情况下是可以完全恢复数据的;
2、Truncate情况下使用普通的Flashback似乎无能为了;
3、Drop情况下也是可以恢复数据的;
4、有修改过表结构的情况下不能使用正常的查找SCN和timestamp来操作了,建议的操作是使用flashback复制到临时表;
5、遇到数据被误删除、表误删除的情况下,视情况以最快的数据停掉前段服务,停止任何数据操作,避免UNDO空间被覆盖、循环覆盖写。
才学疏浅,错误之处或看官有更好的建议和总结请多指教。
-The End-
- flashback使用记录
- oracle实验记录 (flashback)
- flashback database的使用
- oracle flashback 的使用
- flashback table 命令使用
- flashback的使用
- 使用flashback恢复数据
- flashback
- Flashback
- flashback
- flashback
- Flashback
- flashback
- flashback
- flashback
- flashback
- Flashback
- flashback
- The new start of the ConfusedBird
- MySql-Front 输入不了中文 解决了
- 几种常用的MFC界面编程技巧
- Windows重装导致Ubuntu无法启动,Grub信息丢失的解决方法
- SQL Server JDBC Driver配置方法(图文讲解)
- flashback使用记录
- 基于Agent的计算经济学的经典期刊和基本技能要求
- 用Vim搭建C/C++开发环境
- 使用JDBC连接sqlServer指定(或非默认)实例
- 神经网络之一
- MyEclipse 8.0正式版发布+高速下载以及安装+注册码+破解+升级 100%可用!
- 手机登录上海图书馆---方法来自GTD论坛
- java.io.file.delete()不能正常删除文件的原因!
- 《软件项目管理》电子课件 ready for you