oracle的闪回查询,闪回删除:
2015-09-20 15:50
501 查看
create table t1 as select * from dba_objects;
SCOTT@ORA12C> select sysdate from dual;
SYSDATE
-------------------
2015-09-20 14:54:10
1 row selected.
SCOTT@ORA12C> delete from t1;
0 rows deleted.
SCOTT@ORA12C> commit;
Commit complete.
SCOTT@ORA12C> select count(*) from t1;
COUNT(*)
-----------------
0
1 row selected.
SCOTT@ORA12C> select count(*) from t1 as of timestamp to_timestamp('2015-09-20 14:54:00','yyyy-mm-dd hh24:mi:ss');
COUNT(*)
-----------------
91692
1 row selected.
SCOTT@ORA12C> flashback table t1 to timestamp to_timestamp('2015-09-20 14:54:00','yyyy-mm-dd hh24:mi:ss');
flashback table t1 to timestamp to_timestamp('2015-09-20 14:54:00','yyyy-mm-dd hh24:mi:ss') *
ERROR at line 1:
ORA-08189: cannot flashback the table because row movement is not enabled
SCOTT@ORA12C> alter table t1 enable row movement;
Table altered.
SCOTT@ORA12C> flashback table t1 to timestamp to_timestamp('2015-09-20 14:54:00','yyyy-mm-dd hh24:mi:ss');
Flashback complete.
SCOTT@ORA12C> select count(*) from t1;
COUNT(*)
-----------------
91692
1 row selected.
注意system表空间下面的表不能闪回,不能跨越DDL语句,
SYS@ORA12C> flashback table t2 to timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss');
flashback table t2 to timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss') *
ERROR at line 1:
ORA-08185: Flashback not supported for user SYS
但是可以查询:
SYS@ORA12C> select count(*) from t2 as of timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss');
COUNT(*)
-----------------
91694
1 row selected.
可以重新建一张表或者直接insert:
SYS@ORA12C> create table t3 as select * from t2 as of timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss');
Table created.
SYS@ORA12C> insert into t2 select * from t2 as of timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss');
91694 rows created.
@ORA12C> commit;
Commit complete.
SCOTT@ORA12C> select sysdate from dual;
SYSDATE
-------------------
2015-09-20 14:54:10
1 row selected.
SCOTT@ORA12C> delete from t1;
0 rows deleted.
SCOTT@ORA12C> commit;
Commit complete.
SCOTT@ORA12C> select count(*) from t1;
COUNT(*)
-----------------
0
1 row selected.
SCOTT@ORA12C> select count(*) from t1 as of timestamp to_timestamp('2015-09-20 14:54:00','yyyy-mm-dd hh24:mi:ss');
COUNT(*)
-----------------
91692
1 row selected.
SCOTT@ORA12C> flashback table t1 to timestamp to_timestamp('2015-09-20 14:54:00','yyyy-mm-dd hh24:mi:ss');
flashback table t1 to timestamp to_timestamp('2015-09-20 14:54:00','yyyy-mm-dd hh24:mi:ss') *
ERROR at line 1:
ORA-08189: cannot flashback the table because row movement is not enabled
SCOTT@ORA12C> alter table t1 enable row movement;
Table altered.
SCOTT@ORA12C> flashback table t1 to timestamp to_timestamp('2015-09-20 14:54:00','yyyy-mm-dd hh24:mi:ss');
Flashback complete.
SCOTT@ORA12C> select count(*) from t1;
COUNT(*)
-----------------
91692
1 row selected.
注意system表空间下面的表不能闪回,不能跨越DDL语句,
SYS@ORA12C> flashback table t2 to timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss');
flashback table t2 to timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss') *
ERROR at line 1:
ORA-08185: Flashback not supported for user SYS
但是可以查询:
SYS@ORA12C> select count(*) from t2 as of timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss');
COUNT(*)
-----------------
91694
1 row selected.
可以重新建一张表或者直接insert:
SYS@ORA12C> create table t3 as select * from t2 as of timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss');
Table created.
SYS@ORA12C> insert into t2 select * from t2 as of timestamp to_timestamp('2015-09-20 15:07:25','yyyy-mm-dd hh24:mi:ss');
91694 rows created.
@ORA12C> commit;
Commit complete.
相关文章推荐
- oracle教程之Oracle闪回恢复区(二)
- oracle教程之Oracle闪回恢复区(一)
- oracle 闪回
- Oracle学习笔记1: 表与约束
- oracle_单向函数_数字化功能
- Oracle总结
- Navicat for Oracle 表名不存在 ORA00903
- oracle体系结构(2)
- 【JDBC】day01_Java连接Oracle数据库过程及常用方法
- 查看及修改Oracle编码格式方法
- 【Oracle】day05_视图_序列_索引_约束
- Access, SQL Server, Oracle, MySQL的区别与相似
- 使用java语言向oracle数据库中存入、取出图片及文件
- Oracle客户端PL_SQL的安装
- Oracle的登录操作
- Oracle数据库安装完成之后的启动操作
- Oracle数据库的下载和安装
- oracle常用函数及示例
- 使用xshell进行导出oracle的dmp文件,加查询条件
- oracle数据库导入导出09192255