Oracle RMAN 表空间恢复

需求:

恢复1天前(05/06/2021 08:05:05)数据库内一个用户的数据。

环境说明:

DB:Oracle 11204 RAC

OS:AIX 7.1

操作:

 

1
2
3
4
1.由于之前只有rman备份,没有逻辑备份,只能进行rman恢复。
2.全库有3T多,数据量较大,恢复机剩余空间不到1T,无法进行全库恢复。
3.查看用户所在表空间很小,只有300G,考虑只恢复用户数据所在表空间,在加上system,sysaux,undotbs表空间,不恢复其他业务用户的表空间。
4.启动数据库时,把其他没有恢复的表空间offline后,就可以正常打开数据库。

具体操作如下:

1.恢复控制文件

###Rman Script:

 

1
2
3
4
5
6
7
8
run {
SET DBID 3311060971;
allocate channel ch1 type ‘sbt_tape‘
PARMS="###省略###"
TRACE 0;
restore controlfile  from autobackup  until time "TO_DATE(‘05/06/2021 08:05:05‘,‘MM/DD/YYYY HH24:MI:SS‘)" ;
}
exit;

问题:

 

1
2
3
4
5
此处恢复控制文件的方式是有问题的,因为最终是想将数据库恢复到05/06/2021 08:05:05时间点。
而在恢复控制文件时,由于并没有05/06/2021 08:05:05这一时刻的控制文件备份。
在恢复过程中没有报错,而是直接恢复了离05/06/2021 08:05:05时间点最近的一次控制文件进行恢复。
这就导致了控制文件恢复的时间点提前了,很多归档等备份信息不全,最终导致数据库在recovery时提示找不到归档,恢复出的数据库也提前了。
实际上要恢复的控制文件备份的时间可以稍往后推一些。

恢复日志如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
RMAN> 2> 3> 4> 5> 6> 7>
allocated channel: ch1
channel ch1: SID=541 device type=SBT_TAPE
channel ch1: CommVault Systems for Oracle: Version 11.0.0(BUILD80)
sent command to channel: ch1
Starting restore at May 04 2021 17:34:56
channel ch1: looking for AUTOBACKUP on day: 20210506
channel ch1: AUTOBACKUP found: c-3311060971-20210506-01
channel ch1: restoring control file from AUTOBACKUP c-3311060971-20210506-01
channel ch1: control file restore from AUTOBACKUP complete
output file name=/oradata/chenj/control01
output file name=/oradata/chenj/control02
Finished restore at May 04 2021 17:40:07
released channel: ch1
RMAN>
Recovery Manager complete.

2.执行restore 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
run {
allocate channel ch1 type ‘sbt_tape‘
PARMS="###省略###"
TRACE 0;
set newname for datafile ‘+AA_BB_CJCXX_DATA/chenjch/datafile/cccc_xxxxxx_data_01.dbf‘ to ‘/oradata/chenj/cccc_xxxxxx_data_01.dbf‘;
set newname for datafile ‘+AA_BB_CJCXX_DATA/chenjch/datafile/cccc_xxxxxx_data_02.dbf‘ to ‘/oradata/chenj/cccc_xxxxxx_data_02.dbf‘;
set newname for datafile ‘+AA_BB_CJCXX_DATA/chenjch/datafile/sysaux.302.1042642447‘ to ‘/oradata/chenj/sysaux.302.1042642447‘;
set newname for datafile ‘+AA_BB_CJCXX_DATA/chenjch/datafile/system.285.1042646103‘ to ‘/oradata/chenj/system.285.1042646103‘;
set newname for datafile ‘+AA_BB_CJCXX_DATA/chenjch/datafile/undotbs1.301.1042643625‘ to ‘/oradata/chenj/undotbs1.301.1042643625‘;
set newname for datafile ‘+AA_BB_CJCXX_DATA/chenjch/datafile/undotbs2.322.1042633105‘ to ‘/oradata/chenj/undotbs2.322.1042633105‘;
set newname for datafile ‘+AA_BB_CJCXX_DATA/chenjch/datafile/users.284.1042646223‘ to ‘/oradata/chenj/users.284.1042646223‘;
restore (tablespace ‘SYSTEM‘,‘SYSAUX‘,‘USERS‘,‘UNDOTBS1‘,‘UNDOTBS2‘,‘AAAA_XXXXX_UUUU‘)  until time "TO_DATE(‘05/06/2021 08:05:05‘,‘MM/DD/YYYY HH24:MI:SS‘)" ;
switch datafile all; 
}
exit;

