Documente Academic
Documente Profesional
Documente Cultură
About
Contact Us
Categories
Oracle Database (76)
Backup and Recovery (20)
Troubleshooting (21)
Errors (11)
Administration (14)
Database Control (3)
Network (6)
High Availability (13)
Data Guard (13)
Performance (2)
SecureFiles and Large Objects
(1)
Security (1)
Utilities (1)
OCI/OCCI (1)
Internals (1)
Grid Control (19)
TimesTen (14)
Linux (9)
Java (13)
JDBC (8)
JavaFX (4)
Windows (5)
VirtualBox (4)
Grid Infrastructure (4)
NetBeans (2)
Berkeley DB (2)
JDeveloper (2)
Golden Gate (2)
Oracle Fusion Middleware (1)
Weblogic (1)
Video (1)
MySQL (1)
Cloud Control (1)
announcements (1)
Terms of Use
Search
If you are unable to connect to the database you can also find the DBID by inspecting the file name of the control file
autobackup. For example, c-1239150297-20100427-00, is a control file autobackup. The first group of numbers
appearing after the c-, 123915029, is the DBID.
When we restore the database we are not going to have the active redo logs from the original database so we want to stop
the recovery at the last SCN in the archive logs. We can find the last SCN by querying V$ARCHIVED_LOG.
1
2
3
4
5
6
7
8
9
10
SQL>
2
3
4
select max(next_change#)
from v$archived_log
where archived = 'YES'
group by thread#;
MAX(NEXT_CHANGE#)
----------------1375117
SQL>
Here we see that the archive logs contain log information up to SCN 1375117. That is our stopping SCN. We can also find
the last SCN in our archive logs through RMAN using LIST BACKUP OF ARCHIVELOG ALL.
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
Next Time
--------26-APR-10
26-APR-10
26-APR-10
BS Key Size
Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ --------------55
13.82M
DISK
00:00:02
27-APR-10
BP Key: 55
Status: AVAILABLE Compressed: NO Tag: TAG20100427T094350
Piece Name: /u03/app/oracle/oradata/orcl/backup/20lc5nqr_1_1
List
Thrd
---1
BS Key Size
Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ --------------60
136.00K
DISK
00:00:00
27-APR-10
BP Key: 60
Status: AVAILABLE Compressed: NO Tag: TAG20100427T094652
Piece Name: /u03/app/oracle/oradata/orcl/backup/24lc5o0c_1_1
List
Thrd
---1
RMAN>
Page 1 / 10
38
39
40
41
42
43
List
Thrd
---1
RMAN>
Looking through the output above we see that highest Next SCN is 1375117 which is part of backup set 60.
Next we need to make the backup available to the new host. If the backups reside on a shared file system that the new host
has access to then there is nothing more to do. If the backups are on local storage we will need to transfer the backups to
the new host.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
All of the rest of the steps will take place on the new host.
Set the ORACLE_SID to the SID of the database that made the backup and start up RMAN and connect to the target.
1
2
3
4
5
6
7
8
9
10
11
12
We now need to set the DBID and bring the database in mount mode. When we bring the database up in mount mode we
will receive errors because the parameter file is not found. This is to be expected as we are restoring to a new host. Oracle
willuseadummyparameterfileforthetimebeing.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
159019008 bytes
1335192
75497576
79691776
2494464
bytes
bytes
bytes
bytes
RMAN>
Now with the database in mount mode we need to restore the SPFILE. We are going to need to make some changes to the
SPFILE so we will restore SPFILE to a PFILE. The SPFILE is stored in the control file autobackup. All of the RMAN
configuration parameters values are at their defaults so we will need to set the location for the control file autobackup.
1
2
3
4
5
6
Below we will set the location for the control file autobackup and restore the SPFILE to a PFILE and then we shutdown the
database.
1
2
3
4
5
6
7
8
9
10
RMAN> set controlfile autobackup format for device type disk to '/u01/app/oracle/oradata/
executing command: SET CONTROLFILE AUTOBACKUP FORMAT
RMAN> restore spfile
2>
to pfile '/u01/app/oracle/oradata/orcl/initorcl.ora'
3>
from autobackup;
Starting restore at 27-APR-10
allocated channel: ORA_DISK_1
Page 2 / 10
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.control_files='/u02/app/oracle/oradata/orcl/ctl/control01.ctl','/u01/app/oracle/flash_re
*.db_recovery_file_dest_size=4039114752
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.diagnostic_dest='/u01/app/oracle'
*.log_archive_dest_1='LOCATION=/u02/app/oracle/oradata/orcl/arch'
*.local_listener='LISTENER_ORCL'
Note: If you are using 11g you to ensure your kernel parameters are set appropriately to avoid a possible ORA-00845.
1
2
3
4
5
After making the necessary changes to the PFILE we now will bring the database back up in NOMOUNT mode so we can
restore the control files. When bringing the database up in NOMOUNT mode we will use the PFILE we edited earlier.
1
2
3
4
5
6
7
8
9
10
11
12
13
849530880 bytes
Fixed Size
Variable Size
Database Buffers
Redo Buffers
1339824
528485968
314572800
5132288
bytes
bytes
bytes
bytes
RMAN>
Just like the SPFILE we will use the autobackup to restore the control file after setting the control file autobackup format.
After restoring the control files we mount the 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
RMAN> set controlfile autobackup format for device type disk to '/u01/app/oracle/oradata/
executing command: SET CONTROLFILE AUTOBACKUP FORMAT
RMAN> restore controlfile from autobackup;
Starting restore at 27-APR-10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK
recovery area destination: /u01/app/oracle/flash_recovery_area
database name (or database unique name) used for search: ORCL
channel ORA_DISK_1: no AUTOBACKUPS found in the recovery area
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20100427
channel ORA_DISK_1: AUTOBACKUP found: /u01/app/oracle/oradata/orcl/backup/c-1239150297-20
channel ORA_DISK_1: restoring control file from AUTOBACKUP /u01/app/oracle/oradata/orcl/b
channel ORA_DISK_1: control file restore from AUTOBACKUP complete
output file name=/u02/oradata/orcl/ctl/control01.ctl
output file name=/u01/app/oracle/flash_recovery_area/orcl/control02.ctl
output file name=/u03/app/oracle/oradata/orcl/ctl/control03.ctl
Finished restore at 27-APR-10
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN>
Now that the control files have been restored and mounted, all of the RMAN configuration parameters have been set. You
should verify the paths to make sure they are appropriate for this host.
1
2
3
4
5
6
7
8
9
10
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Given the current settings RMAN is going to look in /u03/app/oracle/oradata/orcl/backup for both the control file
autobackups and database/archive log backups. The backup we copied over is located in
/u01/app/oracle/oradata/orcl/backup. There are two ways to resolve this issue. Either move the backup to the
location were RMAN is configured or change the configuration. It may be that moving the backups may not be an option so
we document what needs to be done next.
RMAN has record of a backup in /u03/app/oracle/oradata/orcl/backup but has no record of the backup we have in
/u01/app/oracle/oradata/orcl/backup/. We need remove the record of the old location and the backup of the new
location.
In order to let RMAN know about the backup in /u01/app/oracle/oradata/orcl/backup we use the CATALOG
command.
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
As a result of the CATALOG command RMAN performed a CROSSCHECK. The backup registered at
/u03/app/oracle/oradata/orcl/backup/ was marked expired as a result of the CROSSCHECK because they were not
present.
We are almost ready to restore the database the last thing to be done is to build the restore script. During the restore we
can change the location of the data files by using SET NEWNAME FOR DATAFILE. The data files in the backup are on
various locations but we would like to restore them to only one.
Also we would like to change the location of the redo logs as well. In order to change the redo log locations the ALTER
DATABASE RENAME FILE command has to be issued. Below are examples of both.
1
2
3
4
5
6
7
8
9
10
SET
SET
SET
SET
SET
SET
SET
NEWNAME
NEWNAME
NEWNAME
NEWNAME
NEWNAME
NEWNAME
NEWNAME
FOR
FOR
FOR
FOR
FOR
FOR
FOR
DATAFILE
DATAFILE
DATAFILE
DATAFILE
DATAFILE
DATAFILE
DATAFILE
1
2
3
4
5
6
7
TO
TO
TO
TO
TO
TO
TO
'/u01/app/oracle/oradata/orcl/system01.dbf';
'/u01/app/oracle/oradata/orcl/sysaux01.dbf';
'/u01/app/oracle/oradata/orcl/undotbs01.dbf';
'/u01/app/oracle/oradata/orcl/users01.dbf';
'/u01/app/oracle/oradata/orcl/example01.dbf';
'/u01/app/oracle/oradata/orcl/test.dbf';
'/u01/app/oracle/oradata/orcl/dbfs01.dbf';
Page 4 / 10
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SET
SET
SET
SET
NEWNAME
NEWNAME
NEWNAME
NEWNAME
FOR
FOR
FOR
FOR
DATAFILE
DATAFILE
DATAFILE
DATAFILE
4
5
6
7
TO
TO
TO
TO
'/u01/app/oracle/oradata/orcl/users01.dbf';
'/u01/app/oracle/oradata/orcl/example01.dbf';
'/u01/app/oracle/oradata/orcl/test.dbf';
'/u01/app/oracle/oradata/orcl/dbfs01.dbf';
If you remember we stated that we wanted the restore to stop at SCN 1375117 because that was the latest SCN in which
we have archive logs. In order to stop at a specific SCN we will use the SET UNTIL SCN 1375117.
After all of that we just need to restore the database, switch the data files so the control files have the new path and recover
the database. Not much at all.
Below is the entire script to do just that.
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
RUN {
SET
SET
SET
SET
SET
SET
SET
NEWNAME
NEWNAME
NEWNAME
NEWNAME
NEWNAME
NEWNAME
NEWNAME
FOR
FOR
FOR
FOR
FOR
FOR
FOR
DATAFILE
DATAFILE
DATAFILE
DATAFILE
DATAFILE
DATAFILE
DATAFILE
1
2
3
4
5
6
7
TO
TO
TO
TO
TO
TO
TO
'/u01/app/oracle/oradata/orcl/system01.dbf';
'/u01/app/oracle/oradata/orcl/sysaux01.dbf';
'/u01/app/oracle/oradata/orcl/undotbs01.dbf';
'/u01/app/oracle/oradata/orcl/users01.dbf';
'/u01/app/oracle/oradata/orcl/example01.dbf';
'/u01/app/oracle/oradata/orcl/test.dbf';
'/u01/app/oracle/oradata/orcl/dbfs01.dbf';
The script above was saved to the file restore.rman. Below is the output.
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
RMAN> @restore.rman
RMAN> RUN {
2>
SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/orcl/system01.dbf';
3>
SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/orcl/sysaux01.dbf';
4>
SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/orcl/undotbs01.dbf';
5>
SET NEWNAME FOR DATAFILE 4 TO '/u01/app/oracle/oradata/orcl/users01.dbf';
6>
SET NEWNAME FOR DATAFILE 5 TO '/u01/app/oracle/oradata/orcl/example01.dbf';
7>
SET NEWNAME FOR DATAFILE 6 TO '/u01/app/oracle/oradata/orcl/test.dbf';
8>
SET NEWNAME FOR DATAFILE 7 TO '/u01/app/oracle/oradata/orcl/dbfs01.dbf';
9>
10>
11>
SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo01.log''
12>
TO ''/u01/app/oracle/oradata/orcl/redo/redo01.log'' ";
13>
SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/red01_b.log''
14>
TO ''/u02/app/oracle/oradata/orcl/redo/red01_b.log'' ";
15>
SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo02.log''
16>
TO ''/u01/app/oracle/oradata/orcl/redo/redo02.log'' ";
17>
SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo02_b.log''
18>
TO ''/u02/app/oracle/oradata/orcl/redo/redo02_b.log'' ";
19>
SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo03.log''
20>
TO ''/u01/app/oracle/oradata/orcl/redo/redo03.log'' ";
21>
SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo03_b.log''
22>
TO ''/u02/app/oracle/oradata/orcl/redo/redo03_b.log'' ";
23>
SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo04.log''
24>
TO ''/u01/app/oracle/oradata/orcl/redo/redo04.log'' ";
25>
SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo04_b.log''
26>
TO ''/u02/app/oracle/oradata/orcl/redo/redo04_b.log'' ";
27>
28>
SET UNTIL SCN 1375117;
29>
30>
RESTORE DATABASE;
31>
SWITCH DATAFILE ALL;
32>
33>
RECOVER DATABASE;
34> }
executing command: SET NEWNAME
Page 5 / 10
executing command: SET NEWNAME
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
32>
33>
RECOVER DATABASE;
34> }
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
using target database control file instead of recovery catalog
sql statement: ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo01.log
sql statement: ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/red01_b.lo
sql statement: ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo02.log
sql statement: ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo02_b.l
sql statement: ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo03.log
sql statement: ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo03_b.l
sql statement: ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo04.log
sql statement: ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo04_b.l
executing command: SET until clause
Starting restore at 27-APR-10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=17 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=1 device type=DISK
channel ORA_DISK_1:
channel ORA_DISK_1:
channel ORA_DISK_1:
channel ORA_DISK_1:
channel ORA_DISK_1:
channel ORA_DISK_1:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_1:
channel ORA_DISK_1:
channel ORA_DISK_1:
channel ORA_DISK_2:
channel ORA_DISK_2:
channel ORA_DISK_2:
Finished restore at
datafile 1 switched
input datafile copy
datafile 2 switched
input datafile copy
datafile 3 switched
input datafile copy
datafile 4 switched
input datafile copy
datafile 5 switched
input datafile copy
datafile 6 switched
input datafile copy
datafile 7 switched
input datafile copy
to datafile copy
RECID=9 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/syste
to datafile copy
RECID=10 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/sysa
to datafile copy
RECID=11 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/undo
to datafile copy
RECID=12 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/user
to datafile copy
RECID=13 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/exam
to datafile copy
RECID=14 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/test
to datafile copy
RECID=15 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/dbfs
All that is left is to open the database with the RESETLOGS option.
1
2
3
Page 6 / 10
All that is left is to open the database with the RESETLOGS option.
1
2
3
4
5
Share this:
Tumblr
Comments
eshant (November 25, 2010 11:09 pm)
* how
* to
* restore
* complete
* database
* on
* another
* system
* (in
* oracle)
Page 7 / 10
Post A Comment
Name (required)
Page 8 / 10
Submit Comment
Page 9 / 10
Page 10 / 10