Recently we got alerted by a customer and a colleague from Italy about an issue with the upgrade from Oracle 12.1.0.x to Oracle 12.2.0.1 if – and only if – your database got created with 2k or 4k db block size.
Problem
If your database got created with 2k or 4k db block size, and you attempt an upgrade from any upgrade-supported Oracle version to Oracle Database 12.2.0.1 the upgrade – regardless of DBUA or catctl.pl – will fail with an ORA-1450: maximum key length (1478) exceeded
.
Analysis
In the catupgrd0.log
– regardless of using the DBUA or the command line upgrade with catctl.pl – you’ll get the following error pattern:
SQL> create unique index i_radm_pe1 on sys.radm_pe$(pe_name) 2 / create unique index i_radm_pe1 on sys.radm_pe$(pe_name) * ERROR at line 1: ORA-01450: maximum key length (1478) exceeded SQL> create index i_radm_pe2 on sys.radm_pe$(pe_obj#, pe_name) 2 / create index i_radm_pe2 on sys.radm_pe$(pe_obj#, pe_name) * ERROR at line 1: ORA-01450: maximum key length (1478) exceeded
Solution
You may verify your current database block size with this queries:
SQL> show parameter db_block_size NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_block_size integer 8192 SQL> select TABLESPACE_NAME, BLOCK_SIZE from DBA_TABLESPACES order by 2; TABLESPACE_NAME BLOCK_SIZE ------------------------------ ---------- SYSTEM 8192 SYSAUX 8192 USERS 8192 TEMP 8192 UNDOTBS1 8192
Further Information
Sorry for the inconvenience – and thanks to Francesco for logging the issue and to Alessandro for alerting our team.
–Mike
PS: Based on feedback by several people I did update this blog post – it hits everybody upgrading to Oracle 12.2.0.1 with db_block_size 2k and 4k. And it happens regardless of the (supported for direct upgrade) source version.
Hi,
what about upgrading from 11.2 , same problem with 2k block size ?
//Curt
Curt,
you are the 2nd one reporting this issue with 11.2.0.4 as source. It “could” apply as well – please try the patch and let me know.
Cheers
Mike
Just ran into this problem, but the db (before upgrade version was 11.2.0.4) I was trying to upgrade has 4k block size….
SQL> show parameter db_block_size;
NAME TYPE VALUE
———————————— ———– ——————————
db_block_size integer 4096
I think I will try to install this patch. Is it ok to re-run catctl.pl or I would be better off restoring the db from backup and start upgrade again?
John,
you can always rerun catctl.pl – if it failed in a particular phase you can start if with the -R option – please see here:
https://mikedietrichde.com/2017/01/24/restarting-a-failed-database-upgrade-with-catctl-pl/
Cheers
Mike
It happens with block size < 8192.
–alessandro
Ciao Alessandro,
you are right (please don’t say now “as always” π ) . It happens with 2k and 4k DB_BLOCK_SIZE and regardless of the version you are (supported) upgrading from. I changed the post.
Grazie!
Mike