本文主要是介绍【云原生进阶之数据库技术】第二章-Oracle-原理-4.6.3.3-闪回数据库技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 闪回数据库
1.1 使用场景和限制
(1)一种快速的数据库恢复方案,这种恢复是基于用户的逻辑错误
比如:
- 对表中的数据做了错误的操作
- 插入了大量错误的数据
- 删除了一个用户等
此时通常是将数据库恢复到之前的某一个时间点。
相比于原始的恢复方式需要先备份数据文件,再使用归档日志恢复到以前的时间点。
(2)闪回日志由oracle自动创建,并保存于闪回恢复区中,由闪回恢复区管理,因为是自动管理的,所以如果闪回恢复区空间不足,闪回日志也会自动删除。所以闪回恢复区应该适当的设置的大一点。
(3)使用闪回数据库的限制
在以下几种情况下不能使用闪回数据库的特性:
- 如果数据文件被删除或者缩短
- 如果在闪回时间范围之内复原或者重建了一个控制文件
- 在resetlogs操作之前
- 表空间被删除
1.2 使用闪回数据库技术之前的准备
打开闪回数据库功能
(1)确保数据库处于归档模式
archive log list# 配置归档模式:
startup mount
alter database archivelog;
(2)查看快闪恢复区的位置和设置的大小(闪回日志存储的位置和空间的大小)
show parameter db_recovery_file_dest;
(3)启用闪回数据库功能
alter database flashback on;
启动之后我们可以通过试图v$database查看启动的状态。
select dbid,name,flashback_on from v$database;
(4)通过试图查看最多能够闪回的时间以及修改能闪回的最大天数
设置参数DB_FLASHBACK_RETENTION_TARGET,该参数默认值为1440分钟,表示可以将数据库闪回到过去的时间,也就是默认可以闪回一天前的数据。
show parameter db_flashback_retention;
# 我们可以动态的修改这个参数的值,使的数据库可以闪回到更长的时间,比如1个月 24*60*30=43200
alter system set db_flashback_retention_target=43200 scope=both;
(5)查看系统时间
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
(6)查看我们能够闪回到的最早的scn号 和最早的时间,并且评估闪回恢复区的大小
select * from v$flashback_database_log;# 查看能闪回到的最早时间
select to_char(oldest_flashback_time,'yyyy-mm-dd hh24:mi:ss') from v$flashback_database_log;
1.3 闪回数据库的方法
1.3.1 在RMAN下(3种方法)
(1)使用to_date将数据库闪回到指定的时间点
RMAN>flashback database to time=to_date('2017-06-29 12:30:00','yyyy-mm-dd hh24:mi:ss');
(2)将数据库闪回到指定的SCN,该方法一般不使用,因为SCN号一般不会去查询
这篇关于【云原生进阶之数据库技术】第二章-Oracle-原理-4.6.3.3-闪回数据库技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!