There is a great new feature related to the 12c database. The feature that will resolve a lot of problems with migrating databases between endian formats. And thanks to our new partner – Omnitec, who agreed to share with their SPARC resources – I will be able to demonstrate you this powerful solution.
Oracle has prepared a perl scripts presented in metalink note 1389592.1 to perform a migration from big endian to little endian (for example from Solaris SPARC to Exadata).
To reduce the amount of downtime required for XTTS, Oracle has enhanced RMAN’s ability to roll forward datafile copies using incremental backups, to work in a crossplatform scenario. By using a series of incremental backups, each smaller than the last, the data at the destination system can be brought almost current with the source system, before any downtime is required. The downtime required for datafile transfer and convert when combining XTTS with Cross Platform Incremental Backup is now proportional to the rate of data block changes in the source system.
In this article I will show you how to combine the full transportable option with incremental backup convertion to perform a nice and quite quick migration from database 11.2.0.4 (Solaris SPARC) to 12.1.0.2 (Solaris x86_64)
I have prepared my own bash scripts to help with this process.
You can download them from here:
http://www.ora-600.pl/oinstall/migrate.tar.bz2
At first, I will set appropriate parameters in my properties file on the source (11.2.0.4 SPARC):
oracle@ldom01:~/migrate$ cat migrate.properties ## parallel degree on source platform src_parallel_degree=2 ## backup destination on source platform src_backup_dest=/u01/app/oracle/bkp ## source platform name src_platform_name='Solaris[tm] OE (64-bit)' ## backup destination on the target platform target_backup_dest=/export/home/oracle/bkp ## datafile destination directory on the target platform target_datafile_dest=/u01/app/oracle/oracle/skiper ## parallel degree on target platform target_parallel_degree=2
Now, let’s create level 0 backup of all non system tablespaces (11.2.0.4 SPARC):
oracle@ldom01:~/migrate$ ./prepare_backup0.sh run { allocate channel c1 device type disk; allocate channel c2 device type disk; backup as compressed backupset incremental level 0 datafile 5 format '/u01/app/oracle/bkp/example01_2015.04.09_14.18.18'; backup as compressed backupset incremental level 0 datafile 4 format '/u01/app/oracle/bkp/users01_2015.04.09_14.18.18'; } run { allocate channel c1 device type disk; allocate channel c2 device type disk; restore from platform 'Solaris[tm] OE (64-bit)' foreign datafile 5 format '/u01/app/oracle/oracle/skiper/example01.dbf' from backupset '/export/home/oracle/bkp/example01_2015.04.09_14.18.18'; restore from platform 'Solaris[tm] OE (64-bit)' foreign datafile 4 format '/u01/app/oracle/oracle/skiper/users01.dbf' from backupset '/export/home/oracle/bkp/users01_2015.04.09_14.18.18'; } Recovery Manager: Release 11.2.0.4.0 - Production on Thu Apr 9 14:18:18 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: SKIPER (DBID=2999793859) RMAN> run { 2> allocate channel c1 device type disk; 3> allocate channel c2 device type disk; 4> backup as compressed backupset incremental level 0 datafile 5 format '/u01/app/oracle/bkp/example01_2015.04.09_14.18.18'; 5> backup as compressed backupset incremental level 0 datafile 4 format '/u01/app/oracle/bkp/users01_2015.04.09_14.18.18'; 6> } 7> using target database control file instead of recovery catalog allocated channel: c1 channel c1: SID=20 device type=DISK allocated channel: c2 channel c2: SID=144 device type=DISK Starting backup at 09-APR-15 channel c1: starting compressed incremental level 0 datafile backup set channel c1: specifying datafile(s) in backup set input datafile file number=00005 name=/u01/app/oracle/oradata/skiper/example01.dbf channel c1: starting piece 1 at 09-APR-15 channel c1: finished piece 1 at 09-APR-15 piece handle=/u01/app/oracle/bkp/example01_2015.04.09_14.18.18 tag=TAG20150409T141820 comment=NONE channel c1: backup set complete, elapsed time: 00:00:07 Finished backup at 09-APR-15 Starting backup at 09-APR-15 channel c1: starting compressed incremental level 0 datafile backup set channel c1: specifying datafile(s) in backup set input datafile file number=00004 name=/u01/app/oracle/oradata/skiper/users01.dbf channel c1: starting piece 1 at 09-APR-15 channel c1: finished piece 1 at 09-APR-15 piece handle=/u01/app/oracle/bkp/users01_2015.04.09_14.18.18 tag=TAG20150409T141827 comment=NONE channel c1: backup set complete, elapsed time: 00:00:01 Finished backup at 09-APR-15 released channel: c1 released channel: c2 Recovery Manager complete.
My script has created two files:
- initial_backup.rman
- initial_restore.rman
First one is used to create actual level 0 backupsets for the datafiles.
The second one will be used to restore all datafiles and convert them between endians.
So now let’s copy backupsets and scripts to the target platform (12.1.0.2 x86_64)
oracle@ryba:~$ rsync -e ssh -avz oracle@10.230.9.30:~/migrate . Password: receiving incremental file list migrate/ migrate/initial_backup.rman migrate/initial_restore.rman migrate/migrate.properties migrate/prepare_backup0.sh migrate/prepare_backup1.sh sent 110 bytes received 2,167 bytes 650.57 bytes/sec total size is 5,034 speedup is 2.21 oracle@ryba:~$ rsync -e ssh -avz oracle@10.230.9.30:/u01/app/oracle/bkp . Password: receiving incremental file list bkp/ bkp/example01_2015.04.09_14.18.18 bkp/users01_2015.04.09_14.18.18 sent 53 bytes received 20,698,418 bytes 1,009,681.51 bytes/sec total size is 23,158,784 speedup is 1.12
Now I can perform an initial restore, using provided scripts:
oracle@ryba:~/migrate$ rman target / @initial_restore.rman Recovery Manager: Release 12.1.0.2.0 - Production on Thu Apr 9 17:46:01 2015 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database: SKIPER (DBID=2999750723) RMAN> run { 2> allocate channel c1 device type disk; 3> allocate channel c2 device type disk; 4> restore from platform 'Solaris[tm] OE (64-bit)' foreign datafile 5 format '/u01/app/oracle/oradata/skiper/example01.dbf' from backupset '/export/home/oracle/bkp/example01_2015.04.09_14.18.18'; 5> restore from platform 'Solaris[tm] OE (64-bit)' foreign datafile 4 format '/u01/app/oracle/oradata/skiper/users01.dbf' from backupset '/export/home/oracle/bkp/users01_2015.04.09_14.18.18'; 6> } 7> using target database control file instead of recovery catalog allocated channel: c1 channel c1: SID=8 device type=DISK allocated channel: c2 channel c2: SID=123 device type=DISK Starting restore at 09-APR-15 channel c1: starting datafile backup set restore channel c1: specifying datafile(s) to restore from backup set channel c1: restoring foreign file 00005 channel c1: reading from backup piece /export/home/oracle/bkp/example01_2015.04.09_14.18.18 channel c1: restoring foreign file 5 to /u01/app/oracle/oradata/skiper/example01.dbf channel c1: foreign piece handle=/export/home/oracle/bkp/example01_2015.04.09_14.18.18 channel c1: restored backup piece 1 channel c1: restore complete, elapsed time: 00:00:16 Finished restore at 09-APR-15 Starting restore at 09-APR-15 channel c1: starting datafile backup set restore channel c1: specifying datafile(s) to restore from backup set channel c1: restoring foreign file 00004 channel c1: reading from backup piece /export/home/oracle/bkp/users01_2015.04.09_14.18.18 channel c1: restoring foreign file 4 to /u01/app/oracle/oradata/skiper/users01.dbf channel c1: foreign piece handle=/export/home/oracle/bkp/users01_2015.04.09_14.18.18 channel c1: restored backup piece 1 channel c1: restore complete, elapsed time: 00:00:02 Finished restore at 09-APR-15 released channel: c1 released channel: c2 Recovery Manager complete.
Meanwhile I will do some changes in the source database (11.2.0.4 SPARC):
SQL> alter user hr account unlock identified by hr; User altered. SQL> conn hr/hr Connected. SQL> create view emp_sal4000 as select * from employees where salary>=4000; View created. SQL> update employees 2 set last_name='Dupa' 3 where employee_id=200; 1 row updated. SQL> commit; Commit complete.
And now I will create some incremental backups on the source database (11.2.0.4 SPARC)
oracle@ldom01:~/migrate$ ./prepare_backup1.sh run { allocate channel c1 device type disk; allocate channel c2 device type disk; backup as compressed backupset incremental level 1 datafile 5 format '/u01/app/oracle/bkp/example01_2015.04.09_14.44.25'; backup as compressed backupset incremental level 1 datafile 4 format '/u01/app/oracle/bkp/users01_2015.04.09_14.44.25'; } run { allocate channel c1 device type disk; allocate channel c2 device type disk; recover from platform 'Solaris[tm] OE (64-bit)' foreign datafilecopy '/u01/app/oracle/oradata/skiper/example01.dbf' from backupset '/export/home/oracle/bkp/example01_2015.04.09_14.44.25'; recover from platform 'Solaris[tm] OE (64-bit)' foreign datafilecopy '/u01/app/oracle/oradata/skiper/users01.dbf' from backupset '/export/home/oracle/bkp/users01_2015.04.09_14.44.25'; } Recovery Manager: Release 11.2.0.4.0 - Production on Thu Apr 9 14:44:26 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: SKIPER (DBID=2999793859) RMAN> run { 2> allocate channel c1 device type disk; 3> allocate channel c2 device type disk; 4> backup as compressed backupset incremental level 1 datafile 5 format '/u01/app/oracle/bkp/example01_2015.04.09_14.44.25'; 5> backup as compressed backupset incremental level 1 datafile 4 format '/u01/app/oracle/bkp/users01_2015.04.09_14.44.25'; 6> } 7> using target database control file instead of recovery catalog allocated channel: c1 channel c1: SID=147 device type=DISK allocated channel: c2 channel c2: SID=15 device type=DISK Starting backup at 09-APR-15 channel c1: starting compressed incremental level 1 datafile backup set channel c1: specifying datafile(s) in backup set input datafile file number=00005 name=/u01/app/oracle/oradata/skiper/example01.dbf channel c1: starting piece 1 at 09-APR-15 channel c1: finished piece 1 at 09-APR-15 piece handle=/u01/app/oracle/bkp/example01_2015.04.09_14.44.25 tag=TAG20150409T144428 comment=NONE channel c1: backup set complete, elapsed time: 00:00:01 Finished backup at 09-APR-15 Starting backup at 09-APR-15 channel c1: starting compressed incremental level 1 datafile backup set channel c1: specifying datafile(s) in backup set input datafile file number=00004 name=/u01/app/oracle/oradata/skiper/users01.dbf channel c1: starting piece 1 at 09-APR-15 channel c1: finished piece 1 at 09-APR-15 piece handle=/u01/app/oracle/bkp/users01_2015.04.09_14.44.25 tag=TAG20150409T144429 comment=NONE channel c1: backup set complete, elapsed time: 00:00:01 Finished backup at 09-APR-15 released channel: c1 released channel: c2 Recovery Manager complete.
Please notice that the above script has created files, which will be executed in the proper order by do_recover.sh
oracle@ldom01:~/migrate$ ls -al inc_recover* -rw-r--r-- 1 oracle oinstall 458 Apr 9 14:44 inc_recover1.rman -rw-r--r-- 1 oracle oinstall 458 Apr 9 15:00 inc_recover2.rman -rw-r--r-- 1 oracle oinstall 458 Apr 9 15:00 inc_recover3.rman
Now I will copy the incremental backups and appropriate scripts. After that I will perform a recovery with endian convertion on the target platform (12.1.0.2 x86_64)
oracle@ryba:~$ rsync -e ssh -avz oracle@10.230.9.30:~/migrate . Password: receiving incremental file list migrate/ migrate/do_recover.sh migrate/inc_backup.rman migrate/inc_recover1.rman migrate/inc_recover2.rman migrate/inc_recover3.rman sent 110 bytes received 1,387 bytes 427.71 bytes/sec total size is 6,849 speedup is 4.58 oracle@ryba:~$ rsync -e ssh -avz oracle@10.230.9.30:/u01/app/oracle/bkp . Password: receiving incremental file list bkp/ bkp/example01_2015.04.09_14.44.25 bkp/example01_2015.04.09_15.00.02 bkp/example01_2015.04.09_15.00.11 bkp/users01_2015.04.09_14.44.25 bkp/users01_2015.04.09_15.00.02 bkp/users01_2015.04.09_15.00.11 sent 129 bytes received 3,638 bytes 837.11 bytes/sec total size is 23,404,544 speedup is 6,213.05 oracle@ryba:~$ cd migrate/ oracle@ryba:~/migrate$ ./do_recover.sh Recovery Manager: Release 12.1.0.2.0 - Production on Thu Apr 9 17:59:56 2015 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database: SKIPER (DBID=2999750723) RMAN> run { 2> allocate channel c1 device type disk; 3> allocate channel c2 device type disk; 4> recover from platform 'Solaris[tm] OE (64-bit)' foreign datafilecopy '/u01/app/oracle/oradata/skiper/example01.dbf' from backupset '/export/home/oracle/bkp/example01_2015.04.09_14.44.25'; 5> recover from platform 'Solaris[tm] OE (64-bit)' foreign datafilecopy '/u01/app/oracle/oradata/skiper/users01.dbf' from backupset '/export/home/oracle/bkp/users01_2015.04.09_14.44.25'; 6> } 7> using target database control file instead of recovery catalog allocated channel: c1 channel c1: SID=8 device type=DISK allocated channel: c2 channel c2: SID=123 device type=DISK Starting restore at 09-APR-15 channel c1: starting datafile backup set restore channel c1: specifying datafile(s) to restore from backup set channel c1: restoring foreign file /u01/app/oracle/oradata/skiper/example01.dbf channel c1: reading from backup piece /export/home/oracle/bkp/example01_2015.04.09_14.44.25 channel c1: foreign piece handle=/export/home/oracle/bkp/example01_2015.04.09_14.44.25 channel c1: restored backup piece 1 channel c1: restore complete, elapsed time: 00:00:01 Finished restore at 09-APR-15 Starting restore at 09-APR-15 channel c1: starting datafile backup set restore channel c1: specifying datafile(s) to restore from backup set channel c1: restoring foreign file /u01/app/oracle/oradata/skiper/users01.dbf channel c1: reading from backup piece /export/home/oracle/bkp/users01_2015.04.09_14.44.25 channel c1: foreign piece handle=/export/home/oracle/bkp/users01_2015.04.09_14.44.25 channel c1: restored backup piece 1 channel c1: restore complete, elapsed time: 00:00:01 Finished restore at 09-APR-15 released channel: c1 released channel: c2 Recovery Manager complete.
We are almost done 🙂 Now we have to make tablespaces in READ ONLY mode on the source database (11.2.0.4 SPARC) and create final incremental backups, transfer them to destination platform (12.1.0.2 x86_64) and perform recover.
MAINTENANCE WINDOW STARTS
SOURCE (11.2.0.4 SPARC):
SQL> alter tablespace example read only; Tablespace altered. SQL> alter tablespace users read only; Tablespace altered.
oracle@ldom01:~/migrate$ ./prepare_backup1.sh run { allocate channel c1 device type disk; allocate channel c2 device type disk; backup as compressed backupset incremental level 1 datafile 5 format '/u01/app/oracle/bkp/example01_2015.04.09_15.31.51'; backup as compressed backupset incremental level 1 datafile 4 format '/u01/app/oracle/bkp/users01_2015.04.09_15.31.51'; } (...)
TARGET (12.1.0.2 x86_64)
oracle@ryba:~$ rsync -e ssh -avz oracle@10.230.9.30:/u01/app/oracle/bkp . Password: receiving incremental file list bkp/ bkp/example01_2015.04.09_15.31.51 bkp/users01_2015.04.09_15.31.51 sent 53 bytes received 1,487 bytes 440.00 bytes/sec total size is 23,486,464 speedup is 15,250.95 oracle@ryba:~$ rsync -e ssh -avz oracle@10.230.9.30:~/migrate . Password: receiving incremental file list migrate/ migrate/inc_backup.rman migrate/inc_recover4.rman sent 59 bytes received 806 bytes 247.14 bytes/sec total size is 7,307 speedup is 8.45
oracle@ryba:~/migrate$ ./do_recover.sh Recovery Manager: Release 12.1.0.2.0 - Production on Thu Apr 9 18:24:30 2015 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database: SKIPER (DBID=2999750723) RMAN> run { 2> allocate channel c1 device type disk; 3> allocate channel c2 device type disk; 4> recover from platform 'Solaris[tm] OE (64-bit)' foreign datafilecopy '/u01/app/oracle/oradata/skiper/example01.dbf' from backupset '/export/home/oracle/bkp/example01_2015.04.09_14.44.25'; 5> recover from platform 'Solaris[tm] OE (64-bit)' foreign datafilecopy '/u01/app/oracle/oradata/skiper/users01.dbf' from backupset '/export/home/oracle/bkp/users01_2015.04.09_14.44.25'; 6> } 7> using target database control file instead of recovery catalog allocated channel: c1 channel c1: SID=8 device type=DISK allocated channel: c2 channel c2: SID=123 device type=DISK Starting restore at 09-APR-15 channel c1: starting datafile backup set restore channel c1: specifying datafile(s) to restore from backup set channel c1: restoring foreign file /u01/app/oracle/oradata/skiper/example01.dbf channel c1: reading from backup piece /export/home/oracle/bkp/example01_2015.04.09_14.44.25 released channel: c1 released channel: c2 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of restore command at 04/09/2015 18:24:34 ORA-19870: error while restoring backup piece /export/home/oracle/bkp/example01_2015.04.09_14.44.25 ORA-19639: file /u01/app/oracle/oradata/skiper/example01.dbf is more current than this incremental backup ORA-19642: start SCN of incremental backup is 905115 ORA-19641: backup datafile checkpoint is SCN 906080 time 04/09/2015 14:44:28 ORA-19640: datafile checkpoint is SCN 907114 time 04/09/2015 15:00:13 (...) RMAN> run { 2> allocate channel c1 device type disk; 3> allocate channel c2 device type disk; 4> recover from platform 'Solaris[tm] OE (64-bit)' foreign datafilecopy '/u01/app/oracle/oradata/skiper/example01.dbf' from backupset '/export/home/oracle/bkp/example01_2015.04.09_15.31.51'; 5> recover from platform 'Solaris[tm] OE (64-bit)' foreign datafilecopy '/u01/app/oracle/oradata/skiper/users01.dbf' from backupset '/export/home/oracle/bkp/users01_2015.04.09_15.31.51'; 6> } 7> using target database control file instead of recovery catalog allocated channel: c1 channel c1: SID=8 device type=DISK allocated channel: c2 channel c2: SID=123 device type=DISK Starting restore at 09-APR-15 channel c1: starting datafile backup set restore channel c1: specifying datafile(s) to restore from backup set channel c1: restoring foreign file /u01/app/oracle/oradata/skiper/example01.dbf channel c1: reading from backup piece /export/home/oracle/bkp/example01_2015.04.09_15.31.51 channel c1: foreign piece handle=/export/home/oracle/bkp/example01_2015.04.09_15.31.51 channel c1: restored backup piece 1 channel c1: restore complete, elapsed time: 00:00:01 Finished restore at 09-APR-15 Starting restore at 09-APR-15 channel c1: starting datafile backup set restore channel c1: specifying datafile(s) to restore from backup set channel c1: restoring foreign file /u01/app/oracle/oradata/skiper/users01.dbf channel c1: reading from backup piece /export/home/oracle/bkp/users01_2015.04.09_15.31.51 channel c1: foreign piece handle=/export/home/oracle/bkp/users01_2015.04.09_15.31.51 channel c1: restored backup piece 1 channel c1: restore complete, elapsed time: 00:00:01 Finished restore at 09-APR-15 released channel: c1 released channel: c2 Recovery Manager complete.
The error messages are caused by the recovery of the data files, using backups which are already applied to those data files. You can safely ignore this error message.
Now I will use the full transportable export/import to finalize the migration. The whole feature is described here:
http://www.oracle.com/technetwork/database/enterprise-edition/full-transportable-wp-12c-1973971.pdf
oracle@ldom01:~$ expdp full=y transportable=always directory=dir_oracle dumpfile=skiper_transport.dmp version=12 exclude=statistics metrics=y logfile=skiper_transport.dmp.log Export: Release 11.2.0.4.0 - Production on Thu Apr 9 15:47:04 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Username: / as sysdba Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Starting "SYS"."SYS_EXPORT_FULL_01": /******** AS SYSDBA full=y transportable=always directory=dir_oracle dumpfile=skiper_transport.dmp version=12 exclude=statistics metrics=y logfile=skiper_transport.dmp.log Startup took 2 seconds Estimate in progress using BLOCKS method... (...) ****************************************************************************** Dump file set for SYS.SYS_EXPORT_FULL_01 is: /export/home/oracle/skiper_transport.dmp ****************************************************************************** Datafiles required for transportable tablespace EXAMPLE: /u01/app/oracle/oradata/skiper/example01.dbf Datafiles required for transportable tablespace USERS: /u01/app/oracle/oradata/skiper/users01.dbf Job "SYS"."SYS_EXPORT_FULL_01" completed with 2 error(s) at Thu Apr 9 15:54:10 2015 elapsed 0 00:07:03
So nothing left to do, but importing our metadata on the target system (12.1.0.2 x86_64)
oracle@ryba:~$ impdp directory=dir_oracle dumpfile=skiper_transport.dmp logfile=skiper_transport.dmp.log transport_datafiles='/u01/app/oracle/oradata/skiper/users01.dbf','/u01/app/oracle/oradata/skiper/example01.dbf' metrics=y Import: Release 12.1.0.2.0 - Production on Thu Apr 9 19:05:12 2015 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. Username: / as sysdba Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options Startup took 0 seconds Master table "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded Starting "SYS"."SYS_IMPORT_TRANSPORTABLE_01": /******** AS SYSDBA directory=dir_oracle dumpfile=skiper_transport.dmp logfile=skiper_transport.dmp.log transport_datafiles=/u01/app/oracle/oradata/skiper/users01.dbf,/u01/app/oracle/oradata/skiper/example01.dbf metrics=y Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER ORA-39342: Internal error - failed to import internal objects tagged with DATAPUMP due to ORA-00955: name is already used by an existing object. (...)
You will see a lot of errors while importing but most of them are: "Dependent object type %s skipped, base object type %s already exists" – they can be safely ignored.
Other errors may concern for example an old apex schema like "APEX_030200″. This user can be dropped after the import.
The import messages, that will need your attention and some manual steps, looks like this:
ORA-39139: Data Pump does not support XMLType objects in version "OE"."WAREHOUSES". will be skipped.
The above error can cause dependent problems:
ORA-39112: Dependent object type OBJECT_GRANT:"OE" skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed ORA-39112: Dependent object type OBJECT_GRANT:"OE" skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed ORA-39112: Dependent object type COMMENT skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed ORA-39112: Dependent object type COMMENT skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed ORA-39112: Dependent object type COMMENT skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed ORA-39112: Dependent object type COMMENT skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed ORA-39112: Dependent object type INDEX:"OE"."WAREHOUSES_PK" skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed ORA-39112: Dependent object type INDEX:"OE"."WHS_LOCATION_IX" skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed ORA-39112: Dependent object type CONSTRAINT:"OE"."WAREHOUSES_PK" skipped, base object type TABLE:"OE"."WAREHOUSES" creation failed
Those errors have to be resolved manually.
After the import you will see some compilation problems in the SYSMAN schema. Since this user is no longer present in standard 12c installation, you can safely remove it.
MAINTENANCE WINDOW ENDS