Wednesday, March 2, 2016

How To Restore 10g RMAN Backup to 11g

The steps for 10g database:


1- Run the utlu112i.sql Pre-upgrade script. You can find this script under @$ORACLE_HOME/rdbms/admin/.
It must be copied from the 11g database software.



SQL> @$ORACLE_HOME/rdbms/admin/utlu112i.sql

SQL> select version from v$timezone_file;

and do the following steps


SQL> ALTER TABLE registry$database ADD (tz_version NUMBER);

SQL> UPDATE registry$database set tz_version =4;

SQL> ALTER  PACKAGE "SYS"."DBMS_REGISTRY"  COMPILE BODY;

SQL> ALTER VIEW "SYS"."DBA_REGISTRY_DATABASE"  COMPILE;


Step :2

Now connect to 10g and take RMAN full backup


[oracle@Tetsdby ~]$ rman  target /

RMAN> backup as backupset database;


The below steps for 11g database:



Step :3

Now copy backupfiles 10g to 11g database server


Create temporary pfile in $ORACLE_HOME/dbs


[oracle@testdb dbs]$ vi  inittestdb.ora
testdb.__db_cache_size=360710144
testdb.__java_pool_size=33554432
testdb.__large_pool_size=33554432
testdb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
testdb.__pga_aggregate_target=1073741824
testdb.__sga_target=1073741824
testdb.__shared_io_pool_size=0
testdb.__shared_pool_size=415236096
testdb.__streams_pool_size=8388608
*._system_trig_enabled=FALSE
*.aq_tm_processes=2
*.audit_file_dest='/u01/testdb/adump'
*.audit_trail='db'
*.compatible='11.2.0'
*.control_files='/u01/testdb/ora_control1.ctl','/u01/testdb/ora_control2.ctl'
*.cursor_sharing='SIMILAR'
*.db_block_size=8192
*.db_domain=''
*.db_name='testdb'
*.db_recovery_file_dest='/u01/testdb/flash_recovery_area'
*.db_recovery_file_dest_size=2G
*.db_recycle_cache_size=209715200
*.diagnostic_dest='/u01/testdb/diag'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testdb)'
*.fast_start_mttr_target=2000
*.java_pool_size=33554432
*.job_queue_processes=10
*.large_pool_size=33554432
*.log_archive_dest_1='LOCATION=/testdb/archv'
*.log_checkpoint_interval=10000
*.memory_target=2G
*.open_cursors=1000
*.optimizer_index_caching=90
*.optimizer_mode='FIRST_ROWS'
*.pga_aggregate_target=838860800
*.processes=500
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_limit=TRUE
*.session_cached_cursors=1000
*.sessions=555
*.sga_max_size=1073741824
*.transactions=600
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS2'

and database startup nomount stage


[oracle@Tetsdby ~]$ rman  target /

RMAN> startup nomount;


Restore control file backup

RMAN> restore controlfile from ‘/u01/backup/rman/testdb/c-3532288055-20160227-00’;


Now Open the database

RMAN> alter database mount;



RMAN> catalog start with ‘/u01/backup/rman/testdb/backup’;

RMAN> catalog start with ‘/u01/backup/rman/testdb/archive’;


RMAN> run
{
allocate channel c1 device type disk;
SET NEWNAME FOR DATAFILE 1 TO ‘/u01’;
SET NEWNAME FOR DATAFILE 2 TO ‘/u02’;
SET NEWNAME FOR DATAFILE 3 TO ‘/u03’;
SET NEWNAME FOR DATAFILE 4 TO ‘/u04’;
restore database until sequence 6;
switch datafile all;
recover database until sequence 6;
}



Open the database with RESETLOGS UPGRADE.


[oracle@Tetsdby ~]$  sqlplus / as sysdba


SQL> alter database open resetlogs upgrade;


Step :4


Run the upgrade script.

SQL> SPOOL upgrade.log

SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql

SQL> SPOOL off

Step :5

If 10g and 11g same platform no problem otherwise need to run the below script


SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP UPGRADE

SQL> SPOOL migrate.log

SQL> @$ORACLE_HOME/rdbms/admin/utlmmig.sql

        SQL> SPOOL off
     
     
       SQL> SHUTDOWN IMMEDIATE
     
       SQL> STARTUP
     
     
Step :6

       SQL> @$ORACLE_HOME/rdbms/admin/utlu112s.sql
     
       The above scriop for pos-upgrade script
     
Step :7

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql


The above script for  compile invalid objects



No comments:

Post a Comment