Oracle10g 闪回数据库 (Flashback Database)

简介:

生产上要做灾备系统的应急切换演练,灾备端是由OGG搭建的。由于生产库都比较大10多T,不想演练后重新初始化灾备库,生产库版本为10.2.0.4,于是想到10g的新特性flashback database。演练开始前记录一个还原点,演练结束后闪回到这个还原点,重新同步ogg即可。

测试闪加数据库。

一、开启FLASHBACK DATABASE

数据库版本:10.2.0.4

启用FLASHBACK DATABASE数据库必须为ARCHIVELOG模式,还需要有一个闪回恢复区用于存储闪回日志,RAC中闪回恢复区必须在集群文件系统或ASM中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
--数据库已开启归档,但还未启用FLASHBACK
SQL>  select  flashback_on,log_mode  from  v$ database ;
 
FLASHBACK_ON                           LOG_MODE
------------------------------------------------------ ------------------------------------
NO                              ARCHIVELOG
--调整参数
SQL>  alter  system  set  db_recovery_file_dest_size=3G scope=spfile;
 
System altered.
 
SQL>  alter  system  set  db_recovery_file_dest= '/u01/app/oracle/flashback_area/'  scope=spfile;
 
System altered.
 
SQL>  alter  system  set  db_flashback_retention_target=2880 scope=spfile; 
 
System altered.
--关闭数据库
SQL> shutdown immediate;
Database  closed.
Database  dismounted.
ORACLE instance shut down.
--启动到mount状态,开启FLASHBACK
SQL> startup mount;
ORACLE instance started.
 
Total System  Global  Area  599785472 bytes
Fixed  Size          2085776 bytes
Variable  Size         192941168 bytes
Database  Buffers     398458880 bytes
Redo Buffers           6299648 bytes
Database  mounted.
SQL>  alter  database  flashback  on ;
 
Database  altered.
--启动数据库
SQL>  alter  database  open ;
 
Database  altered.
--查看新状态
SQL>  select  flashback_on,log_mode  from  v$ database ;
 
FLASHBACK_ON                           LOG_MODE
------------------------------------------------------ ------------------------------------
YES                            ARCHIVELOG

官方文档:http://docs.oracle.com/cd/B19306_01/backup.102/b14192/rpfbdb003.htm#sthref509

db_recovery_file_dest_size参数表示闪回恢复区的大小

db_recovery_file_dest参数表示闪回恢复区目录

db_flashback_retention_target表是闪回日志保留的时间,单位为分,默认1440(1天)

查看闪回恢复区里已生成闪回日志

1
2
3
4
[oracle@rhel5 flashback_area]$ cd /u01/app/oracle/flashback_area/MYDB/flashback/
[oracle@rhel5 flashback]$ ls -l
total 8020
-rw-r ----- 1 oracle oinstall 8200192 Jan  9 14:48 o1_mf_d76cxc1r_.flb

二、创建测试表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SQL> conn zx/zx
Connected.
SQL>  create  table  flash_t  as  select  from  all_tables;
 
Table  created.
 
SQL>  insert  into  flash_t  select  from  flash_t;
 
1559  rows  created.
 
SQL> /
 
3118  rows  created.
 
SQL>  commit
 
Commit  complete.
 
SQL>  select  count (*)  from  flash_t;
 
   COUNT (*)
----------
       6236

三、查看数据库可以闪回的时间点

1
2
3
4
5
SQL>  select  from  V$FLASHBACK_DATABASE_LOG;
 
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_ RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
-------------------- ----------------- ---------------- -------------- ------------------------
          7762668 20170109 14:37:32          2880       14467072              590954496

四、测试闪回数据库到一个时间点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
--记录当前SCN用于闪回数据库
SQL>  SELECT  CURRENT_SCN  FROM  V$ DATABASE ;
 
CURRENT_SCN
-----------
     7765990
--删除测试表
SQL> conn /  as  sysdba
Connected.
SQL>  select  count (*)  from  zx.flash_t;
 
   COUNT (*)
----------
       6236
 
SQL>  drop  table  zx.flash_t;
 
Table  dropped.
 
SQL>  select  count (*)  from  zx.flash_t;
select  count (*)  from  zx.flash_t
                         *
ERROR  at  line 1:
ORA-00942:  table  or  view  does  not  exist
--闪回数据库
SQL> shutdown immediate;
Database  closed.
Database  dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
 
Total System  Global  Area  599785472 bytes
Fixed  Size          2085776 bytes
Variable  Size         192941168 bytes
Database  Buffers     398458880 bytes
Redo Buffers           6299648 bytes
Database  mounted.
--执行闪回
SQL> flashback  database  to  scn 7765990;
 
Flashback complete.
--以resetlogs方式打开数据库
SQL>  alter  database  open  resetlogs;
--可以使用alter database open read only打开数据库查看闪回后数据库的状态,如果闪回的不理想,重启到mount模式重新做flashback database
Database  altered.
--验证测试表得到恢复
SQL>  select  count (*)  from  zx.flash_t;
 
   COUNT (*)
----------
       6236

闪回还可以指定时间或还原点

FLASHBACK DATABASE TO RESTORE POINT BEFORE_CHANGES;

FLASHBACK DATABASE TO TIME "TO_DATE('09/20/00','MM/DD/YY')";

官方文档:http://docs.oracle.com/cd/B19306_01/backup.102/b14192/flashptr005.htm#BGBDCAFA


     本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1890433,如需转载请自行联系原作者







相关文章
|
19天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
133 64
|
9天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
20 7
|
9天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
13 6
|
9天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
13 5
|
15天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
18天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
15 1
|
30天前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
44 3
|
2月前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
275 2
|
21天前
|
NoSQL 关系型数据库 MySQL
AWS Database Migration Service 助力数据库搬迁
AWS Database Migration Service 助力数据库搬迁
|
24天前
|
存储 Oracle 关系型数据库
【数据库-Oracle】《Oracle 数据库探秘:基础知识点全攻略》
《Oracle 数据库探秘:基础知识点全攻略》深入介绍 Oracle 数据库的基础知识点,包括数据类型、表结构、查询语句等。通过详细讲解、代码示例和流程图,帮助读者快速掌握 Oracle 数据库的基本操作,为数据库开发和管理打下坚实基础。
27 0

推荐镜像

更多