闪回数据库(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/

目录
相关文章
|
7月前
|
SQL NoSQL 关系型数据库
二、什么是数据库(DataBase)
二、什么是数据库(DataBase)
142 0
|
2月前
|
NoSQL 关系型数据库 MySQL
AWS Database Migration Service 助力数据库搬迁
AWS Database Migration Service 助力数据库搬迁
|
5月前
|
SQL 关系型数据库 MySQL
云服务器 ECS产品使用问题之出现“1044 - Access denied for user ‘root‘@‘%‘ to database ‘数据库名称‘”这样的错误,该怎么办
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
5月前
|
数据库
数据库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必须写对
|
7月前
|
SQL 调度 数据库
【Database】Sqlserver如何定时备份数据库和定时清除
【Database】Sqlserver如何定时备份数据库和定时清除
254 2
|
7月前
|
存储 关系型数据库 数据库
在进行RDS(Amazon Relational Database Service,亚马逊关系数据库服务)迁移时,兼容性审查
在进行RDS(Amazon Relational Database Service,亚马逊关系数据库服务)迁移时,兼容性审查
84 1
|
7月前
|
数据可视化 关系型数据库 Java
数据库导出神器:Database-Export
Database-Export是一款开源的数据库导出工具
632 0
数据库导出神器:Database-Export
|
7月前
|
SQL 存储 关系型数据库
MySQL技能完整学习列表——1、数据库基础概念——1、关系型数据库(Relational Database)
MySQL技能完整学习列表——1、数据库基础概念——1、关系型数据库(Relational Database)
241 0
|
7月前
|
XML Java 数据库
SpringBoot【问题 03】BindingException\MalformedInputException\Error querying database(sqlite数据库)
SpringBoot【问题 03】BindingException\MalformedInputException\Error querying database(sqlite数据库)
155 0
|
19天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1