Oracle笔记 之 使用flashback恢复误删数据

Oracle闪回分类

Oracle数据库11g版本以后的flashbackup 分以下几种:

flashback database 闪回数据库,简单理解就是把数据库闪回到之前的某个确定的时间点。
flashback drop 闪回数据库表,用于表误drop后恢复。
flashback query 闪回表记录,用于数据表记录的恢复。
falshabck Table 闪回数据库表。

flashback database 闪回数据库

前提

需要确保数据库运行在归档模式下,这是使用闪回数据库的前提。
确认数据库是否开启Flashback Database功能:
–已开启

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

–已开启

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
NO
手动开启

1,查看recovery_file参数

SQL> show parameter recovery_file;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      +FRA
db_recovery_file_dest_size           big integer 4407M

可以按需求调整db_recovery_file_dest,db_recovery_file_dest_size参数。

2,修改参数

#关闭数据库
shutdown immediate;
#开启mount模式
startup mount;
#按需求调整db_recovery_file_dest,db_recovery_file_dest_size参数。
alter system set db_recovery_file_dest=/Data/RECOVERY’;
alter system set db_recovery_file_dest_size=10g;
#开启归档模式
alter database archivelog;
#开启flashback功能
alter database flashback on;
#打开数据库
alter database open;
#验证Flashback功能已经成功开启
SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

3,数据库闪回

flashback database to timestamp to_timestamp('2021-01-07 08:00:00,’yyyy-mm-dd hh24:mi:ss’);

flashback table 恢复误drop表

flashback table testtable to before drop;

flashback query 闪回表记录

select * from testtable
as of timestamp to_timestamp('2021-01-07 08:00:00,’yyyy-mm-dd hh24:mi:ss’)
where edittime >= sysdate-1;

flashback table 闪回数据库表

#激活行移动
ALTER TABLE testtableENABLE row movement ;
#闪回数据记录('2021-01-07 08:00:00'后的修改将丢失)
flashback table testtableto timestamp to_timestamp('2021-01-07 08:00:00','yyyy-mm-dd hh24:mi:ss');

你可能感兴趣的:(Oracle笔记,数据库,oracle)