因为truncate不是DML语句,是DDL语句,不能使用闪回查询的方式恢复表数据,这里介绍一种通过flashback database的方式恢复数据的方法。
1. 创建测试表
SQL> create table t as select * from all_objects where rownum<11;
Table created.
SQL> select object_id from t where rownum<11;
OBJECT_ID
----------
100
116
117
280
365
367
368
370
371
373
10 rows selected.
2. 开始数据库闪回
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 776646656 bytes
Fixed Size 2257272 bytes
Variable Size 486542984 bytes
Database Buffers 285212672 bytes
Redo Buffers 2633728 bytes
Database mounted.
SQL> archive log list
Database log mode