本帖最后由 jiawang 于 2019-4-8 16:23 编辑
1.查看数据库的归档模式及闪回是否启用SQL> select log_mode,flashback_onfrom v$database; LOG_MODE FLASHBACK_ON ------------ ------------------ NOARCHIVELOG NO *FLASHBACK_ON为NO,表示闪回模式未打开* SQL> select flashback_on,log_modefrom v$database; FLASHBACK_ON LOG_MODE ------------------ ------------ NO NOARCHIVELOG SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 609624064 bytes Fixed Size 2283664 bytes Variable Size 230688624 bytes Database Buffers 369098752 bytes Redo Buffers 7553024 bytes 数据库装载完毕。 SQL> alter database archivelog; 数据库已更改。 SQL> alter database flashback on; 数据库已更改。 SQL> alter database open; 数据库已更改。 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 131 下一个存档日志序列 133 当前日志序列 133 SQL>
2.查看及设置闪回目录、闪回目录空间大小SQL> showparameter db_recovery NAME TYPE VALUE ----------------------------------------------- ------------------------------ db_recovery_file_dest string D:\oracle\product\10.2.0\flash _recovery_area db_recovery_file_dest_size big integer 2G SQL> show parameter db_flashback NAME TYPE VALUE ----------------------------------------------- ------------------------------ db_flashback_retention_target integer 1440
3.创建测试表SQL> createtable test1 as select * fromdba_objects; 表已创建。 SQL> createtable test2 as select * from test1; 表已创建。 验证:SQL> select count(*) from test1; COUNT(*) ---------- 84554 SQL> select count(*) from test2; COUNT(*) ---------- 84554
4.truncate表test2SQL> set time on 15:35:04 SQL>select sysdate from dual; SYSDATE ------------------- 2019-04-0815:35:17 15:35:17SQL> truncate table test2; 表被截断。 5.使用时间点恢复表test215:35:48 SQL>shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 15:38:30 SQL>startup mount exclusive; ORACLE 例程已经启动。 Total SystemGlobal Area 609624064 bytes Fixed Size 2283664 bytes VariableSize 230688624 bytes DatabaseBuffers 369098752 bytes RedoBuffers 7553024 bytes 数据库装载完毕。
15:41:45 SQL>flashback database to timestamp(to_date('2019-04-08 15:35:17','yyyy-mm-ddhh24:mi:ss')); 闪回完成。
6.闪回之后必须使用resetlogs打开数据库15:42:43 SQL> alter database open ; alter database open * 第 1 行出现错误: ORA-01589: 要打开数据库则必须使用 RESETLOGS或 NORESETLOGS 选项
15:44:05 SQL> alterdatabase open resetlogs; 数据库已更改。
验证表tests2数据15:45:06 SQL> select count(*)from test2; COUNT(*) ---------- 84554
|