I've recently upgraded my database software from Oracle 11.2.0.4 to Oracle 12c, it was a clean without any instances or database on it. The machine is Windows Server R2 2012.
The process itself was: Install Oracle 11.2.0.4 and upgrade (software only) to Oracle 12c. At no point did I install any schemes, just upgraded the software.
When I try to execute the following script (after the upgrade) I get the following error:
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK
WHENEVER OSERROR EXIT FAILURE ROLLBACK
-- PARAMS:
define NN_ORA_INSTALL_DIR = &1;
define ORACLE_SID = &2;
define ORACLE_SYS_BASE = &3;
define ORACLE_HOME = &4;
define SYSPASS = &5;
connect SYS/&SYSPASS as SYSDBA
set echo on;
spool &NN_ORA_INSTALL_DIR\rmanRestoreDatafiles.log
startup nomount;
set echo off;
set serveroutput on;
select TO_CHAR(systimestamp,'YYYYMMDD HH:MI:SS') from dual;
variable devicename varchar2(255);
declare
omfname varchar2(512) := NULL;
done boolean;
begin
dbms_output.put_line(' ');
dbms_output.put_line(' Allocating device.... ');
dbms_output.put_line(' Specifying datafiles... ');
:devicename := dbms_backup_restore.deviceAllocate;
dbms_output.put_line(' Specifing datafiles... ');
dbms_backup_restore.restoreSetDataFile;
dbms_backup_restore.restoreDataFileTo(1, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\SYSTEM01.DBF', 0, 'SYSTEM');
dbms_backup_restore.restoreDataFileTo(2, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\SYSAUX01.DBF', 0, 'SYSAUX');
dbms_backup_restore.restoreDataFileTo(3, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\UNDOTBS01.DBF', 0, 'UNDOTBS1');
dbms_backup_restore.restoreDataFileTo(4, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\USERS01.DBF', 0, 'USERS');
dbms_output.put_line(' Restoring ... ');
dbms_backup_restore.restoreBackupPiece('&ORACLE_HOME\assistants\dbca\templates\Seed_Database.dfb', done);
if done then
dbms_output.put_line(' Restore done.');
else
dbms_output.put_line(' ORA-XXXX: Restore failed ');
end if;
dbms_backup_restore.deviceDeallocate;
end;
/
select TO_CHAR(systimestamp,'YYYYMMDD HH:MI:SS') from dual;
spool off;
exit;
But I get the following error:
Allocating device....
Specifying datafiles...
Specifing datafiles...
Restoring ...
declare
*
ERROR at line 1:
ORA-19583: conversation terminated due to error
ORA-19870: error while restoring backup piece
C:\ORACLE\ORA12\ASSISTANTS\DBCA\TEMPLATES\SEED_DATABASE.DFB
ORA-19615: some files not found in backup set
ORA-19613: datafile 2 not found in backup set
ORA-06512: at "SYS.X$DBMS_BACKUP_RESTORE", line 6138
ORA-06512: at line 16
I has worked successfully in multiple Oracle 11 version upgrades.
How can I possibly resolve this? Thanks in advance.
Found the issue, the number for each data-file were changed in Oracle12.
dbms_backup_restore.restoreDataFileTo(1, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\SYSTEM01.DBF', 0, 'SYSTEM');
dbms_backup_restore.restoreDataFileTo(2, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\SYSAUX01.DBF', 0, 'SYSAUX');
dbms_backup_restore.restoreDataFileTo(3, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\UNDOTBS01.DBF', 0, 'UNDOTBS1');
dbms_backup_restore.restoreDataFileTo(4, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\USERS01.DBF', 0, 'USERS');
Should be:
dbms_backup_restore.restoreDataFileTo(1, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\SYSTEM01.DBF', 0, 'SYSTEM');
dbms_backup_restore.restoreDataFileTo(3, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\SYSAUX01.DBF', 0, 'SYSAUX');
dbms_backup_restore.restoreDataFileTo(5, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\UNDOTBS01.DBF', 0, 'UNDOTBS1');
dbms_backup_restore.restoreDataFileTo(6, '&ORACLE_SYS_BASE\oradata\&ORACLE_SID\USERS01.DBF', 0, 'USERS');