我是靠谱客的博主 英勇钥匙,这篇文章主要介绍rman增量备份,现在分享给大家,希望可以做个参考。

把之前的备份都删除

复制代码
1
2
RMAN> delete noprompt backup;

增量备份的原理
热备份只有rman支持增量备份
增量备份分为差异增量备份(differential)和累积增量备份(cumulative)
差异增量备份就 是当前到上一次无论是0级增量备份还是差异增量备份还是累积增量备份之间变化的数据,累积增量备份是当前到上一次0级增量备份之间变化的数据
差异和累积的区别就是能不能覆盖同级的增量备份,差异就是不能覆盖,累积就是能够覆盖
做一个0级增量备份
RMAN> backup incremental level=0 database;(周天晚上),如果从来没有做过增量备份那么无论level写几做的还是0级增量备份
模拟一些业务,看一下还有没有t表了

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
SYS@orcl>select * from t; ID ---------- 1 2 3 4 5 6 7 8 9

当前日志是第2

复制代码
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
SYS@orcl>select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ ------------------- 1 1 7 52428800 512 1 YES INACTIVE 1027916 2020-01-07 17:03:07 1049967 2020-01-10 11:36:05 2 1 8 52428800 512 1 NO CURRENT 1049967 2020-01-10 11:36:05 2.8147E+14 (null) 3 1 6 52428800 512 1 YES INACTIVE 1027659 2020-01-07 16:58:45 1027916 2020-01-07 17:03:07 SYS@orcl>insert into t values(10); SYS@orcl>commit; SYS@orcl>alter system switch logfile;

上面做了一个0级增量备份,现在模拟有了业务,现在做一下1级增量备份
RMAN> backup incremental level=1 database;(周一晚上),默认是差异增量备份(Oracle要对所有的数据块进行检查看哪些块被修改了,检查的时间会有点长)
看备份文件的名字可以看出来是0级备份还是1级备份

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[oracle@oracle01 ~]$ ll /u01/app/fast_recovery_area/PROD/backupset/2020_01_10 total 296592 -rw-r----- 1 oracle oinstall 1130496 Jan 10 15:15 o1_mf_ncnn0_TAG20200110T151440_h1j943g5_.bkp -rw-r----- 1 oracle oinstall 1130496 Jan 10 15:39 o1_mf_ncnn1_TAG20200110T153915_h1jbk6k9_.bkp -rw-r----- 1 oracle oinstall 203325440 Jan 10 15:15 o1_mf_nnnd0_TAG20200110T151440_h1j9306r_.bkp -rw-r----- 1 oracle oinstall 97296384 Jan 10 15:15 o1_mf_nnnd0_TAG20200110T151440_h1j9306w_.bkp -rw-r----- 1 oracle oinstall 458752 Jan 10 15:39 o1_mf_nnnd1_TAG20200110T153915_h1jbk3cj_.bkp -rw-r----- 1 oracle oinstall 172032 Jan 10 15:39 o1_mf_nnnd1_TAG20200110T153915_h1jbk3cm_.bkp -rw-r----- 1 oracle oinstall 98304 Jan 10 15:15 o1_mf_nnsn0_TAG20200110T151440_h1j943fy_.bkp -rw-r----- 1 oracle oinstall 98304 Jan 10 15:39 o1_mf_nnsn1_TAG20200110T153915_h1jbk6k4_.bkp

再插入一条数据

复制代码
1
2
3
4
5
SYS@orcl>insert into t values(11); SYS@orcl>commit; SYS@orcl>alter system switch logfile; RMAN> backup incremental level=1 database;(周二晚上)

插入一条数据

复制代码
1
2
3
4
SYS@orcl>insert into t values(12); SYS@orcl>commit; SYS@orcl>alter system switch logfile;

现在要做一个累积增量备份

复制代码
1
2
RMAN> backup incremental level=1 cumulative database;(周三晚上)

插入一条数据

复制代码
1
2
3
4
SYS@orcl>insert into t values(13); SYS@orcl>commit; SYS@orcl>alter system switch logfile;

1级差异备份

复制代码
1
2
RMAN> backup incremental level=1 database;(周四晚上)

插入数据

复制代码
1
2
3
4
SYS@orcl>insert into t values(14); SYS@orcl>commit; SYS@orcl>alter system switch logfile;

做一个累积增量备份

复制代码
1
2
RMAN> backup incremental level=1 cumulative database;(周五晚上)

插入一条数据

复制代码
1
2
3
4
SYS@orcl>insert into t values(15); SYS@orcl>commit; SYS@orcl>alter system switch logfile;

做一个差异增量备份