日志:

 

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
RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16> 17> 18> 
allocated channel: ch1
channel ch1: SID=464 device type=SBT_TAPE
channel ch1: CommVault Systems for Oracle: Version 11.0.0(BUILD80)
allocated channel: ch2
channel ch2: SID=541 device type=SBT_TAPE
channel ch2: CommVault Systems for Oracle: Version 11.0.0(BUILD80)
sent command to channel: ch1
sent command to channel: ch2
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at May 04 2021 18:30:45
new media label is V_241064_3217058 for piece 484407_chenj_aj038d7e_1_1
new media label is V_241064_3217091 for piece 484407_chenj_ak038ehq_1_1
new media label is V_241064_3217092 for piece 484407_chenj_al038emc_1_1
new media label is V_241064_3217061 for piece 484407_chenj_ai038d7d_1_1
new media label is V_241064_3217058 for piece 484407_chenj_aj038d7e_1_1
new media label is V_241064_3217091 for piece 484407_chenj_ak038ehq_1_1
new media label is V_241064_3217092 for piece 484407_chenj_al038emc_1_1
new media label is V_241064_3217061 for piece 484407_chenj_ai038d7d_1_1
channel ch1: starting datafile backup set restore
channel ch1: specifying datafile(s) to restore from backup set
channel ch1: restoring datafile 00001 to /oradata/chenj/system.285.1042646103
channel ch1: restoring datafile 00004 to /oradata/chenj/undotbs2.322.1042633105
channel ch1: reading from backup piece 484407_chenj_aj038d7e_1_1
channel ch2: starting datafile backup set restore
channel ch2: specifying datafile(s) to restore from backup set
channel ch2: restoring datafile 00051 to /oradata/chenj/cccc_xxxxxx_data_01.dbf
channel ch2: reading from backup piece 484407_chenj_ai038d7d_1_1
channel ch2: piece handle=484407_chenj_ai038d7d_1_1 tag=TAG20210506T040045
channel ch2: restored backup piece 1
channel ch2: restore complete, elapsed time: 00:31:05
channel ch2: starting datafile backup set restore
channel ch2: specifying datafile(s) to restore from backup set
channel ch2: restoring datafile 00002 to /oradata/chenj/sysaux.302.1042642447
channel ch2: reading from backup piece 484407_chenj_ak038ehq_1_1
channel ch1: piece handle=484407_chenj_aj038d7e_1_1 tag=TAG20210506T040045
channel ch1: restored backup piece 1
channel ch1: restore complete, elapsed time: 01:05:11
channel ch1: starting datafile backup set restore
channel ch1: specifying datafile(s) to restore from backup set
channel ch1: restoring datafile 00005 to /oradata/chenj/users.284.1042646223
channel ch1: restoring datafile 00003 to /oradata/chenj/undotbs1.301.1042643625
channel ch1: restoring datafile 00052 to /oradata/chenj/cccc_xxxxxx_data_02.dbf
channel ch1: reading from backup piece 484407_chenj_al038emc_1_1
channel ch2: piece handle=484407_chenj_ak038ehq_1_1 tag=TAG20210506T040045
channel ch2: restored backup piece 1
channel ch2: restore complete, elapsed time: 01:02:30
channel ch1: piece handle=484407_chenj_al038emc_1_1 tag=TAG20210506T040045
channel ch1: restored backup piece 1
channel ch1: restore complete, elapsed time: 00:57:05
Finished restore at May 04 2021 20:33:24
datafile 1 switched to datafile copy
input datafile copy RECID=12 STAMP=1077050007 file name=/oradata/chenj/system.285.1042646103
datafile 2 switched to datafile copy
input datafile copy RECID=13 STAMP=1077050008 file name=/oradata/chenj/sysaux.302.1042642447
datafile 5 switched to datafile copy
input datafile copy RECID=14 STAMP=1077050008 file name=/oradata/chenj/users.284.1042646223
datafile 3 switched to datafile copy
input datafile copy RECID=15 STAMP=1077050008 file name=/oradata/chenj/undotbs1.301.1042643625
datafile 4 switched to datafile copy
input datafile copy RECID=16 STAMP=1077050008 file name=/oradata/chenj/undotbs2.322.1042633105
datafile 51 switched to datafile copy
input datafile copy RECID=17 STAMP=1077050008 file name=/oradata/chenj/cccc_xxxxxx_data_01.dbf
datafile 52 switched to datafile copy
input datafile copy RECID=18 STAMP=1077050008 file name=/oradata/chenj/cccc_xxxxxx_data_02.dbf
released channel: ch1
released channel: ch2
RMAN> 
Recovery Manager complete.

