Quantcast
Channel: DBA Sky » rman
Viewing all articles
Browse latest Browse all 16

How To Use RMAN CONVERT DATABASE on Source for Cross Platform Migration [ID 413586.1]

$
0
0
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
How To Use RMAN CONVERT DATABASE on Source Host for Cross Platform Migration [ID 413586.1] 	 
  	Modified 18-AUG-2009     Type HOWTO     Status PUBLISHED 	 
 
In this Document
Goal
Solution
References
Applies to:
 
Oracle Server - Enterprise Edition - Version: 10.2.0.1 to 10.2.0.4
Information in this document applies to any platform.
Goal
 
Walk through RMAN CONVERT DATABASE feature in 10g Release 2 to accomplish cross platform database migration
 
This article discussed the CONVERT DATABASE procedure on source host. If you need to perform CONVERT on destination host, refer below note:
 
Note 414878.1 Cross-Platform Migration on Destination Host Using Rman Convert Database
 
Note the following restrictions exist with Cross-Platform Transportable Database:
 
1) The principal restriction on cross-platform transportable database is that the source and destination platform must share the same endian format.
2) Redo log files and control files from the source database are not transported. New control files and redo log files are created for the new database during the transport process, and an OPEN RESETLOGS is performed once the new database is created. Similarly, tempfiles belonging to locally managed temporary tablespaces are not transported. The temporary tablespace will be re-created on the target platform when the transport script is run.
3) BFILEs, External tables and directories, Password files are not transported.
Solution
 
1) Check that the source and destination platform belong to same ENDIAN format in the view V$TRANSPORTABLE_PLATFORM. We will try to transport a database from Windows (32-bit) to Linux (32-bit). As seen below both belong to Little endian format:
 
SQL> select PLATFORM_NAME, ENDIAN_FORMAT from V$TRANSPORTABLE_PLATFORM;
 
PLATFORM_NAME                            ENDIAN_FORMAT
---------------------------------------- --------------
Solaris[tm] OE (32-bit)                  Big
Solaris[tm] OE (64-bit)                  Big
Microsoft Windows IA (32-bit)            Little
Linux IA (32-bit)                        Little
AIX-Based Systems (64-bit)               Big
HP-UX (64-bit)                           Big
HP Tru64 UNIX                            Little
HP-UX IA (64-bit)                        Big
Linux IA (64-bit)                        Little
HP Open VMS                              Little
Microsoft Windows IA (64-bit)            Little
IBM zSeries Based Linux                  Big
Linux 64-bit for AMD                     Little
Apple Mac OS                             Big
Microsoft Windows 64-bit for AMD         Little
Solaris Operating System (x86)           Little
IBM Power Based Linux                    Big
 
17 rows selected.
 
If the two platforms are not on the same endian format, you will need to use TRANSPORTABLE TABLESPACE instead of CONVERT DATABASE
 
see Note 243304.1 10g : Transportable Tablespaces Across Different Platforms
 
2) Use DBMS_TDB.CHECK_DB to check whether the database can be transported to a desired destination platform, and whether the current state of the database (such as incorrect compatibility settings, in-doubt or active transactions) permits transport. Make sure your database is open in READ ONLY mode before you call DBMS_TDB.CHECK_DB. Since we need to transport to Linux we will call the procedure with following arguments:
SQL> set serveroutput on
SQL> declare
2  db_ready boolean;
3  begin
4  db_ready := dbms_tdb.check_db('Linux IA (32-bit)');
5  end;
6  / 
 
PL/SQL procedure successfully completed.
 
If you call DBMS_TDB.CHECK_DB and no messages are displayed indicating conditions preventing transport BEFORE the "PL/SQL procedure successfully completed message", then your database is ready for transport.
 
3) Use DBMS_TDB.CHECK_EXTERNAL to identify any external tables, directories or BFILEs. RMAN cannot automate the transport of such files as mentioned above.
SQL> set serveroutput on
SQL> declare
2    external boolean;
3  begin
4    external := dbms_tdb.check_external;
5  end;
6  /
The following directories exist in the database:
SYS.DATA_PUMP_DIR 
 
PL/SQL procedure successfully completed.
 
If there are no external objects, then this procedure completes with no output. If there are external objects, however, the output will be somewhat similar to above.
 
4) When the database is ready for transport, the RMAN CONVERT DATABASE command is run (when the source database is READ ONLY), specifying a destination platform and how to name the output files. RMAN produces the following files needed to move the database to the destination system:
 
a) A complete copy of the datafiles of the database, ready to be transported
b) A PFILE for use with the new database on the destination platform, containing settings used in the PFILE/SPFILE from the source database.
c) A transport script, which contains SQL statements used to create the new database on the destination platform
 
C:\>rman target / nocatalog
 
Recovery Manager: Release 10.2.0.1.0 - Production on Fri Feb 2 17:05:35 2007
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
connected to target database: ORA10G (DBID=3926158280)
using target database control file instead of recovery catalog
 
RMAN> CONVERT DATABASE NEW DATABASE 'LinDB10g'
2>    TRANSPORT SCRIPT 'D:\oracle\oradata\dbTransport\transport.sql'
3>    TO PLATFORM 'Linux IA (32-bit)'
4>    DB_FILE_NAME_CONVERT '+DG_DATA/ora10g/datafile' 'D:\oracle\oradata\dbTransport';
 
