Oracle Study之案例--数据恢复神器Flashback(3)

简介:

Flashback Database:

wKioL1S2K8jiKqpfAAQIa7fTYOc265.jpg


案例分析:

      flashback database:利用flashback log 对整个database 做回退到过去的某个时间点(用于DDL 的误操作如drop 和 truncate),类似于RMAN的不完全恢复(media recovery incompelete)

1
因为flashback database是不完全恢复,在恢复到过去的时间点前应该对数据库备份!
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
1 、查看flashback database是否开启
07 : 21 : 27  SQL> select flashback_on  from  v$database;                                                                                       
FLASHBACK_ON
------------------
NO
 
2 、创建recovery area
07 : 21 : 33  SQL> show parameter recover                                                                                                     
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /u01/app/oracle/flash_recovery
                                                  _area
db_recovery_file_dest_size           big integer 2G
recovery_parallelism                 integer      2                                                                                                   ---recovery area可以存储flashback log、archive log、rman backup等                      
[oracle@work ~]$ mkdir -p /disk1/recovery/prod
 
配置recovery area:
07 : 22 : 49  SQL> alter system set db_recovery_file_dest= '/disk1/recovery/prod'  scope=spfile;                                                
System altered.
 
在归档模式下启用flashback database:
 
07 : 25 : 06  SQL> alter database flashback  on ;                                                                                               
Database altered.
 
07 : 25 : 29  SQL> select flashback_on  from  v$database;                                                                                       
FLASHBACK_ON
------------------
YES
 
07 : 25 : 38  SQL> alter database open;                                                                                                       
Database altered.
 
案例 1 :flashback database恢复DDL误操作(基于SCN)
 
flashback database可以用于基于时间点或SCN的数据恢复(可以通过logminer来查看DDL操作的时间点)
 
1 )模拟环境
15 : 18 : 17  SYS@ test1 >select current_scn  from  v$database;
 
CURRENT_SCN
-----------
    1264788
    
07 : 26 : 30  SQL> select *  from  test;                                                                                                        
      EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
       7369  SMITH      CLERK            7902  17 -DEC -80         800                     20
       7499  ALLEN      SALESMAN         7698  20 -FEB -81        1600         300          30
       7369  SMITH      CLERK            7902  17 -DEC -80         800                     20
       7499  ALLEN      SALESMAN         7698  20 -FEB -81        1600         300          30
       7521  WARD       SALESMAN         7698  22 -FEB -81        1250         500          30
       7566  JONES      MANAGER          7839  02 -APR -81        2975                     20
       7654  MARTIN     SALESMAN         7698  28 -SEP -81        1250        1400          30
       7698  BLAKE      MANAGER          7839  01 -MAY -81        2850                     30
       7782  CLARK      MANAGER          7839  09 -JUN -81        2450                     10
       7788  SCOTT      ANALYST          7566  19 -APR -87        3000                     20
       7839  KING       PRESIDENT             17 -NOV -81        5000                     10
       7844  TURNER     SALESMAN         7698  08 -SEP -81        1500           0          30
       7876  ADAMS      CLERK            7788  23 -MAY -87        1100                     20
       7900  JAMES      CLERK            7698  03 -DEC -81         950                     30
       7902  FORD       ANALYST          7566  03 -DEC -81        3000                     20
       7934  MILLER     CLERK            7782  23 -JAN -82        1300                     10
16  rows selected.
07 : 26 : 36  SQL> drop table test purge;                                                                                                     
Table dropped.
 
07 : 27 : 20  SQL> create table test  as  select *  from  emp  where  rownum= 1 ;                                                                     
Table created.
07 : 27 : 25  SQL> select *  from  test;                                                                                                        
      EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
       7369  SMITH      CLERK            7902  17 -DEC -80         800                     20
       
查看flashback 日志:
[oracle@work ~]$ ls /disk1/recovery/prod/PROD/flashback/
o1_mf_74q999lb_.flb
 
关闭数据库后,在mount状态下恢复:
07 : 29 : 22  SQL> shutdown immediate                                                                                                      
Database closed.
Database dismounted.
ORACLE instance shut down.
 
07 : 29 : 53  SQL> startup mount                                                                                                              
ORACLE instance started.
Total System Global Area   314572800  bytes
Fixed Size                   1219184  bytes
Variable Size               71304592  bytes
Database Buffers           239075328  bytes
Redo Buffers                 2973696  bytes
Database mounted.
 
