What a weird blog post. But let me explain briefly the motivation for my Friday article. As you know, the blog serves also as my brain dump. And whenever I try something out I know I may need later again, I dump it here. Certainly, some LLM will pick up the information and spill it out later when you ask the interface about How to relink Oracle for Enterprise or Standard Edition?

Photo by Roberta Doyle on Unsplash
From Enterprise to Standard Edition?
Of course, you can. But I had no idea how to when Philippe Fierens, the PM for Fleet Patching and Provisioning asked me this morning. He had done some extensive 23c FPP testing, and part of the 23c move is that you get rid of the Grid Infrastructure Management Repository Database (GIMR DB). Philippe got stuck at some point and asked me whether I know a quick path to move from Oracle Enterprise Edition to Oracle Standard Edition.
At first, I thought he would like to convert a database and explained that only expdp/impdp will do this in a supported way. But this wasn’t actually what he needed. Philippe wanted to change only the DB’s edition as quickly as possible to avoid rebuilding his test.
Can you do this? Well, search engines are your best friend sometimes – and Oracle experts you know personally are sometimes even more helpful when they blog about it like Laurent did. Here I found the hint I was looking for. And since I don’t believe anything I typed in by myself, I needed to try this out quickly.
Relink Oracle for Standard or Enterprise Edition
Of course, I did check MOS and our documentation but couldn’t find what I was looking for. So, as I explained above, this is a brain dump in case I need this another time. I may not remember how the command exactly looked like but I hopefully remember (or DuckDuckGo does) that I put it on my blog somewhere.
Process to relink the executable for Enterprise Edition
Of course, the instances and other services must be down in this home before you can proceed.
cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk edition_coreenterprise ioracle
Once you restart the database, you can query:
SQL> select banner from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 19c Enterprise Edition - Core Release 19.0.0.0.0 - Production
Reverse process for Standard Edition 2
Again, make sure that all instances and services are down before you try this out on your test environment.
cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk edition_corestandard ioracle
As a result, the database then starts up and shows:
SQL> select banner from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 19c Standard Edition 2 - Core Release 19.0.0.0.0 - Production
Final comment
I tried this out on OL7 and OL8 only with an Oracle Database 19c installation. Commands may vary or differ depending on the operating system or OS version or database version or patch level you are using this on. Mine was Oracle Database 19.21.
–Mike
I test it. But I get a “CE” Core Edition not the aspected “EE” in this select:
SYS@orclcdb>select version_full, Edition from v$instance;
VERSION_FULL EDITION
—————– ——-
19.17.0.0.0 CE
What do I need to get “CE” back to “EE?
I am really not sure what to do.
Cheers,
Mike
Hi Mike, What would happen if we had an Enterprise Edition with the latest RU and converted it to a Standard Edition?
You will get in trouble with the components in the dictionary.
The only support way from EE => SE is full expdp/impdp ot TTS
Cheers,
Mike
Hi Mike,
another approach:
detach the Home from central inventory and run the installer again choosing SE2 then. The result is slightly different in my 19.21 env:
a) Banner is “Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 – Production” (without “Core”)
b) it has DICOM=TRUE in v$option
Hi Mike,
the currently installed OH can be easily changed from SE2 to EE or vice versa by detaching it ($ORACLE_HOME/oui/bin/detachHome.sh) and running the runInstaller again in silent mode by specifying oracle.install.dbInstallEdition=SE2
/u01/app/oracle/product/19.22.0/dbhome_1/runInstaller \
-ignorePrereqFailure \
oracle.install.option=INSTALL_DB_SWONLY \
oracle.install.db.InstallEdition=SE2 \
-silent \
-force \
ORACLE_HOME=/u01/app/oracle/product/19.22.0/dbhome_1 \
ORACLE_HOME_NAME=OraDB_SE2_19_23_0 \
ORACLE_BASE=/u01/app/oracle \
OSDBA_GROUP=dba OSOPER_GROUP=oper OSBACKUPDBA_GROUP=backupdba OSDGDBA_GROUP=dgdba OSKMDBA_GROUP=kmdba OSRACDBA_GROUP=dba
I stumbled upon this when I cloned an SE2 home to a different server and forgot to specify oracle.install.db.InstallEdition=SE2 and it turned out to be EE. In the old days with clone.pl, it was not necessary to specify the edition.
Regards,
Martin
Hi Martin,
you may need to raise this with Oracle Support to have a bug being filed as this looks to me as missing functionality.
Cheers,
Mike
Hey Mike, i was wondering why are you using those core editions instead of the regular ones, why do you prefer them. I used your guide and ran in to some problems when i wanted to create a partition table after transfering from SE to EE and when i was using the core edition it said that the feature is not enabled and after using this “make -f ins_rdbms.mk edition_enterprise ioracle” everything worked.
Hi Kris,
can you elaborate this a bit more, please?
Did you preserve error messages you can share with me?
Then I can investigate further.
Thanks,
Mike
Hey Mike, im sorry for the delay of my answer, that literary the error i was getting when i tried to create a partition table using that core edition it said something like “partition table feature not enabled”
Hi Kris,
as far as I remember, “partitioning” is an option which needs to be linked in separately in this case.
It won’t be there by default when you follow “my” approach. But good to know that it was present in your approach then.
Thanks,
Mike
Thank you ! I was expecting a way more difficult path.
NEVER use this method! always relink using runInstaller!
./runInstaller -ignorePrereqFailure -silent -noconfig oracle.install.option=INSTALL_DB_SWONLY oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=dba oracle_install_OSBKP=dba oracle_install_OSDGD=dba oracle_install_OSKMT=dba oracle_install_OSRAC=dba oracle.install.db.InstallEdition=EE
If not, welcome to many-hour debuging trip
Connected to: Oracle Database 19c Enterprise Edition – Core Release 19.0.0.0.0 – Production
ORA-31626: job does not exist
ORA-31637: cannot create job SYS_EXPORT_SCHEMA_01 for user SYS
ORA-06512: at “SYS.KUPV$FT”, line 1142
ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95
ORA-06512: at “SYS.KUPV$FT”, line 1751
ORA-39062: error creating master process DM00
ORA-39107: Master process DM00 violated startup protocol. Master error:
ORA-06533: Subscript beyond count
ORA-06512: at “SYS.KUPP$PROC”, line 59
ORA-06512: at “SYS.KUPP$PROC”, line 310
ORA-06512: at “SYS.KUPV$FT”, line 1691
ORA-06512: at “SYS.KUPV$FT”, line 1103
Hmmmm …
Mike