How to make ProTop work with your OE12.x DBAUTHKEY-protected database [UNIX only]

My vendor (or I) put a DBAUTHKEY in our OpenEdge 12.x databases to protect them from unauthorized r-code. How do I authorize ProTop r-code to run against them?

NOTE: This only applies to OE12.x databases as ProTop works as is against OE11.x and earlier databases that use a DBAUTHKEY.

When I try to run ProTop against my OE12.x database, I get this fatal error popup box:

and this message at the bottom of the screen:

What do I do? I want to run ProTop on this database!


Starting in ProTop 327, you can authorize ProTop r-code to run against your OE12.x DBAUTHKEY-protected database. But, there are some prerequisites:

On the same *nix server:

  • OE 12.x installed with ...
  • A 4GL DEV license which allows you to compile
  • ProTop 327 installed
  • The database(s) or copy(s) containing the DBAUTHKEY you want to authorize ProTop r-code to run against

Here are the steps:

  1. Log onto your server as the owner of your ProTop installation and set up your ProTop environment: 
     . /data/protop/bin/protopenv
  2. Create a directory to work in and cd into it.
  3. cp $PROTOP/bin/ptcompile.sh  .
  4. cp $PROTOP/util/ptcompile.p  .
  5. Run the script with the following arguments, all of which are explicit paths; if the new r-code directory is not there, it will be created.
    ./ptcompile.sh  <db w/DBAUTHKEY>  <new r-code path>  $PROTOP
    [In this example, we will use ptdbak instead of <db w/DBAUTHKEY> from here on out.]

    This will create a new protop-v12-ptdbak.pl in the new r-code directory you provided. Now ...
  6. cp <new r-code path>/protop-v12-ptdbak.pl $PROTOP
  7. If all of your databases use the same DDBAUTHKEY, edit the "PROPATH=" line in $PROTOP/bin/protopenv
          change this: PROPATH=protop-v12.pl:${PROTOP}
          to this: PROPATH=protop-v12-ptdbak.pl:${PROTOP}
  8. If not all of your databases use the same DBAUTHKEY then edit $PROTOP/etc/dblist.cfg and add protop-v12-ptdbak.pl to the end of each line containing a database that uses this DBAUTHKEY, followed by " :. "

    It will look something like this:
    ptdbak|/db/ptdbak|yourServer|yes|||protop-v12-ptdbak.pl:.
    FYI, you are editing the seventh pipe-delimited column, aka codePath.

    You should now be able to run ProTop against your database containing the DBAUTHKEY: 
    protop ptdbak
  9. Repeat these steps for each of your databases that have a different DBAUTHKEY.