Saturday, July 8, 2017

Oracle 12c R2 upgrade dbua ORA-00837

Introduction

Oracle 12c R2 base release (12.2.0.1) supports direct upgrade from Oracle 11.2.0.3, 12.1.0.1 and 12.1.0.2 respectively.

While we were performing a non-CDB database upgrade from 12.1.0.2 to 12.2.0.1, we were facing the ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET error during the Pre Upgrade step. Our database name is CORPDB and when we checked the parameter values, the MEMORY_TARGET value was 800 MB and it is less than the value of MEMORY_MAX_TARGET which is 1000 MB. But we were still facing this error.




Solution

1) Open the /u01/app/oracle/cfgtoollogs/CORPDB/preupgrade/preupgrade.log
2) Search for memory_target inside this log file.
3) You will notice that the 12.2.0.1.0 minimum value for memory_target* parameters is 1535115264. (value in bytes)

4) Abort the upgrade. Close the dbua program by clicking on the Abort button.
5) Now set the MEMORY_TARGET and MEMORY_MAX_TARGET initialization parameter values to a minimum of 1500 MB and restart the upgrade candidate database (CORPDB in this case.)
6) Launch the dbua tool again and you will notice that the Pre Upgrade Step is completed successfully.


Conclusion

The minimum size of 1500 MB for memory_target* parameters seems to be only a requirement while upgrading from Oracle 12c R1 to 12c R2. If you create a new 12c R2 database directly using the dbca tool (Database Configuration Assistant), then this requirement does not apply. We were able to create a new database using just 1000 MB for memory_target (Automated Memory Management). This unique requirement while performing the database upgrade is surprising and it is not documented in the Oracle 12c R2 upgrade guide.