通过flashback database将库恢复到过去的scn:
07 : 30 : 02  SQL> flashback database to scn  1264788 ;                                                                                         
Flashback complete.
 
将database以read only方式打开,先验证下恢复是否成功,如果不成功,再从新进入mount下恢复
07 : 31 : 29  SQL> alter database open read only;                                                                                             
Database altered.
 
07 : 31 : 34  SQL> select *  from  scott.test;                                                                                                  
      EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
       7369  SMITH      CLERK            7902  17 -DEC -80         800                     20
       7499  ALLEN      SALESMAN         7698  20 -FEB -81        1600         300          30
       7369  SMITH      CLERK            7902  17 -DEC -80         800                     20
       7499  ALLEN      SALESMAN         7698  20 -FEB -81        1600         300          30
       7521  WARD       SALESMAN         7698  22 -FEB -81        1250         500          30
       7566  JONES      MANAGER          7839  02 -APR -81        2975                     20
       7654  MARTIN     SALESMAN         7698  28 -SEP -81        1250        1400          30
       7698  BLAKE      MANAGER          7839  01 -MAY -81        2850                     30
       7782  CLARK      MANAGER          7839  09 -JUN -81        2450                     10
       7788  SCOTT      ANALYST          7566  19 -APR -87        3000                     20
       7839  KING       PRESIDENT             17 -NOV -81        5000                     10
       7844  TURNER     SALESMAN         7698  08 -SEP -81        1500           0          30
       7876  ADAMS      CLERK            7788  23 -MAY -87        1100                     20
       7900  JAMES      CLERK            7698  03 -DEC -81         950                     30
       7902  FORD       ANALYST          7566  03 -DEC -81        3000                     20
       7934  MILLER     CLERK            7782  23 -JAN -82        1300                     10
16  rows selected.
 
--恢复成功,重新以resetlogs的方式open database
07 : 31 : 40  SQL> shutdown immedaite                                                                                                         
SP2 -0717 : illegal SHUTDOWN option
07 : 31 : 45  SQL> shutdown immediate                                                                                                         
Database closed.
Database dismounted.
ORACLE instance shut down.
07 : 32 : 02  SQL> startup mount                                                                                                              
ORACLE instance started.
Total System Global Area   314572800  bytes
Fixed Size                   1219184  bytes
Variable Size               71304592  bytes
Database Buffers           239075328  bytes
Redo Buffers                 2973696  bytes
Database mounted.
07 : 32 : 10  SQL> alter database open resetlogs;                                                                                             
Database altered.
 
验证:
07 : 32 : 25  SQL> select *  from  scott.test;                                                                                                  
      EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
       7369  SMITH      CLERK            7902  17 -DEC -80         800                     20
       7499  ALLEN      SALESMAN         7698  20 -FEB -81        1600         300          30
       7369  SMITH      CLERK            7902  17 -DEC -80         800                     20
       7499  ALLEN      SALESMAN         7698  20 -FEB -81        1600         300          30
       7521  WARD       SALESMAN         7698  22 -FEB -81        1250         500          30
       7566  JONES      MANAGER          7839  02 -APR -81        2975                     20
       7654  MARTIN     SALESMAN         7698  28 -SEP -81        1250        1400          30
       7698  BLAKE      MANAGER          7839  01 -MAY -81        2850                     30
       7782  CLARK      MANAGER          7839  09 -JUN -81        2450                     10
       7788  SCOTT      ANALYST          7566  19 -APR -87        3000                     20
       7839  KING       PRESIDENT             17 -NOV -81        5000                     10
       7844  TURNER     SALESMAN         7698  08 -SEP -81        1500           0          30
       7876  ADAMS      CLERK            7788  23 -MAY -87        1100                     20
       7900  JAMES      CLERK            7698  03 -DEC -81         950                     30
       7902  FORD       ANALYST          7566  03 -DEC -81        3000                     20
       7934  MILLER     CLERK            7782  23 -JAN -82        1300                     10
16  rows selected.
 
因为flashback database是不完全恢复,在恢复到过去的时间点前应该对数据库备份!
 
案例 2 :基于timestamp的flashback database
 
