I have been working on upgrading a 10.2.0.3 database to 11g for a few weeks now. It is RAC so requires some groundwork before doing the actual RDBMS upgrade, but I’m finding an interesting issue when running the catupgrd.sql script against my database.
The system I’m upgrading has Oracle Application Express installed:
sql> select comp_id, comp_name, version, status from dba_registry where comp_id='APEX'; COMP_ID COMP_NAME VERSION STATUS ------------- --------------------------- ----------- ------- APEX Oracle Application Express 2.2.1.00.04 VALID
When you upgrade to 11g APEX is installed by default, but if you already have a version of it, it will attempt to upgrade this version to 3.0.1. When I run catupgrd.sql script everything seems to be happy and going along fine until:
Thank you for installing Oracle Application Express.
Oracle Application Express is installed in the FLOWS_030000 schema.
.
.
– Now beginning upgrade. This will take several minutes.——-
– Ensuring template names are unique ——-
– Migrating metadata to new schema ——-
ERROR:
ORA-03114: not connected to ORACLE
ERROR:
ORA-03114: not connected to ORACLE
.
.
At this point the catupgrd.sql script has bombed out and nothing further in the upgrade gets successfully run against the database. Digging a little deeper we can see an ORA-07745 has been thrown:
ORA-07445: exception encountered: core dump [pfrxca()+65] [SIGSEGV] [ADDR:0x10] [PC:0x719A6F1] [Address not mapped to object] []
I’m not too sure how relevant this is, but there is a bug visible in metalink related to pfrxca: 4176171:
A dump can occur in pfrxca if a PLSQL object gets invalidated while it is being loaded into cache.
Apex is left in the following state:
sql> select comp_id, comp_name, version, status from dba_registry where comp_id='APEX'; COMP_ID COMP_NAME VERSION STATUS ------------- --------------------------- ----------- ------- APEX Oracle Application Express 2.2.1.00.04 UPGRADING
I have been able to reproduce this every time with clones of the database I want to upgrade. Oracle actually advised trying to upgrade APEX first by downloading it independently and then subsequently perform the database upgrade. I was quite surprised when the standalone upgrade to APEX 3.0.1 went and worked flawlessly. During the database upgrade process the same coreins.sql script is called as during the standalone APEX upgrade!
Of course performing the database upgrade with an already upgraded APEX also then ran smoothly without incident. I feel I should point out that in the SR I raised the support analyst did claim that he was able to upgrade to 11g without encountering this issue, whether he was testing with the exact version of APEX that I originally had, and with RAC was not apparent. I know I can reproduce this problem at will.
It would seem to me that in my system (I have reproduced this on various different servers, but all running 10.2.0.3 on RHEL 4 x86-64) something is becoming invalid during the upgrade and that APEX is not liking it. Yet another example of the fact that you cannot test enough, and to never, ever take anything for granted. Every Oracle system is unique!