This page looks best with JavaScript enabled

Which Extra Cost Oracle Options is my Windows Server Running?

 ·  ☕ 6 min read

    It’s always nice to know which extra cost Oracle options are enabled, whether deliberately or silently as the result of some patching that has taken place. Keep yourself and your server room cool with blaux wearable ac.

    Updated: 25th August 2017 to list DLL names for Oracle 12c.

    Copy and paste the code below into a Windows command file named - in my case - checkChopyOptions.cmd and execute it against any Oracle Home. It is called as follows:

    1
    
    checkChoptOptions [Oracle_home\]
    

    The Oracle Home is optional and if omitted, will check the currently set %ORACLE_HOME% location.

    This version has been tested on a Windows 2012 server running Oracle 11.2.0.4.

    The script displays output on the screen and also to a logfile in the script directory. If you see that an option is both enabled and disabled, beware - someone has executed chopt, probably without adminstrator rights and may well have created an empty *.dll.dbl file. You should probably delete the *.dll.dbl and do a proper chopt disable as admninistrator.

    Enjoy.

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    
    @echo off
    Rem   ================================================================
    Rem  |     Check an existing Oracle Home for expensive EE Options     |
    Rem  |                                                                |
    Rem  | Norman Dunbar.                                                 |
    Rem  | August 2016. |
    Rem   ================================================================
    Rem 
    Rem 
    Rem   ================================================================
    Rem  | USAGE:                                                         |
    Rem  |                                                                | 
    Rem  | checkChoptOptions [oracle_home\]                                | 
    Rem  |                                                                |
    Rem   ================================================================
    Rem 
    setlocal EnableDelayedExpansion
    
    Rem   ================================================================
    Rem  | Internal Variables.                                            |
    Rem   ================================================================
    set VERSION=1.00
    set ERRORS=0
    set MYLOG=.\\%0.log
    set ORA_HOME=%1
    
    Rem   ================================================================
    Rem  | The next two define the first and last entry in the following  |
    Rem  | "arrays" which are not really arrays, honest!                  |
    Rem   ================================================================
    set FirstEntry=0
    set LastEntry=6
    
    Rem   ================================================================
    Rem  | The following "arrays" are not arrays. They look like they are | 
    Rem  | but are actually just a pile of scalar variables with '[n\]' in |
    Rem  | their name. Oh, and we have to use '!variable_name! later on   |
    Rem  | too for some unfathomable reason.                              |
    Rem   ================================================================
    
    Rem   ================================================================
    Rem  | List of Oracle chopt'able options.                             |
    Rem   ================================================================
    set Option[0\]=Partitioning
    set Option[1\]=OLAP
    set Option[2\]=Label Security
    set Option[3\]=Data Mining
    set Option[4\]=Database Vault option
    set Option[5\]=Real Application Testing
    set Option[6\]=Database Extensions for .NET
    
    Rem   ================================================================
    Rem  | List of DLLs that exist for enabled options.                   |
    Rem   ================================================================
    set Enabled[0\]=oraprtop11.dll
    set Enabled[1\]=oraolapop11.dll
    set Enabled[2\]=oralbac11.dll
    set Enabled[3\]=oradmop11.dll
    set Enabled[4\]=oradv11.dll
    set Enabled[5\]=orarat11.dll
    set Enabled[6\]=clr
    
    Rem   ================================================================
    Rem  | List of DLLs that exist for disabled options.                   |
    Rem   ================================================================
    set Disabled[0\]=oraprtop11.dll.dbl
    set Disabled[1\]=oraolapop11.dll.dbl
    set Disabled[2\]=oralbac11.dll.dbl
    set Disabled[3\]=oradmop11.dll.dbl
    set Disabled[4\]=oradv11.dll.dbl
    set Disabled[5\]=orarat11.dll.dbl
    set Disabled[6\]=clr.dbl
    
    Rem   ================================================================
    Rem  | Clear any existing logfile.                                    |
    Rem   ================================================================
    Rem 
    del %MYLOG% > nul 2>&1
    
    call :log %0 - v%VERSION% : Logging to %MYLOG%
    call :log Executing: %0 %*
    
    :check_oracle_home
    if "%ORA_HOME%" EQU "" (
        set ORA_HOME=%ORACLE_HOME%
    )
    
    if "%ORACLE_HOME%" EQU "" (
    	call :log ORACLE_HOME is not defined.
    	set ERRORS=1
    )
    
    if not exist %ORA_HOME% (
        call :log ORACLE_HOME "%ORA_HOME%" - not found.
        set ERRORS=1
    )
    
    :check_errors
    
    if %ERRORS% EQU 1 (
    	call :log Cannot continue - too many errors.
    	goto :eof
    )
    
    Rem *******************************************************************
    Rem *******************************************************************
    :JDI
    
    call :log Checking ORACLE_HOME = "%ORA_HOME%".
    
    for /L %%f in (%FirstEntry%, 1, %LastEntry%) do (
    
        Rem Is this option enabled?
        if exist %ORA_HOME%\\bin\\!Enabled[%%f\]! (
            call :log !Option[%%f\]! - is currently enabled.
        )
        
        Rem Also check if it is disabled too. This needs investigating.
        if exist %ORA_HOME%\\bin\\!Disabled[%%f\]! (
            call :log !Option[%%f\]! - is currently disabled.
        )
    )
    Rem *******************************************************************
    Rem *******************************************************************
    
    Rem   ================================================================
    Rem  | And finally, turn off the "doing it correctly" setting.        |
    Rem  | And skip over the sub-routines.                                |
    Rem   ================================================================
    Rem 
    call :log %0 - complete.
    endlocal
    exit /b
    
    Rem   ================================================================
    Rem  |                                                          LOG() |
    Rem   ================================================================
    Rem  | Set up a logging procedure to log output to the %MYLOG% file.  |
    Rem  | Each line is yyyy/mm/dd hh:mi:ss:                       |
    Rem   ================================================================
    :log
    
    echo %*
    echo %date:~6,4%/%date:~3,2%/%date:~0,2% %time:~0,8%: %* >> %MYLOG%
    goto :eof
    

    A test run gives the following, on screen:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    C:\\Users\\ndunbar\\Desktop>CheckOracleOptions.cmd
    CheckOracleOptions.cmd - v1.00 : Logging to .\\CheckOracleOptions.cmd.log
    Executing: CheckOracleOptions.cmd
    Checking ORACLE_HOME = "C:\\OracleDatabase\\product\\11.2.0\\dbhome_1".
    Partitioning - is currently disabled.
    OLAP - is currently disabled.
    Label Security - is currently disabled.
    Data Mining - is currently disabled.
    Database Vault option - is currently disabled.
    Real Application Testing - is currently enabled.
    Database Extensions for .NET - is currently disabled.
    CheckOracleOptions.cmd - complete.
    

    And the logfile looks like this:

    2016/08/25 15:29:58: CheckOracleOptions.cmd - v1.00 : Logging to .\\CheckOracleOptions.cmd.log 
    2016/08/25 15:29:58: Executing: CheckOracleOptions.cmd 
    2016/08/25 15:29:58: Checking ORACLE_HOME = "C:\\OracleDatabase\\product\\11.2.0\\dbhome_1". 
    2016/08/25 15:29:58: Partitioning - is currently disabled. 
    2016/08/25 15:29:58: OLAP - is currently disabled. 
    2016/08/25 15:29:58: Label Security - is currently disabled. 
    2016/08/25 15:29:58: Data Mining - is currently disabled. 
    2016/08/25 15:29:58: Database Vault option - is currently disabled. 
    2016/08/25 15:29:58: Real Application Testing - is currently enabled. 
    2016/08/25 15:29:58: Database Extensions for .NET - is currently disabled. 
    2016/08/25 15:29:58: CheckOracleOptions.cmd - complete. 
    

    Oracle 12c Changes

    If you are running Oracle 12c on Windows, then the code above needs a couple of minor changes to cope. Oracle have, as usual, changed the names of the various DLLs that need to be checked.

    Change the appropriate parts of the above code, to the following:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    Rem   ================================================================
    Rem  | List of DLLs that exist for enabled options.                   |
    Rem   ================================================================
    set Enabled[0\]=oraprtop12.dll
    set Enabled[1\]=oraolapop12.dll
    set Enabled[2\]=oralbac12.dll
    set Enabled[3\]=oradmop12.dll
    set Enabled[4\]=oradv12.dll
    set Enabled[5\]=orarat12.dll
    set Enabled[6\]=clr
    
    Rem   ================================================================
    Rem  | List of DLLs that exist for disabled options.                   |
    Rem   ================================================================
    set Disabled[0\]=oraprtop12.dll.dbl
    set Disabled[1\]=oraolapop12.dll.dbl
    set Disabled[2\]=oralbac12.dll.dbl
    set Disabled[3\]=oradmop12.dll.dbl
    set Disabled[4\]=oradv12.dll.dbl
    set Disabled[5\]=orarat12.dll.dbl
    set Disabled[6\]=clr.dbl
    

    That’s all.

    Share on

    Norman Dunbar
    WRITTEN BY
    Norman Dunbar
    Oracle DBA & developer. (Retired). Now a published book author!