Starting convert at 02-FEB-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=90 devtype=DISK
 
Directory SYS.DATA_PUMP_DIR found in the database
 
User SYS with SYSDBA and SYSOPER privilege found in password file
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00001 name=+DG_DATA/ora10g/datafile/system.257.609084887
converted datafile=D:\ORACLE\ORADATA\DBTRANSPORT\SYSTEM.257.609084887
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00002 name=+DG_DATA/ora10g/datafile/undotbs1.258.609084933
converted datafile=D:\ORACLE\ORADATA\DBTRANSPORT\UNDOTBS1.258.609084933
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00003 name=+DG_DATA/ora10g/datafile/sysaux.259.609084957
converted datafile=D:\ORACLE\ORADATA\DBTRANSPORT\SYSAUX.259.609084957
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00004 name=+DG_DATA/ora10g/datafile/users.260.609084973
converted datafile=D:\ORACLE\ORADATA\DBTRANSPORT\USERS.260.609084973
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:07
Run SQL script D:\ORACLE\ORADATA\DBTRANSPORT\TRANSPORT.SQL on the target platform to create database
Edit init.ora file D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00I92IKQ_1_0.ORA. This PFILE will be used to create
the database on the target platform
To recompile all PL/SQL modules, run utlirp.sql and utlrp.sql on the target platform
To change the internal database identifier, use DBNEWID Utility
Finished backup at 02-FEB-07
 
Check the output related to the transport script and the parameter file for the new database at the end above. When CONVERT DATABASE completes, the source database may be opened read-write again.
 
5) Now copy the above files to the destination host. i.e. the converted datafiles, transport.sql script and the pfile generated.
 
6) The PFILE generated by RMAN will have following sections:
 
a) Parameters that need to be changed for the destination host environment
b) Other parameters which are same as the source database parameters
 
Edit the PFILE moved on the destination host to change the environment specific parameters.
 
7) Now edit the TRANSPORT sql script to reflect the new path for datafiles in the CREATE CONTROLFILE section of the script. Also change all references to the INIT.ORA in the script to the new path and name of the INIT.ORA modified above.
 
8) Once the PFILE and TRANSPORT sql scripts are suitably modified invoke SQLPLUS on the destination host after setting the Oracle environment parameters and then run TRANSPORT.sql as:
[oracle@test-br ora10g]$ export ORACLE_HOME=/u01/oracle/product/ora10g
[oracle@test-br ora10g]$ export ORACLE_SID=LinDB10g
[oracle@test-br ora10g]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@test-br ora10g]$ cd /u01/oracle/oradata/LinDB10g
[oracle@test-br LinDB10g]$ sqlplus "/ as sysdba" 
 
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Feb 3 01:55:46 2007
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> @TRANSPORT.SQL
ORACLE instance started.
 
Total System Global Area  201326592 bytes
Fixed Size                  1218484 bytes
Variable Size              67110988 bytes
Database Buffers          125829120 bytes
Redo Buffers                7168000 bytes
 
Control file created.
 
Database altered.
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Your database has been created successfully!
* There are many things to think about for the new database. Here
* is a checklist to help you stay on track:
* 1. You may want to redefine the location of the directory objects.
* 2. You may want to change the internal database identifier (DBID)
*    or the global database name for this database. Use the
*    NEWDBID Utility (nid).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Database closed.
Database dismounted.
ORACLE instance shut down.
ORACLE instance started.
 
Total System Global Area  201326592 bytes
Fixed Size                  1218484 bytes
Variable Size              67110988 bytes
Database Buffers          125829120 bytes
Redo Buffers                7168000 bytes
Database mounted.
Database opened.
 
...
...
...
 
SQL> select COUNT(*) "ERRORS DURING RECOMPILATION" from utl_recomp_errors;
 
ERRORS DURING RECOMPILATION
---------------------------
0
 
SQL>
SQL>
SQL> Rem =====================================================================
SQL> Rem Run component validation procedure
SQL> Rem =====================================================================
SQL>
SQL> SET serveroutput on
SQL> EXECUTE dbms_registry_sys.validate_components;
 
PL/SQL procedure successfully completed.
 
SQL> SET serveroutput off
SQL>
SQL>
SQL> Rem ===========================================================================
SQL> Rem END utlrp.sql
SQL> Rem ===========================================================================
SQL> set feedback 6;
SQL>
SQL> select name, open_mode from v$database;
 
NAME      OPEN_MODE
--------- ----------
LINDB10G  READ WRITE
 
When the transport script finishes, the creation of the new database is complete.
References
 
NOTE:243304.1 - 10g : Transportable Tablespaces Across Different Platforms
Oracle® Database Backup and Recovery Advanced User's Guide 10g Release 2 (10.2)
NOTE:414878.1 - Cross-Platform Migration on Destination Host Using Rman Convert Database
 
Show Related Information Related
 
Products
 
    Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition
 
Keywords
TRANSPORTABLE; DATABASE MIGRATION; V$TRANSPORTABLE_PLATFORM; V$TRANSPORTABLE_PLATFORM

Viewing all articles
Browse latest Browse all 16

Trending Articles