04 : 04 : 28  SQL> show user;
USER is  "SYS"
04 : 08 : 04  SQL> conn scott/tiger
Connected.
04 : 08 : 13  SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss' from  dual;
TO_CHAR(SYSDATE,'YY
-------------------
2011 -03 -18  04 : 08 : 42
 
04 : 09 : 02  SQL> conn / as  sysdba
Connected.
04 : 09 : 07  SQL> select current_scn  from  v$database;
CURRENT_SCN
-----------
     1437597
04 : 09 : 10  SQL> conn scott/tiger
Connected.
04 : 09 : 29  SQL> select *  from  tab;
TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
EMP                            TABLE
DEPT                           TABLE
BONUS                          TABLE
SALGRADE                       TABLE
QUEST_SL_TEMP_EXPLAIN1         TABLE
EMP1                           TABLE
ERRLOG                         TABLE
PART_SALES                     TABLE
T01                            TABLE
DEPT1                          TABLE
10  rows selected.
select *  from  t01;
         ID NA
---------- --
          1  TM
04 : 10 : 07  SQL>  insert  into  t01 values( 2 , 'aa' );
1  row created.
04 : 10 : 17  SQL>  insert  into  t01 values( 3 , 'bb' );
1  row created.
04 : 10 : 26  SQL> commit;
Commit complete.
04 : 10 : 30  SQL> drop table t01;
Table dropped.
 
04 : 10 : 59  SQL> conn / as  sysdba
Connected.
04 : 11 : 03  SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
04 : 11 : 28  SQL> startup mount
ORACLE instance started.
Total System Global Area   314572800  bytes
Fixed Size                   1219184  bytes
Variable Size              184550800  bytes
Database Buffers           125829120  bytes
Redo Buffers                 2973696  bytes
Database mounted.
 
将database恢复到过去的时间点:
04 : 12 : 07  SQL> flashback database to timestamp to_timestamp( '2011-03-18 04:10:26' , 'yyyy-mm-dd hh24:mi:ss' );
Flashback complete.
04 : 13 : 34  SQL> alter database open;
alter database open
*
ERROR  at  line  1 :
ORA -01589 : must use RESETLOGS  or  NORESETLOGS option  for  database open
04 : 14 : 10  SQL> alter database open noresetlogs;
alter database open noresetlogs
*
ERROR  at  line  1 :
ORA -01610 : recovery using the BACKUP CONTROLFILE option must be done
 
04 : 14 : 18  SQL> alter database open resetlogs;
Database altered.
 
04 : 15 : 35  SQL> select *  from  v$log;
     GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
          1           1           0    52428800           2  YES UNUSED                        0
          2           1           0    52428800           2  YES UNUSED                        0
          3           1           0    52428800           2  YES UNUSED                        0
          4           1           0    52428800           2  YES UNUSED                        0
          5           1           0    52428800           2  YES UNUSED                        0
          6           1           1    52428800           2  NO  CURRENT                 1437637  2011 -03 -18  04 : 14 : 27
6  rows selected.
04 : 15 : 59  SQL> conn scott/tiger
Connected.
04 : 16 : 18  SQL> select *  from  t01;
         ID NA
---------- --
          1  TM
04 : 34 : 35  SQL> desc v$flashback_database_log;
  Name                                                                                Null?    Type
  ----------------------------------------------------------------------------------- -------- -   OLDEST_FLASHBACK_SCN                                                               NUMBER
  OLDEST_FLASHBACK_TIME                                                             DATE
  RETENTION_TARGET                                                                  NUMBER
  FLASHBACK_SIZE                                                                    NUMBER
  ESTIMATED_FLASHBACK_SIZE                                                          NUMBER
04 : 34 : 37  SQL> select *  from  v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE TIMATED_FLASHBACK_SIZE
-------------------- ------------------- ---------------- -------------- ----------------------             
1436931  2011 -03 -18  03 : 51 : 43              1440         8192000            115703808


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
[oracle@rh6 ~]$ sqlplus  '/as sysdba'
SQL*Plus: Release  11.2. 0.1. 0  Production  on  Thu Jan  15  11 : 38 : 34  2015
Copyright (c)  1982 2009 , Oracle.  All rights reserved.
Connected to an idle instance.
11 : 41 : 52  SYS@ test1 >select name,FLASHBACK_ON  from  v$database;
NAME      FLASHBACK_ON
--------- ------------------
TEST1     YES
Elapsed:  00 : 00 : 00.00
11 : 38 : 34  SYS@ test1 >startup
ORACLE instance started.
Total System Global Area   523108352  bytes
Fixed Size                   1337632  bytes
Variable Size              188745440  bytes
Database Buffers           327155712  bytes
Redo Buffers                 5869568  bytes
Database mounted.
Database opened.
 
--下面查看闪回区分配的大小为大约M,闪回分钟以内的数据则需要M左右的空间 
--注意列oldest_flashback_time说明了允许返回的最早的时间点
11 : 39 : 17  SYS@ test1 >select oldest_flashback_scn old_flhbck_scn,oldest_flashback_time old_flhbck_tim,
11 : 39 : 37    2   retention_target rete_trgt,flashback_size/ 1024 / 1024  flhbck_siz,
11 : 39 : 47    3   estimated_flashback_size/ 1024 / 1024  est_flhbck_size
11 : 40 : 01    4    from  v$flashback_database_log;
 
OLD_FLHBCK_SCN OLD_FLHBCK_T  RETE_TRGT FLHBCK_SIZ EST_FLHBCK_SIZE
-------------- ------------ ---------- ---------- ---------------
       11898580  10 -JAN -15           1440  305.429688       266.601563
       
--查看闪回
11 : 40 : 15  SYS@ test1 >select *  from  v$flashback_database_stat;
BEGIN_TIME   END_TIME     FLASHBACK_DATA    DB_DATA  REDO_DATA ESTIMATED_FLASHBACK_SIZE
------------ ------------ -------------- ---------- ---------- ------------------------
15 -JAN -15     15 -JAN -15             573440       24576      109056                         0
--查看sga中分配的闪回空间大小
11 : 40 : 45  SYS@ test1 >select *  from  v$sgastat  where  name like  'flashback%' ;
POOL         NAME                            BYTES
------------ -------------------------- ----------
shared pool  flashback generation buff      4149140
shared pool  flashback_marker_cache_si         9196









本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1604018,如需转载请自行联系原作者
目录
相关文章
|
18天前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
6天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—异常断电导致Oracle数据库数据丢失的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并修复数据库;解析数据文件。
|
25天前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
3月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法
相信有很多oracle数据库用户都遇到过在操作Oracle数据库时误删除某些重要数据的情况,这个时候如果数据库没有备份且数据十分重要的,怎么才能恢复误删除的数据呢?北亚企安数据恢复工程师下面简单介绍几个误删除Oracle数据库数据的恢复方法。
|
5月前
|
存储 Oracle 关系型数据库
服务器数据恢复—RAID5上层SAP+oracle数据恢复案例
**服务器存储数据恢复环境:** 某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。 **服务器存储故障&分析:** 该RAID5阵列中一块硬盘出现故障离线,热备盘自动激活替换故障硬盘,热备盘同步数据的过程中该raid5阵列中又有一块硬盘出现故障,RAID5阵列瘫痪,上层LUN无法正常访问。 因为本案例中存储控制器的磁盘检查策略严格,一旦某些磁盘性能不稳定,该型号存储控制器就将该块磁盘识别为坏盘,并将该块磁盘踢出RAID。一旦RAID中掉线的盘数到超过RAID级别允许掉盘的最大数量,该RAID将不可用,
服务器数据恢复—RAID5上层SAP+oracle数据恢复案例
|
5月前
|
Oracle 关系型数据库
oracle基本笔记整理及案例分析2
oracle基本笔记整理及案例分析2
|
SQL Oracle 关系型数据库
Oracle Data Recovery Advisor(DRA) 数据恢复顾问
Oracle Data Recovery Advisor(DRA) 数据恢复顾问 对DBA而言,数据备份、还原是日常工作的基本功。
2564 0
|
SQL Oracle 关系型数据库
Oracle数据恢复顾问(Data Recovery Advisor)
Oracle数据恢复顾问用于当数据发生错误或故障时,进行自动收集数据故障信息,并生成恢复脚本,用于完成数据恢复。
1118 0
|
2月前
|
存储 自然语言处理 Oracle
Oracle数据库字符集概述及修改方式
【8月更文挑战第15天】Oracle 数据库字符集定义了数据的编码方案,决定可存储的字符类型及其表示方式。主要作用包括数据存储、检索及跨系统传输时的正确表示。常见字符集如 AL32UTF8 支持多语言,而 WE8MSWIN1252 主用于西欧语言。修改字符集风险高,可能导致数据问题,需事先备份并评估兼容性。可通过 ALTER DATABASE 语句直接修改或采用导出-导入数据的方式进行。完成后应验证数据完整性。此操作复杂,须谨慎处理。
|
2月前
|
数据采集 Oracle 关系型数据库
实时计算 Flink版产品使用问题之怎么实现从Oracle数据库读取多个表并将数据写入到Iceberg表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

推荐镜像

更多
下一篇
无影云桌面