复制代码
1
2
RMAN> backup incremental level=1 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
RMAN> list backup of database summary; List of Backups =============== Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag ------- -- -- - ----------- --------------- ------- ------- ---------- --- 3142 B 0 A DISK 10-JAN-20 1 1 YES TAG20200110T151440 3143 B 0 A DISK 10-JAN-20 1 1 YES TAG20200110T151440 3194 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T153915 3195 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T153915 3230 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T154259 3231 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T154259 3268 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T154703 3269 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T154703 3308 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T154951 3309 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T154951 3350 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T155145 3351 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T155145 3394 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T155316 3395 B 1 A DISK 10-JAN-20 1 1 YES TAG20200110T155316

Oracle中还看不出是累计增量备份还是差异增量备份,但是恢复的时候能看出来

复制代码
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
RMAN> restore preview database; Starting restore at 10-JAN-20 using channel ORA_DISK_1 using channel ORA_DISK_2 List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 3143 Incr 0 193.90M DISK 00:00:33 10-JAN-20 BP Key: 3147 Status: AVAILABLE Compressed: YES Tag: TAG20200110T151440 Piece Name: /u01/app/fast_recovery_area/PROD/backupset/2020_01_10/o1_mf_nnnd0_TAG20200110T151440_h1j9306r_.bkp List of Datafiles in backup set 3143 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 0 Incr 1057798 10-JAN-20 /u01/app/oradata/prod/system01.dbf 3 0 Incr 1057798 10-JAN-20 /u01/app/oradata/prod/undotbs01.dbf 4 0 Incr 1057798 10-JAN-20 /u01/app/oradata/prod/users01.dbf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 3351 Incr 1 464.00K DISK 00:00:03 10-JAN-20 BP Key: 3356 Status: AVAILABLE Compressed: YES Tag: TAG20200110T155145 Piece Name: /u01/app/fast_recovery_area/PROD/backupset/2020_01_10/o1_mf_nnnd1_TAG20200110T155145_h1jc8ksr_.bkp List of Datafiles in backup set 3351 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 1 Incr 1059121 10-JAN-20 /u01/app/oradata/prod/system01.dbf 3 1 Incr 1059121 10-JAN-20 /u01/app/oradata/prod/undotbs01.dbf 4 1 Incr 1059121 10-JAN-20 /u01/app/oradata/prod/users01.dbf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 3394 Incr 1 72.00K DISK 00:00:03 10-JAN-20 BP Key: 3399 Status: AVAILABLE Compressed: YES Tag: TAG20200110T155316 Piece Name: /u01/app/fast_recovery_area/PROD/backupset/2020_01_10/o1_mf_nnnd1_TAG20200110T155316_h1jccf08_.bkp List of Datafiles in backup set 3394 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 1 Incr 1059190 10-JAN-20 /u01/app/oradata/prod/system01.dbf 3 1 Incr 1059190 10-JAN-20 /u01/app/oradata/prod/undotbs01.dbf 4 1 Incr 1059190 10-JAN-20 /u01/app/oradata/prod/users01.dbf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 3142 Incr 0 92.78M DISK 00:00:26 10-JAN-20 BP Key: 3146 Status: AVAILABLE Compressed: YES Tag: TAG20200110T151440 Piece Name: /u01/app/fast_recovery_area/PROD/backupset/2020_01_10/o1_mf_nnnd0_TAG20200110T151440_h1j9306w_.bkp List of Datafiles in backup set 3142 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 2 0 Incr 1057799 10-JAN-20 /u01/app/oradata/prod/sysaux01.dbf 5 0 Incr 1057799 10-JAN-20 /u01/app/oradata/prod/example01.dbf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 3350 Incr 1 160.00K DISK 00:00:03 10-JAN-20 BP Key: 3355 Status: AVAILABLE Compressed: YES Tag: TAG20200110T155145 Piece Name: /u01/app/fast_recovery_area/PROD/backupset/2020_01_10/o1_mf_nnnd1_TAG20200110T155145_h1jc8ksw_.bkp List of Datafiles in backup set 3350 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 2 1 Incr 1059122 10-JAN-20 /u01/app/oradata/prod/sysaux01.dbf 5 1 Incr 1059122 10-JAN-20 /u01/app/oradata/prod/example01.dbf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 3395 Incr 1 40.00K DISK 00:00:03 10-JAN-20 BP Key: 3400 Status: AVAILABLE Compressed: YES Tag: TAG20200110T155316 Piece Name: /u01/app/fast_recovery_area/PROD/backupset/2020_01_10/o1_mf_nnnd1_TAG20200110T155316_h1jccf0g_.bkp List of Datafiles in backup set 3395 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 2 1 Incr 1059191 10-JAN-20 /u01/app/oradata/prod/sysaux01.dbf 5 1 Incr 1059191 10-JAN-20 /u01/app/oradata/prod/example01.dbf 结论:会用到0级增量备份和最后一次累积增量备份和周六的差异增量备份 =================================== 周五做了一次1级的累积增量备份,那么是不是周五之前的差异增量备份和累计增量备份都obsolete(废弃)了,其实没有oracle并没有将那些备份打上obsolete, 但是之前的SPFILE和CONTROLFILE都是obsolete状态了,可以验证一下做几次备份然后report obsolete就能看到了 =================================

