闪回数据库(Flashback Database)

简介:

 Flashback Database闪回数据库
  使用闪回数据库可以将数据库快速的闪回到过去某个时间点。在启用闪回数据时,会将修改过的块的前映像作为闪回数据库日志保存在闪回恢复区中,如出现逻辑坏块或用户错误操作需要恢复到过去的时间点,闪回数据库将还原数据库的前映像,然后使用归档日志和redo前滚到期望恢复的时间点,因为无需还原数据库的数据文件,所有此过程速度比较传统的还原恢复通常快很多。
  启动闪回数据库时,会将前映像数据保存在“闪回缓冲区”中,然后由恢复写入器(Recovery Writer,RVWR)后台进程,将闪回缓冲区的前映像数据保存在闪回恢复区的闪回数据库日志中。
  配置闪回数据库相关参数:
  db_recovery_file_dest 决定闪回恢复区路径
  db_recovery_file_dest_size 决定闪回恢复区大小
  db_flashback_retention_target 保留恢复最近多长时间的数据,单位为分钟。
  闪回数据库必须在归档模式下
  开启归档
  1、SQL> alter system set log_archive_dest_1='location=+oradg/b1/recovery/' scope=both;
  2、SQL> shutdown immediate
  3、SQL> startup mount
  4、SQL> alter database archivelog;
  5、SQL> alter database open;
  6、SQL> archive log list
  设置闪回区大小,路径,闪回保留时间
SQL> alter system set db_recovery_file_dest_size=5G;
System altered.
SQL> alter system set db_recovery_file_dest='+ORADG';
System altered.
SQL> alter system set db_flashback_retention_target=2880;
System altered.
开启闪回功能
SQL> startup mount exclusive
SQL> alter database flashback on;
Database altered.
SQL> select flashback_on from v$database;

FLASHBACK_ON

YES
  关闭闪回功能
SQL> startup mount exclusive
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 557844472 bytes
Database Buffers 276824064 bytes
Redo Buffers 2396160 bytes
Database mounted.
SQL> ?alter database flashback off;
Database altered.
SQL> alter database open ;
Database altered.
SQL> alter system set db_recovery_file_dest='';
System altered.

闪回数据库的步骤
  1、关闭数据库
  2、启动数据库到mount状态[exclusive模式]
  3、闪回至某个时间点,SCN或还原点
  4、使用resetlogs打开数据库
  闪回数据库的方法
  1、sqlplus下基于SCN闪回
  FLASHBACK DATABASE [] TO SCN
  2、sqlplus下基于时间戳闪回
  FLASHBACK DATABASE [] TO TIMESTMP
  3、sqlplus下基于还原点闪回
  FLASHBACK DATABASE [] TO RESTORE POINT
  4、RMAN下基于时间戳闪回
  RMAN> FLASHBACK DATABASE TO TIME = "TO_DATE('2013-10-10 19:25:21','YYYY-MM-DD HH24:MI:SS')";
  5、RMAN下基于SCN闪回
  RMAN> FLASHBACK DATABASE TO SCN=1121679;
  6、RMAN下基于:归档序号
  RMAN> FLASHBACK DATABASE TO SEQUENCE=56 THREAD=1;
  运用闪回功能示例:
  示例1:删除表的部分数据后,使用闪回数据库的方法恢复
SQL> create table test_flashback as select * from emp; --创建表
Table created.
SQL> select dbms_flashback.get_system_change_number from dual; --记录删除数据前scn

GET_SYSTEM_CHANGE_NUMBER

1069396
SQL> delete from test_flashback where deptno=20; --删除数据
5 rows deleted.
SQL> commit;
Commit complete.
SQL> startup mount exclusive --启动到mount exclusive状态
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 557844472 bytes
Database Buffers 276824064 bytes
Redo Buffers 2396160 bytes
Database mounted.
SQL> flashback database to scn 1069396; --闪回到删除数据之前,还可以用时间戳闪回如:
Flashback complete. --flashback database to to_timestamp('2013-10-8 18:02:34','YYYY-MM-DD HH24:MI:SS')
SQL> alter database open read only; ?--以read only 方式打开检查数据库是否闪回成功,如不成功考虑其他形式的闪回
Database altered.
SQL> select * from scott.test_flashback where deptno=20;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7566 JONES MANAGER 7839 02-APR-81 2975 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
SQL> startup
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 557844472 bytes
Database Buffers 276824064 bytes
Redo Buffers 2396160 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
Database altered.
  --闪回数据库之后,最后做一次全备

最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
4月前
|
Oracle 关系型数据库 数据库
数据库闪回失败怎么办?ORA-38757 修复全攻略
本文详解Oracle数据库恢复过程中常见的ORA-38757错误,分析其产生原因,并提供六步解决方案,帮助用户正确执行FLASHBACK操作,顺利完成数据库闪回。内容涵盖状态检查、关闭与挂载、闪回日志配置及关键操作命令,适合DBA和开发人员参考学习。
105 0
|
7月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
222 9
|
9月前
|
数据管理 分布式数据库 数据库
循序渐进丨MogDB 数据库v5.0之闪回DROP/TRUNCATE
MogDB v5.0中的闪回DROP/TRUNCATE功能为数据库管理提供了强大的数据恢复能力。通过撤销日志和版本控制机制,能够高效地恢复误操作导致的数据丢失。这一功能不仅提高了数据管理的灵活性和安全性,还简化了日常维护工作。希望本文能帮助读者深入理解和应用MogDB的闪回功能,提高数据库管理效率。
114 15
|
8月前
|
Oracle 关系型数据库 数据管理
【赵渝强老师】Oracle数据库的闪回技术
在Oracle数据库操作中,难免会遇到误删表或提交错误事务等问题,可能导致数据丢失甚至数据库停止运行。传统解决方法依赖备份恢复,但需提前准备正确备份。为此,Oracle提供了闪回技术,无需备份即可快速恢复数据。它支持7种类型的操作,如闪回查询、版本查询、表恢复等,能有效应对逻辑损坏和用户错误。闪回技术基于还原(undo)数据管理,启用自动管理后可实现高效恢复。
236 0
|
8月前
|
数据库
|
8月前
|
数据库
【YashanDB数据库】YAS-02079 archive log mode must be enabled when database is in replication mode
YAS-02079 archive log mode must be enabled when database is in replication mode
|
NoSQL 关系型数据库 MySQL
AWS Database Migration Service 助力数据库搬迁
AWS Database Migration Service 助力数据库搬迁
|
SQL 关系型数据库 MySQL
云服务器 ECS产品使用问题之出现“1044 - Access denied for user ‘root‘@‘%‘ to database ‘数据库名称‘”这样的错误,该怎么办
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
数据库bug-[08001] Could not create connection to database server. Attempted reconnect 3,主机名ip必须写对
数据库bug-[08001] Could not create connection to database server. Attempted reconnect 3,主机名ip必须写对
|
SQL 调度 数据库
【Database】Sqlserver如何定时备份数据库和定时清除
【Database】Sqlserver如何定时备份数据库和定时清除
950 2

热门文章

最新文章