3.执行recovery 

 

1
2
3
4
5
6
7
8
run {
allocate channel ch1 type ‘sbt_tape‘
PARMS="###省略###"
TRACE 0;
recover database skip tablespace ‘DATA_TBS1‘,‘DATA_TBS2‘,‘DATA_TBS3‘,‘DATA_TBS4‘,‘DATA_TBS5‘,‘...‘
until time "TO_DATE(‘05/06/2021 08:05:05‘,‘MM/DD/YYYY HH24:MI:SS‘)";
}
exit;

日志:

 

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
RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 
allocated channel: ch1
channel ch1: SID=541 device type=SBT_TAPE
channel ch1: CommVault Systems for Oracle: Version 11.0.0(BUILD80)
allocated channel: ch2
channel ch2: SID=618 device type=SBT_TAPE
channel ch2: CommVault Systems for Oracle: Version 11.0.0(BUILD80)
sent command to channel: ch1
sent command to channel: ch2
Starting recover at May 04 2021 20:33:57
###没有restore出来的数据文件自动执行了offline操作###
Executing: alter database datafile 8 offline
Executing: alter database datafile 9 offline
Executing: alter database datafile 11 offline
Executing: alter database datafile 13 offline
Executing: alter database datafile 14 offline
Executing: alter database datafile 15 offline
Executing: alter database datafile 16 offline
Executing: alter database datafile 17 offline
Executing: alter database datafile 18 offline
Executing: alter database datafile 20 offline
Executing: alter database datafile 21 offline
Executing: alter database datafile 24 offline
Executing: alter database datafile 25 offline
Executing: alter database datafile 26 offline
Executing: alter database datafile 27 offline
Executing: alter database datafile 28 offline
Executing: alter database datafile 29 offline
Executing: alter database datafile 30 offline
Executing: alter database datafile 31 offline
Executing: alter database datafile 32 offline
Executing: alter database datafile 33 offline
Executing: alter database datafile 34 offline
Executing: alter database datafile 35 offline
Executing: alter database datafile 36 offline
Executing: alter database datafile 37 offline
Executing: alter database datafile 38 offline
Executing: alter database datafile 39 offline
Executing: alter database datafile 40 offline
Executing: alter database datafile 41 offline
Executing: alter database datafile 42 offline
Executing: alter database datafile 43 offline
Executing: alter database datafile 44 offline
Executing: alter database datafile 45 offline
Executing: alter database datafile 46 offline
Executing: alter database datafile 47 offline
Executing: alter database datafile 48 offline
Executing: alter database datafile 49 offline
Executing: alter database datafile 50 offline
Executing: alter database datafile 54 offline
Executing: alter database datafile 55 offline
Executing: alter database datafile 56 offline
Executing: alter database datafile 57 offline
Executing: alter database datafile 58 offline
Executing: alter database datafile 59 offline
Executing: alter database datafile 60 offline
Executing: alter database datafile 63 offline
Executing: alter database datafile 64 offline
Executing: alter database datafile 65 offline
Executing: alter database datafile 66 offline
Executing: alter database datafile 67 offline
Executing: alter database datafile 71 offline
Executing: alter database datafile 72 offline
Executing: alter database datafile 73 offline
Executing: alter database datafile 74 offline
Executing: alter database datafile 75 offline
Executing: alter database datafile 76 offline
Executing: alter database datafile 77 offline
Executing: alter database datafile 78 offline
Executing: alter database datafile 79 offline
Executing: alter database datafile 80 offline
Executing: alter database datafile 83 offline
Executing: alter database datafile 84 offline
Executing: alter database datafile 85 offline
Executing: alter database datafile 86 offline
Executing: alter database datafile 87 offline
Executing: alter database datafile 88 offline
Executing: alter database datafile 89 offline
Executing: alter database datafile 90 offline
Executing: alter database datafile 91 offline
Executing: alter database datafile 92 offline
Executing: alter database datafile 93 offline
Executing: alter database datafile 94 offline
Executing: alter database datafile 95 offline
Executing: alter database datafile 96 offline
Executing: alter database datafile 97 offline
Executing: alter database datafile 98 offline
Executing: alter database datafile 99 offline
Executing: alter database datafile 100 offline
Executing: alter database datafile 101 offline
Executing: alter database datafile 102 offline
Executing: alter database datafile 103 offline
Executing: alter database datafile 104 offline
Executing: alter database datafile 105 offline
Executing: alter database datafile 106 offline
Executing: alter database datafile 107 offline
Executing: alter database datafile 108 offline
Executing: alter database datafile 109 offline
Executing: alter database datafile 110 offline
Executing: alter database datafile 111 offline
Executing: alter database datafile 112 offline
Executing: alter database datafile 113 offline
Executing: alter database datafile 114 offline
Executing: alter database datafile 115 offline
Executing: alter database datafile 116 offline
Executing: alter database datafile 6 offline
Executing: alter database datafile 7 offline
Executing: alter database datafile 23 offline
Executing: alter database datafile 10 offline
Executing: alter database datafile 12 offline
Executing: alter database datafile 19 offline
Executing: alter database datafile 22 offline
Executing: alter database datafile 53 offline
Executing: alter database datafile 68 offline
Executing: alter database datafile 69 offline
Executing: alter database datafile 70 offline
Executing: alter database datafile 82 offline
Executing: alter database datafile 81 offline
Executing: alter database datafile 61 offline
Executing: alter database datafile 62 offline
starting media recovery
new media label is V_241064_3217122 for piece 484407_chenj_ap038g7b_1_1
new media label is V_241064_3217123 for piece 484407_chenj_aq038gaa_1_1
new media label is V_241064_3217122 for piece 484407_chenj_ap038g7b_1_1
new media label is V_241064_3217123 for piece 484407_chenj_aq038gaa_1_1
channel ch1: starting archived log restore to default destination
channel ch1: restoring archived log
archived log thread=1 sequence=180348
channel ch1: restoring archived log
archived log thread=2 sequence=182735
channel ch1: restoring archived log
archived log thread=1 sequence=180349
channel ch1: restoring archived log
archived log thread=1 sequence=180350
channel ch1: reading from backup piece 484407_chenj_ap038g7b_1_1
channel ch2: starting archived log restore to default destination
channel ch2: restoring archived log
archived log thread=2 sequence=182736
channel ch2: reading from backup piece 484407_chenj_aq038gaa_1_1
channel ch2: piece handle=484407_chenj_aq038gaa_1_1 tag=TAG20210506T045152
channel ch2: restored backup piece 1
channel ch2: restore complete, elapsed time: 00:00:07
channel ch1: piece handle=484407_chenj_ap038g7b_1_1 tag=TAG20210506T045152
channel ch1: restored backup piece 1
channel ch1: restore complete, elapsed time: 00:02:25
archived log file name=/oradata/chenj/arch/1_180348_864829931.dbf thread=1 sequence=180348
archived log file name=/oradata/chenj/arch/2_182735_864829931.dbf thread=2 sequence=182735
archived log file name=/oradata/chenj/arch/1_180349_864829931.dbf thread=1 sequence=180349
archived log file name=/oradata/chenj/arch/1_180350_864829931.dbf thread=1 sequence=180350
archived log file name=/oradata/chenj/arch/2_182736_864829931.dbf thread=2 sequence=182736
unable to find archived log
archived log thread=1 sequence=180351
released channel: ch1
released channel: ch2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 05/07/2021 08:37:27
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 180351 and starting SCN of 542755860991
RMAN> 
Recovery Manager complete.

 

1
2
3
recover最后一步报错了,提示找不到180351。
查看180351归档生成时间,发现是5月5日的归档,说明数据也只恢复到了5月5日,丢失了1天的数据。
出现这个问题的原因就是前面提到的,控制文件恢复的时间不对,导致控制文件记录的备份信息不全。

解决方案:

由于恢复完成后,数据库执行了open read only操作,而并没有执行open resetlogs操作,说明数据库还可以继续执行recovery操作,

之前还原的数据文件不需要在执行restore操作了。

具体操作:

 

1
2
3
4
5
6
7
1.停库备份控制文件。
2.恢复出较新的控制文件(时间略大约05/06/2021 08:05:05)。
3.用新的控制文件挂载数据库。
4.restore出需要的归档文件。
5.停库,用备份的控制文件挂载数据库(不在需要转换路径了)。
6.将新恢复出的归档日志注册到老控制文件中。
7.继续执行recovery操作。

Oracle RMAN 表空间恢复

上一篇:2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascript&C++版)


下一篇:flask(10):abort的解释