Removing Options from the Oracle Database kernel in 12c

Remove Options from the Oracle Database Kernel - chopt

Sometimes people have the desire to remove options from the database kernel (i.e. from the oracle executable).

It’s a matter of fact that by default you’ll get plenty of things linked into your kernel in Oracle Database 12c.

In case you’d like to remove things the chopt utility does still exist in Oracle Database 12c – but you may recognize a difference between Oracle 11.2 and Oracle 12.1. Anyhow, ideally you’ll do these changes before you create a database directly after the installation has been completed. See the documentation for Post Installation Tasks first:

Now let’s call chopt and see what it tells us on the command prompt:

$ chopt
    chopt <enable|disable> <option>

             dm = Oracle Data Mining RDBMS Files
           olap = Oracle OLAP
   partitioning = Oracle Partitioning
            rat = Oracle Real Application Testing
   e.g. chopt enable rat

For a first try I’m unlinking Data Mining:

$ chopt disable dm
Writing to /u01/app/oracle/product/
/usr/bin/make -f /u01/app/oracle/product/ dm_off ORACLE_HOME=/u01/app/oracle/product/
/usr/bin/make -f /u01/app/oracle/product/ ioracle ORACLE_HOME=/u01/app/oracle/product/

I tested all the 4 available chopt options and this is the result when you exit SQL*Plus afterwards:

SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release - 64bit Production

versus before with all options still linked into the kernel:

SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

But how about all the other options being available in releases
before Oracle Database 12c, such as: lbac_on|off (Label Security), dv_on|off (Database Vault)? If you’d refer to the list of options to link on/off published by Ghokan Atil years back in his blog you may find more things to try out.

Lets give it a try with Label Security:

$ /usr/bin/make -f /u01/app/oracle/product/ lbac_off ORACLE_HOME=/u01/app/oracle/product/
lbac_off has been deprecated

Ah, very smart šŸ˜‰ It signals that you can’t link those things off anymore. The same would happen with dv_off.

And how about things which are from older sources, such as Spatial Data (sdo_on|off)?

$ /usr/bin/make -f /u01/app/oracle/product/ sdo_off ORACLE_HOME=/u01/app/oracle/product/
Warning: sdo is always turned on. sdo_off is disabled

In this case it would be simple: You’d take out SDO from the
components inside the database – and there’s no need to unlink anything.

But months later I learned that there’s in fact an option you can unlink (It’s linked in by default): JOX, the JavaVM JIT Compiler option.

$ cd $ORACLE_HOME/rdbms/lib
$ /usr/bin/make -fĀ /u01/app/oracle/product/ jox_off ioracle

Please find the related blog post here:


Share this: