Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
来源:互联网 发布:吉他选购 知乎 编辑:程序博客网 时间:2024/05/17 22:37
闪回表,实际上就是将表中的数据快速恢复到过去的一个时间点或者系统改变号SCN上。实现表的闪回,需要用到撤销表空间相关的UNDO信息,通过SHOW PARAMETER UNDO命令就可以了解这些信息。用户对表的数据的修改操作,都记录在撤销表空间中,这为表的闪回提供的数据恢复的基础。
修改记录被提交到undo表空间中的默认保留时间为900秒,用户可以在这900秒的时间内对表的进行闪回操作,从而将表中的数据恢复的修改前的状态。
如上图显示的默认900秒,我们通过sql来修改这个默认时间为1200:
flashtable的语法:
flashback table [schema.]table_name to {[before drop [rename to new_table_name]] | [SCN | TIMESTAMP] expr [enable | desable] triggers}
schema:模式名 table_name :表名
before drop 表示回复到删除之前
rename new_table_name 重新定义表名称
timestamp 时间戳,包括年月日时分秒
expr 制定一个值或表达式
enable triggers 触发器恢复后,呈启用状态
disabled triggers 触发器回复后,呈禁用状态,默认情况下为此选项。
下面演示一个示例:
首先在数据库中创建一个表,并插入3条数据
SQL>create table tb_flash1(id number primary key,content varchar2(40));
表已创建。
SQL> insert into tb_flash1(id,content)
2 select 1,'第一行数据' from dual
3 union all
4 select 2,'第二行数据' from dual
5 union
6 select 3,'第三行数据' from dual
7 /
已创建3行。
SQL> commit
2 /
提交完成。
查询刚才插入的数据:
SQL> select * from tb_flash1
2 /
ID CONTENT
---------- ----------------------------------------
1 第一行数据
2 第二行数据
3 第三行数据
假设现在误删除一条id=2的数据:
SQL> delete from tb_flash1 where id=2
2 /
已删除 1 行。
SQL> commit;
提交完成。
再次查询,表中只剩两条记录:
SQL> select * from tb_flash1
2 /
ID CONTENT
---------- ----------------------------------------
1 第一行数据
3 第三行数据
接下来对刚删除的数据执行恢复操作:
1、开启表的移动功能
SQL> alter table tb_flash1 enable row movement
2 /
表已更改。
2、将表恢复到删除数据的时间之前(注意这个时间尽量与您删除数据的时间相同或稍微靠前)
SQL> flashback table tb_flash1 to timestamp
2 to_timestamp('2013-01-26 15:58:30','yyyy-mm-dd hh24:mi:ss')
3 /
闪回完成。
SQL> select * from tb_flash1;
ID CONTENT
---------- ----------------------------------------
1 第一行数据
2 第二行数据
3 第三行数据
至此数据已恢复。
下面介绍恢复到scn
将时间戳转换到scn
SQL> select timestamp_to_scn(to_timestamp('2013-01-26 15:58:30','yyyy-mm-dd hh24
:mi:ss')) from dual;
TIMESTAMP_TO_SCN(TO_TIMESTAMP('2013-01-2615:58:30','YYYY-MM-DDHH24:MI:SS'))
---------------------------------------------------------------------------
1263136
SQL> flashback table tb_flash1 to 1263136;
闪回完成。闪回完成。闪回完成。
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- oracle利用flashback 闪回功能恢复delete数据
- 利用Oracle闪回技术恢复误操作数据
- [Oracle]用BEBD恢复delete的数据
- oracle恢复delete的数据
- Oracle表数据delete后恢复(救命用的)
- oracle delete数据恢复
- oracle 恢复delete数据
- Oracle 10g 闪回恢复数据
- 恢复oracle数据delete的数据
- ORACLE 利用SCN恢复误delete的表
- 【Oracle】使用bbed恢复delete的数据
- oracle总delete删除数据的恢复
- oracle delete部分数据的恢复方法
- oracle 利用闪回功能恢复数据
- 小谈安卓的程序入口
- Eclipse for Python
- 事务控制
- codeblocks窗口还原
- visual studio 2010远程调试.NET代码实践
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- Sublime Text 2 VIM模式:Vintage插件的官方说明
- PyQT tutorial
- C++解析IEEE754中float格式的数据
- 2013华为工作之电信客服行
- 网站应用程式架构
- 三角形面积,三点顺序
- 为什么可穿戴设备会在此时兴起?- 物联其实可以从手机开始
- Windows下NTP时间服务器配置