Issue with 2k and 4k db_block_size – ORA-1450 when upgrading to Oracle 12.2.0.1

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

Please apply the one-off patch 24714096/25976885 (backport on top of 12.2.0.1 for bug 24714096 (HIT ORA-01450 WHEN UPGRADE SI DB FROM 11204 TO 12.2 WITH DB_BLOCK_SIZE 2K).

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

Please see MOS Note: 2268981.1 (DB Upgrade to 12.2.0.1 fails with Error ORA-01450: Maximum Key Length (3118) Exceeded – create unique index i_radm_pe1 on sys.radm_pe$(pe_name)

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.

6 thoughts on “Issue with 2k and 4k db_block_size – ORA-1450 when upgrading to Oracle 12.2.0.1

    • 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

  1. 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?

    • 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

Leave a Reply

Your email address will not be published. Required fields are marked *