现在模拟数据库损坏

复制代码
1
2
RMAN> shutdown immediate;

数据文件都删了

复制代码
1
2
[oracle@oracle01 ~]$ rm -f /u01/app/oradata/prod/example01.dbf /u01/app/oradata/prod/sysaux01.dbf /u01/app/oradata/prod/system01.dbf /u01/app/oradata/prod/undotbs01.dbf /u01/app/oradata/prod/users01.dbf

启动到mount阶段

复制代码
1
2
RMAN> startup mount;

恢复数据库,restore只会应用0级增量备份

复制代码
1
2
RMAN> restore database;

数据文件已经回来了

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[oracle@oracle01 ~]$ ls /u01/app/oradata/prod/ backup control01.ctl example01.dbf online redo01.log redo02.log redo03.log sysaux01.dbf system01.dbf temp temp01.dbf undotbs01.dbf users01.dbf

到现在也可以到sqlplus命令中去恢复数据库,但是只会用到归档文件不会用到增量备份,因为增量备份sqlplus是无法识别的在rmanrecovery用到的是增量备份,就是增量备份代替的归档日志
修复数据库

复制代码
1
2
RMAN> recover database;

打开数据库

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
RMAN> alter database open; SYS@orcl>select * from t; ID ---------- 1 2 3 4 5 6 7 8 9 10 11 ID ---------- 12 13 14 15

如果没有做过增量备份那备份的时候无论指定几级都是0级增量备份
删除之前的备份

复制代码
1
2
3
4
RMAN> delete noprompt backup; RMAN> list backup; specification does not match any backup in the repository

并行度改成1

复制代码
1
2
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1;

做一个1级差异增量备份

复制代码
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
RMAN> backup incremental level=1 database; RMAN> list backup; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 4274 Incr 0 290.59M DISK 00:00:28 10-JAN-20 BP Key: 4276 Status: AVAILABLE Compressed: YES Tag: TAG20200110T175240 Piece Name: /u01/app/fast_recovery_area/PROD/backupset/2020_01_10/o1_mf_nnnd0_TAG20200110T175240_h1jlc8w0_.bkp List of Datafiles in backup set 4274 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 0 Incr 1063425 10-JAN-20 /u01/app/oradata/prod/system01.dbf 2 0 Incr 1063425 10-JAN-20 /u01/app/oradata/prod/sysaux01.dbf 3 0 Incr 1063425 10-JAN-20 /u01/app/oradata/prod/undotbs01.dbf 4 0 Incr 1063425 10-JAN-20 /u01/app/oradata/prod/users01.dbf 5 0 Incr 1063425 10-JAN-20 /u01/app/oradata/prod/example01.dbf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 4275 Incr 1 1.06M DISK 00:00:02 10-JAN-20 BP Key: 4277 Status: AVAILABLE Compressed: YES Tag: TAG20200110T175240 Piece Name: /u01/app/fast_recovery_area/PROD/backupset/2020_01_10/o1_mf_ncsn1_TAG20200110T175240_h1jldf00_.bkp SPFILE Included: Modification time: 10-JAN-20 SPFILE db_unique_name: PROD Control File Included: Ckp SCN: 1063438 Ckp time: 10-JAN-20 [oracle@oracle01 ~]$ ll -h /u01/app/fast_recovery_area/PROD/backupset/2020_01_10 total 292M -rw-r----- 1 oracle oinstall 1.1M Jan 10 17:53 o1_mf_ncsn1_TAG20200110T175240_h1jldf00_.bkp -rw-r----- 1 oracle oinstall 291M Jan 10 17:53 o1_mf_nnnd0_TAG20200110T175240_h1jlc8w0_.bkp 现在其实就是0级增量备份,一个文件291MB

总结=========================================
1.完全脱机备份(要关机)
2.部分脱机备份(offline),但是systemundo表空间不能offline
3.部分联机备份(热备份),热备份都是要求归档模式
4.rman
oracle 10.2.0.3之前有一个缺点
rman备份的数据块是使用过的数据块,即使当前有的数据块没有数据也要备份,比如做一个0级增量备份有500M,删除一张100M的大表,那么再做0级增量备份也是500M
还有一个缺点就是,做0级增量备份的时候要检查所有被使用过的数据块,做1级增量备份的时候也是要检查所有的数据块看有没有被修改过

最后

以上就是英勇钥匙最近收集整理的关于rman增量备份的全部内容,更多相关rman增量备份内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部