1 - Understanding the Architecture

Understand the architecture for the DB2 Database Protector.

The architecture for the DB2 Database Protector is depicted in the image below.

ComponentDescription
RPAgentA daemon running on each node that downloads the package from the ESA over a TLS channel using the installed Certificates.
Log ForwarderA daemon running on each node that routes the audit logs and application logs to the ESA/Audit Store.
config.iniA file on each node containing the set of configuration parameters to modify the protector behavior.
DBP LayerContains the Database Protector UDFs and APIs.
CoreThe set of various libraries that provide the Protegrity Core functionality.

2 - Verifying the System Requirements

Verify the System Requirements for the DB2 Database Protector.

Ensure that the following prerequisites are met:

  • The DB2 Database is installed and configured.
  • Enterprise Security Administrator (ESA) is installed, configured, and running.
  • The IP address or host name of the ESA is noted.
  • The Policy Management (PIM) module is initialized on ESA. The initialization of PIM ensures that cryptographic keys for protecting data and the policy repository are created.
  • Download and save the DB2 Database Protector, DatabaseProtector_Linux-ALL-64_x86-64_DB2-ALL-64_<DBP_version>.tgz, made available by Protegrity.
  • Backup the databases where the DB2 Database Protector and UDFs would be installed.
  • Access to the database server as the sudo access user is available. This permission is required to install all the components.
  • Access to the DB2 database as the database user is available.
  • The following permissions are available to the user and group to install and uninstall the UDFs:
    • GRANT DBADM ON DATABASE TO USER <user_name>;
    • GRANT DBADM ON DATABASE TO GROUP <user_name>;
    • GRANT CONNECT ON DATABASE TO USER <user_name>;
    • GRANT CREATEIN, ALTERIN, DROPIN ON SCHEMA PTY TO USER <user_name>;
    • GRANT ACCESSCTRL ON DATABASE TO USER <user_name>;

3 - Preparing the Environment

Prepare the Environment to Install the DB2 Database Protector.

The steps to prepare the environment to install the DB2 Database Protector are explained in the following sub-sections.

3.1 - Extracting the Installation Package

Extract the files from the Installation Package.
  1. Log in to the DB2 database server with an account having the required privileges.
  2. Save the DB2 database protector installation package, DatabaseProtector_Linux-ALL-64_x86-64_DB2-ALL-64_<DBP_version>.tgz, made available by Protegrity, in any sample directory. For example, /opt/protegrity/.
  3. Navigate to the /opt/protegrity/ directory.
  4. To extract the contents, run the following command:
    tar -xvf DatabaseProtector_Linux-ALL-64_x86-64_DB2-ALL-64_<DBP_version>.tgz
    
  5. Press ENTER.
    The command extracts the package and the signature files.
    DatabaseProtector_Linux-ALL-64_x86-64_DB2-ALL-64_<DBP_version>.tgz
    signatures/
    signatures/DatabaseProtector_Linux-ALL-64_x86-64_DB2-ALL-64_<DBP_version>.tgz_10.0.sig
    
  6. To extract the contents of the installation package, run the following command:
    tar -xvf DatabaseProtector_Linux-ALL-64_x86-64_DB2-ALL-64_<DBP_version>.tgz
    
  7. Press ENTER.
    The command extracts the files from the package.
    LogforwarderSetup_Linux_x64_<DBP_version>.sh
    RPAgentSetup_Linux_x64_<DBP_version>.sh
    PepDB2Setup_Linux_x64_<DBP_version>.sh
    U.S.Patent.No.6,321,201.Legend.txt
    

3.2 - Installing the Log Forwarder

Install the Log Forwarder.
  1. Log in to the database server as the user that has the permissions to install the Log Forwarder. Usually, this tends to be the instance owner.
  2. Navigate to the directory where the installation files are extracted.
  3. To install the Log Forwarder, run the following command:
    ./LogforwarderSetup_Linux_x64_<DBP_version>.sh
    
  4. Press ENTER.
    The prompt to enter the audit store endpoint appears.
    Enter the audit store endpoint (host), alternative (host:port) to use another port than the default port 9200 :
    
  5. Enter the IP address of the audit store.
  6. Press ENTER.
    The prompt to enter additional endpoint appears.
    Audit store endpoints: <Audit_store_IP_address>:9200
    Do you want to add another audit store endpoint? [y/n]:
    
  7. To skip adding additional endpoints, type n.
  8. Press ENTER.
    The prompt to continue the installation appears.
    These audit store endpoints will be added:
    <Audit_store_IP_address>:9200
    
    Type 'y' to accept or 'n' to abort installation:
    
  9. To continue the installation, type y.
  10. Press ENTER.
    The script extracts the files and installs the Log Forwarder.
    Unpacking...
    Extracting files...
    Protegrity Log Forwarder installed in /opt/protegrity/logforwarder.
    
  11. Navigate to the /opt/protegrity/logforwarder/bin directory.
  12. To start the Log Forwarder, run the following command:
    ./logforwarderctrl start
    

3.3 - Installing the RPAgent

Install the RPAgent.

Before you begin

Before proceeding with the RPA installation in secure mode, ensure that the required CA certificate is available and trusted on the system.

For ESA

Download the certificate from ESA.

For more information about downloading certificates from ESA, refer to Manage Certificates.

After obtaining the certificate, configure the system environment variable:

VariableValue
SSL_CERT_FILEFull path to the certificate file. For example, /<certificate_location>/CA.pem

Ensure the ESA hostname or IP is present in the ESA TLS certificate (SAN or CN), and it is resolvable from the RPAgent host.

After the CA certificate is available, proceed with the RPAgent installation.

Install the RPAgent

  1. Log in to the database server as the user that has permissions to install the RPAgent.
  2. Navigate to the directory where the installation files are extracted.
  3. To install the RPAgent, run the following command:
    ./RPAgentSetup_Linux_x64_<DBP_version>.sh
    
  4. Press ENTER.
    The prompt to enter ESA hostname or IP address appears.
    Please enter upstream host name or IP address[]:
    
  5. Enter ESA FQDN.
  6. Press ENTER.
    The prompt to enter the username to download the certificates appears.
    Please enter the user name for downloading certificates[]:
    
  7. Enter the username to download the certificates from ESA.
  8. Press ENTER.
    The prompt to enter the password to download the certificates appears.
    Please enter the password for downloading certificates[]:
    
  9. Enter the password.
  10. Press ENTER.
    The script connects to the ESA, retrieves the JWT token, extracts the certificates, and installs the RPAgent.
    Unpacking...
    Extracting files...
    Certificate validation successful.
    Obtaining token from <ESA_FQDN>:25400...
    Downloading certificates from <ESA_FQDN>:25400...
    % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                    Dload  Upload  Total   Spent   Left   Speed
    100  11264 100  11264   0      0 156.6k      0                              0
    
    Extracting certificates...
    Certificates successfully downloaded and stored in /opt/protegrity/rpagent/data
    
    Protegrity RPAgent installed in /opt/protegrity/rpagent.
    
  11. Navigate to the /opt/protegrity/rpagent/bin directory.
  12. To start the RPAgent, run the following command:
    ./rpagentctrl start
    

4 - Installing the DB2 Database Protector

Install the DB2 Database Protector.

This section describes the procedure to install the DB2 Database Protector and create the required User‑Defined Functions (UDFs). The process includes instructions to install the Policy Enforcement Point (PEP) and creating the UDFs.

4.1 - Installing the Policy Enforcement Point (PEP)

Install the Policy Enforcement Point (PEP).
  1. Log in to the node where the installation files are extracted.
  2. To install the DB2 objects, run the following command:
    ./PepDB2Setup_Linux_x64_<DBP_version>.sh
    
  3. Press ENTER.
    The prompt to continue appears.
    *****************************************************
    Welcome to the Database Protector Setup Wizard
    *****************************************************
    
    This will install the db2 objects on your computer
    Do you want to continue? [yes or no]
    
  4. To continue, type yes.
  5. Press ENTER.
    The prompt to enter the installation directory appears.
    Enter installation directory.
    A new directory will be created in the installation directory.
    [/opt/protegrity]:
    
  6. Enter the location to install the DB2 objects.
  7. Press ENTER.
    The prompt to specify the database name to install the objects appears.
     Enter name of database where the UDFs will be installed.
     [PROTEGRITY]:
    
  8. Enter the name of the database to install the objects.

    Note: In case of a failure to specify the database name, the script will use PROTEGRITY as the default database name to install the UDFs.

  9. Press ENTER.
    The command extracts the files and installs the objects.
    Unpacking...
    Extracting files...
    db2 objects installed in /opt/protegrity/databaseprotector/db2.
    

4.2 - Creating the User Defined Functions (UDFs)

Create the User Defined Functions (UDFs).

The DB2 Database Protector provides the createobjects.sql script to create or install the UDFs.

Note: Before installing the UDFs, ensure that the RPAgent and Log Forwarder services are installed and running.

To create the UDFs for the DB2 Database Protector:

  1. Connect to the database as the user with the required privileges to create the UDFs.
  2. Navigate to the /opt/protegrity/databaseprotector/db2/sqlscripts/ directory.
  3. To install the UDFs, run the following command:
    db2 -tvf createobjects.sql
    
  4. Press ENTER.
    The script creates all the user-defined functions.
    CONNECT TO  <database_name>
    
    Database Connection Information
    
     Database server        = DB2/LINUXX8664 11.5.0.0
     SQL authorization ID   = DB2INST1
     Local database alias   = <database_name>
    
    
     CREATE FUNCTION pty.ins_enc_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672),INTEGER) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty31 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672),INTEGER) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty51 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672) FOR BIT DATA,INTEGER) RETURNS VARCHAR(32672)
         SPECIFIC pty71 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672), INTEGER ) RETURNS VARCHAR(32672)
         SPECIFIC pty_ins_vchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672), INTEGER ) RETURNS VARCHAR(32672)
         SPECIFIC pty_upd_vchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672) , INTEGER ) RETURNS VARCHAR(32672)
         SPECIFIC pty_sel_vchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_hash_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672),INTEGER) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty98 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!hashInsertVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_hash_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672),INTEGER) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty99 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!hashUpdateVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_varcharfbd(INTEGER, VARCHAR(64),
                 VARCHAR(32672) FOR BIT DATA,INTEGER) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty32 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_varcharfbd(INTEGER, VARCHAR(64),
                 VARCHAR(32672) FOR BIT DATA,INTEGER) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty52 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_varcharfbd(INTEGER, VARCHAR(64),
                 VARCHAR(32672) FOR BIT DATA,INTEGER) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty72 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_varcharfbd(INTEGER, VARCHAR(64),
                 VARCHAR(32672) FOR BIT DATA, INTEGER ) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty_ins_vchar_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_varcharfbd(INTEGER, VARCHAR(64),
                 VARCHAR(32672) FOR BIT DATA, INTEGER ) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty_upd_vchar_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_varcharfbd(INTEGER, VARCHAR(64),
                 VARCHAR(32672) FOR BIT DATA, INTEGER ) RETURNS VARCHAR(32672) FOR BIT DATA
         SPECIFIC pty_sel_vchar_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_char(INTEGER, VARCHAR(64),
                                 VARCHAR(254),INTEGER) RETURNS VARCHAR(290) FOR BIT DATA
         SPECIFIC pty33 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_char(INTEGER, VARCHAR(64),
                                 VARCHAR(254),INTEGER) RETURNS VARCHAR(290) FOR BIT DATA
         SPECIFIC pty53 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_char(INTEGER, VARCHAR(64),
                                 VARCHAR(290) FOR BIT DATA,INTEGER) RETURNS VARCHAR(254)
         SPECIFIC pty73 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_char(INTEGER, VARCHAR(64),
                                 VARCHAR(254), INTEGER ) RETURNS VARCHAR(305)
         SPECIFIC pty_ins_char EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_char(INTEGER, VARCHAR(64),
                                 VARCHAR(254), INTEGER ) RETURNS VARCHAR(305)
         SPECIFIC pty_upd_char EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_char(INTEGER, VARCHAR(64),
                                 VARCHAR(305), INTEGER ) RETURNS VARCHAR(254)
         SPECIFIC pty_sel_char EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_unicode_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672), INTEGER ) RETURNS VARCHAR(32672)
         SPECIFIC pty_ins_unicode_vchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertUnicodeVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_unicode_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672), INTEGER ) RETURNS VARCHAR(32672)
         SPECIFIC pty_upd_unicode_vchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateUnicodeVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_unicode_varchar(INTEGER, VARCHAR(64),
                             VARCHAR(32672) , INTEGER ) RETURNS VARCHAR(32672)
         SPECIFIC pty_sel_unicode_vchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectUnicodeVarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_charfbd(INTEGER, VARCHAR(64),
                     VARCHAR(254) FOR BIT DATA,INTEGER) RETURNS VARCHAR(290) FOR BIT DATA
         SPECIFIC pty34 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_charfbd(INTEGER, VARCHAR(64),
                     VARCHAR(254) FOR BIT DATA,INTEGER) RETURNS VARCHAR(290) FOR BIT DATA
         SPECIFIC pty54 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_charfbd(INTEGER, VARCHAR(64),
                     VARCHAR(290) FOR BIT DATA,INTEGER) RETURNS VARCHAR(254) FOR BIT DATA
         SPECIFIC pty74 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_charfbd(INTEGER, VARCHAR(64),
                     VARCHAR(254) FOR BIT DATA, INTEGER ) RETURNS VARCHAR(254) FOR BIT DATA
         SPECIFIC pty_ins_char_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_charfbd(INTEGER, VARCHAR(64),
                     VARCHAR(254) FOR BIT DATA, INTEGER ) RETURNS VARCHAR(254) FOR BIT DATA
         SPECIFIC pty_upd_char_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_charfbd(INTEGER, VARCHAR(64),
                     VARCHAR(254) FOR BIT DATA, INTEGER ) RETURNS VARCHAR(254) FOR BIT DATA
         SPECIFIC pty_sel_char_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectVarcharFBD'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_lvarchar(INTEGER, VARCHAR(64),
                                 LONG VARCHAR,INTEGER) RETURNS LONG VARCHAR FOR BIT DATA
         SPECIFIC pty35 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_lvarchar(INTEGER, VARCHAR(64),
                                 LONG VARCHAR,INTEGER) RETURNS LONG VARCHAR FOR BIT DATA
         SPECIFIC pty55 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_lvarchar(INTEGER, VARCHAR(64),
                                 LONG VARCHAR FOR BIT DATA,INTEGER) RETURNS LONG VARCHAR
         SPECIFIC pty75 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_lvarchar(INTEGER, VARCHAR(64),
                                 LONG VARCHAR, INTEGER ) RETURNS LONG VARCHAR
         SPECIFIC pty_ins_lvchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_lvarchar(INTEGER, VARCHAR(64),
                                 LONG VARCHAR, INTEGER ) RETURNS LONG VARCHAR
         SPECIFIC pty_upd_lvchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_lvarchar(INTEGER, VARCHAR(64),
                                 LONG VARCHAR, INTEGER ) RETURNS LONG VARCHAR
         SPECIFIC pty_sel_lvchar EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_lvcfbd(INTEGER, VARCHAR(64),
                     LONG VARCHAR FOR BIT DATA,INTEGER) RETURNS LONG VARCHAR FOR BIT DATA
         SPECIFIC pty36 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_lvcfbd(INTEGER, VARCHAR(64),
                     LONG VARCHAR FOR BIT DATA,INTEGER) RETURNS LONG VARCHAR FOR BIT DATA
         SPECIFIC pty56 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_lvcfbd(INTEGER, VARCHAR(64),
                     LONG VARCHAR FOR BIT DATA,INTEGER) RETURNS LONG VARCHAR FOR BIT DATA
         SPECIFIC pty76 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_lvcfbd(INTEGER, VARCHAR(64),
                     LONG VARCHAR FOR BIT DATA, INTEGER ) RETURNS LONG VARCHAR FOR BIT DATA
         SPECIFIC pty_ins_lvchar_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_lvcfbd(INTEGER, VARCHAR(64),
                     LONG VARCHAR FOR BIT DATA, INTEGER ) RETURNS LONG VARCHAR FOR BIT DATA
         SPECIFIC pty_upd_lvchar_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_lvcfbd(INTEGER, VARCHAR(64),
                     LONG VARCHAR FOR BIT DATA, INTEGER ) RETURNS LONG VARCHAR FOR BIT DATA
         SPECIFIC pty_sel_lvchar_fbd EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectLongvarchar'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_date(INTEGER, VARCHAR(64),
                                     DATE,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty37 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertDate'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_date(INTEGER, VARCHAR(64),
                                     DATE,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty57 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateDate'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_date(INTEGER, VARCHAR(64),
                                     VARCHAR(34) FOR BIT DATA,INTEGER) RETURNS DATE
         SPECIFIC pty77 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectDate'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_date(INTEGER, VARCHAR(64),
                                     DATE, INTEGER ) RETURNS DATE
         SPECIFIC pty_ins_date EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertDate'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_date(INTEGER, VARCHAR(64),
                                     DATE, INTEGER ) RETURNS DATE
         SPECIFIC pty_upd_date EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateDate'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_date(INTEGER, VARCHAR(64),
                                     DATE, INTEGER ) RETURNS DATE
         SPECIFIC pty_sel_date EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectDate'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_time(INTEGER, VARCHAR(64),
                                     TIME,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty38 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertTime'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_time(INTEGER, VARCHAR(64), TIME,INTEGER)
                                     RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty58 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateTime'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_time(INTEGER, VARCHAR(64),
                                     VARCHAR(34) FOR BIT DATA,INTEGER) RETURNS TIME
         SPECIFIC pty78 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectTime'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_time(INTEGER, VARCHAR(64),
                                     TIME, INTEGER ) RETURNS TIME
         SPECIFIC pty_ins_time EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertTime'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_time(INTEGER, VARCHAR(64), TIME, INTEGER )
                                     RETURNS TIME
         SPECIFIC pty_upd_time EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateTime'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_time(INTEGER, VARCHAR(64),
                                     TIME, INTEGER ) RETURNS TIME
         SPECIFIC pty_sel_time EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectTime'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_timestamp(INTEGER, VARCHAR(64),
                                     TIMESTAMP,INTEGER) RETURNS VARCHAR(50) FOR BIT DATA
         SPECIFIC pty39 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertTimestamp'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_timestamp(INTEGER, VARCHAR(64),
                                     TIMESTAMP,INTEGER) RETURNS VARCHAR(50) FOR BIT DATA
         SPECIFIC pty59 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateTimestamp'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_timestamp(INTEGER, VARCHAR(64),
                                     VARCHAR(50) FOR BIT DATA,INTEGER) RETURNS TIMESTAMP
         SPECIFIC pty79 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectTimestamp'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_timestamp(INTEGER, VARCHAR(64),
                                     TIMESTAMP, INTEGER ) RETURNS TIMESTAMP
         SPECIFIC pty_ins_timestamp EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertTimestamp'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_timestamp(INTEGER, VARCHAR(64),
                                     TIMESTAMP, INTEGER ) RETURNS TIMESTAMP
         SPECIFIC pty_upd_timestamp EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateTimestamp'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_timestamp(INTEGER, VARCHAR(64),
                                     TIMESTAMP, INTEGER ) RETURNS TIMESTAMP
         SPECIFIC pty_sel_timestamp EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectTimestamp'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_integer(INTEGER, VARCHAR(64),
                                         INTEGER,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty40 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertInteger'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_integer(INTEGER, VARCHAR(64),
                                         INTEGER,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty60 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateInteger'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_integer(INTEGER, VARCHAR(64),
                                         VARCHAR(34) FOR BIT DATA,INTEGER) RETURNS INTEGER
         SPECIFIC pty80 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectInteger'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_integer(INTEGER, VARCHAR(64),
                                         INTEGER, INTEGER ) RETURNS INTEGER
         SPECIFIC pty_ins_int EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertInteger'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_integer(INTEGER, VARCHAR(64),
                                         INTEGER, INTEGER ) RETURNS INTEGER
         SPECIFIC pty_upd_int EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateInteger'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_integer(INTEGER, VARCHAR(64),
                                         INTEGER, INTEGER ) RETURNS INTEGER
         SPECIFIC pty_sel_int EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectInteger'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_smallint(INTEGER, VARCHAR(64),
                                     SMALLINT,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty41 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertSmallint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_smallint(INTEGER, VARCHAR(64),
                                     SMALLINT,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty61 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateSmallint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_smallint(INTEGER, VARCHAR(64),
                                     VARCHAR(34) FOR BIT DATA,INTEGER) RETURNS SMALLINT
         SPECIFIC pty81 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectSmallint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_smallint(INTEGER, VARCHAR(64),
                                     SMALLINT, INTEGER ) RETURNS SMALLINT
         SPECIFIC pty_ins_smallint EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertSmallint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_smallint(INTEGER, VARCHAR(64),
                                     SMALLINT, INTEGER ) RETURNS SMALLINT
         SPECIFIC pty_upd_smallint EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateSmallint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_smallint(INTEGER, VARCHAR(64),
                                     SMALLINT, INTEGER ) RETURNS SMALLINT
         SPECIFIC pty_sel_smallint EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectSmallint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_bigint(INTEGER, VARCHAR(64),
                                     BIGINT,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty42 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertBigint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_bigint(INTEGER, VARCHAR(64),
                                     BIGINT,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty62 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateBigint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_bigint(INTEGER, VARCHAR(64),
                                     VARCHAR(34) FOR BIT DATA,INTEGER) RETURNS BIGINT
         SPECIFIC pty82 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectBigint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_bigint(INTEGER, VARCHAR(64),
                                     BIGINT, INTEGER ) RETURNS BIGINT
         SPECIFIC pty_ins_bigint EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertBigint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_bigint(INTEGER, VARCHAR(64),
                                     BIGINT, INTEGER ) RETURNS BIGINT
         SPECIFIC pty_upd_bigint EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateBigint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_bigint(INTEGER, VARCHAR(64),
                                     BIGINT, INTEGER ) RETURNS BIGINT
         SPECIFIC pty_sel_bigint EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectBigint'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_real(INTEGER, VARCHAR(64),
                                     REAL,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty43 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertReal'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_real(INTEGER, VARCHAR(64),
                                     REAL,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty63 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateReal'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_real(INTEGER, VARCHAR(64),
                                     VARCHAR(34) FOR BIT DATA,INTEGER) RETURNS REAL
         SPECIFIC pty83 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectReal'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_real(INTEGER, VARCHAR(64),
                                     REAL, INTEGER ) RETURNS REAL
         SPECIFIC pty_ins_real EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertReal'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_real(INTEGER, VARCHAR(64),
                                     REAL, INTEGER ) RETURNS REAL
         SPECIFIC pty_upd_real EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateReal'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_real(INTEGER, VARCHAR(64),
                                     REAL, INTEGER ) RETURNS REAL
         SPECIFIC pty_sel_real EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectReal'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_double(INTEGER, VARCHAR(64),
                                     DOUBLE,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty44 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertDouble'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_double(INTEGER, VARCHAR(64),
                                     DOUBLE,INTEGER) RETURNS VARCHAR(34) FOR BIT DATA
         SPECIFIC pty64 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateDouble'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_double(INTEGER, VARCHAR(64),
                                     VARCHAR(34) FOR BIT DATA,INTEGER) RETURNS DOUBLE
         SPECIFIC pty84 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectDouble'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_double(INTEGER, VARCHAR(64),
                                     DOUBLE, INTEGER ) RETURNS DOUBLE
         SPECIFIC pty_ins_double EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertDouble'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_double(INTEGER, VARCHAR(64),
                                     DOUBLE, INTEGER ) RETURNS DOUBLE
         SPECIFIC pty_upd_double EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateDouble'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_double(INTEGER, VARCHAR(64),
                                     DOUBLE, INTEGER ) RETURNS DOUBLE
         SPECIFIC pty_sel_double EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectDouble'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_blob(INTEGER, VARCHAR(64),
                                     BLOB(100K),INTEGER) RETURNS BLOB(102434)
         SPECIFIC pty01 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertBlob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_blob(INTEGER, VARCHAR(64),
                                     BLOB(100K),INTEGER) RETURNS BLOB(102434)
         SPECIFIC pty02 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateBlob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_blob(INTEGER, VARCHAR(64),
                                     BLOB(102434),INTEGER) RETURNS BLOB(100K)
         SPECIFIC pty03 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectBlob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_blob(INTEGER, VARCHAR(64),
                                     BLOB(100K), INTEGER ) RETURNS BLOB(100K)
         SPECIFIC pty_ins_blob EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertBlob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_blob(INTEGER, VARCHAR(64),
                                     BLOB(100K), INTEGER ) RETURNS BLOB(100K)
         SPECIFIC pty_upd_blob EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateBlob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_blob(INTEGER, VARCHAR(64),
                                     BLOB(100K), INTEGER ) RETURNS BLOB(100K)
         SPECIFIC pty_sel_blob EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectBlob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_enc_clob(INTEGER, VARCHAR(64),
                                     CLOB(5K),INTEGER) RETURNS BLOB(5154)
         SPECIFIC pty11 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptInsertClob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_enc_clob(INTEGER, VARCHAR(64),
                                     CLOB(5K),INTEGER) RETURNS BLOB(5154)
         SPECIFIC pty12 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!encryptUpdateClob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_dec_clob(INTEGER, VARCHAR(64),
                                     BLOB(5154),INTEGER) RETURNS CLOB(5K)
         SPECIFIC pty13 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!decryptSelectClob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.ins_clob(INTEGER, VARCHAR(64),
                                     CLOB(5K), INTEGER ) RETURNS CLOB(5376)
         SPECIFIC pty_ins_clob EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!insertClob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.upd_clob(INTEGER, VARCHAR(64),
                                     CLOB(5K), INTEGER ) RETURNS CLOB(5376)
         SPECIFIC pty_upd_clob EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!updateClob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.sel_clob(INTEGER, VARCHAR(64),
                                     CLOB(5376), INTEGER ) RETURNS CLOB(5K)
         SPECIFIC pty_sel_clob EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!selectClob'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.have_ins_perm(INTEGER, VARCHAR(64)) RETURNS INTEGER
         SPECIFIC pty93 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!haveInsertPerm'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.have_upd_perm(INTEGER, VARCHAR(64)) RETURNS INTEGER
         SPECIFIC pty94 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!haveUpdatePerm'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.have_sel_perm(INTEGER, VARCHAR(64)) RETURNS INTEGER
         SPECIFIC pty92 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!haveSelectPerm'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.toggle_trace(INTEGER) RETURNS INTEGER
         SPECIFIC pty95 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!toggleTrace'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.getversion() RETURNS VARCHAR(256)
         SPECIFIC pty101 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!getVersion'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.getcoreversion() RETURNS VARCHAR(256)
         SPECIFIC ptygetcore EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!ptyCore'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     CREATE FUNCTION pty.whoami() RETURNS VARCHAR(256)
         SPECIFIC pty102 EXTERNAL NAME '/opt/protegrity/databaseprotector/db2/lib/pepdb2.plm!whoAmI'
         LANGUAGE c PARAMETER STYLE DB2SQL
         NOT DETERMINISTIC NOT FENCED NULL CALL NO SQL NO EXTERNAL ACTION
         SCRATCHPAD 300 FINAL CALL ALLOW PARALLEL DBINFO
     DB20000I  The SQL command completed successfully.
    
     GRANT EXECUTE ON FUNCTION pty.* TO PUBLIC
     DB20000I  The SQL command completed successfully.
    
     CONNECT RESET
     DB20000I  The SQL command completed successfully.
    
  5. To view the list of all the installed UDFs, run the following command:
    SELECT FUNCNAME FROM SYSCAT.FUNCTIONS WHERE FUNCSCHEMA = 'PTY';
    
  6. To verify the successful installation of the UDFs, execute any one of the following queries:
    select pty.whoami() from SYSIBM.SYSDUMMY1;
    
    The function returns the name of the user that is logged in to the database.
    select pty.getversion() from SYSIBM.SYSDUMMY1;
    
    The command returns the protector version.

5 - Configuring the DB2 Database Protector

Configure the DB2 Database Protector

The DB2 Database Protector provides the following files that contain different parameters to control the protector behavior:

  • config.ini - provides parameters to control the protector behavior.
  • rpagent.cfg - provides parameters to control the RPAgent behavior.

Updating the parameters in the config.ini file:

  1. Log in to the node.

  2. Navigate to the /opt/protegrity/databaseprotector/db2/data directory.

  3. To open the config.ini file, run the following command:

    vi config.ini
    
  4. Press ENTER.
    The command opens the config.ini file.

    ###############################################################################
    # Protector configuration
    ###############################################################################
    [protector]
    
    # Cadence determines how often the protector connects with ESA / proxy to fetch the policy updates in background.
    # Default is 60 seconds. So by default, every 60 seconds protector tries to fetch the policy updates.
    # If the cadence is set to "0", then the protector will get the policy only once.
    #
    # Default 60.
    cadence = 60
    
    
    ###############################################################################
    # Log Provider Config
    ###############################################################################
    [log]
    
    # In case that connection to fluent-bit is lost, set how audits/logs are handled
    #
    # drop  : (default) Protector throws logs away if connection to the fluentbit is lost
    # error : Protector returns error without protecting/unprotecting
    #         data if connection to the fluentbit is lost
    mode = drop
    
    # Host/IP to fluent-bit where audits/logs will be forwarded from the protector
    #
    # Default localhost
    host = localhost
    
  5. Update the parameters, as per the description, in the following table:

    ParameterDescription
    cadenceSpecifies the frequency at which the protector retrieves the policy. The default value is 60 seconds. If the cadence is set to “0”, then the protector will get the policy only once.
    modeSpecifies the approach of handling logs when the connection to the Log Forwarder is lost.
  6. Save the changes to the config.ini file.

Updating the parameters in the rpagent.cfg file:

  1. Log in to the required node.

  2. Navigate to the /opt/protegrity/rpagent/data directory.

  3. To open the rpagent.cfg file, run the following command:

    vi rpagent.cfg
    
  4. Press ENTER.
    The command opens the rpagent.cfg file.

    ###############################################################################
    # Resilient Package Sync Config
    ###############################################################################
    [sync]
    
    # Protocol to use when communicating with the service providing Resilient Packages.
    # Use 'https' for ESA or 'shmem' for local shared memory.
    protocol = https
    
    # Host/IP to the service providing Resilient Packages
    host = <IP_address>
    port = 8443
    
    # Path to CA certificate
    ca = /opt/protegrity/rpagent/data/CA.pem
    
    # Path to client certificate
    cert = /opt/protegrity/rpagent/data/cert.pem
    
    # Path to client certificate key
    key = /opt/protegrity/rpagent/data/cert.key
    
    # Path to a secret file that is used to decrypt the client certificate key.
    # When using a custom certificate bundle, the 'secretcommand' can instead be
    # used to execute an external command that obtains the secret.
    secretfile = /opt/protegrity/rpagent/data/secret.txt
    
    ###############################################################################
    # Log Provider Config
    ###############################################################################
    [log]
    
    # In case that connection to fluent-bit is lost, set how audits/logs are handled
    #
    # drop  : (default) Protector throws logs away if connection to the fluentbit is lost
    # error : Protector returns error without protecting/unprotecting
    #         data if connection to the fluentbit is lost
    mode = drop
    
    # Host/IP to fluent-bit where audits/logs will be forwarded from the protector
    #
    # Default localhost
    host = localhost
    
  5. Update the parameters, as per the description, in the following table:

    ParameterDescription
    intervalSpecifies the frequency at which the RPAgent retrieves the policy. The minimum value is 1 second and the maximum value is 86400 seconds. This is an optional parameter and must be included in the Sync section of the rpagent.cfg file.
    protocolSpecifies the protocol to use when communicating with the service providing Resilient Packages.
    hostSpecifies the hostname to the service providing the Resilient packages.
    portSpecifies the port to the service providing the Resilient packages.
    caSpecifies the path to the CA certificate.
    certSpecifies the path to the client certificate.
    keySpecifies the path to the client certificate key.
    secretfileSpecifies the path to the secret file that is used to decrypt the client certificate key.
    modeSpecifies the approach of handling logs when the connection to the Log Forwarder is lost.
    hostSpecifies the hostname or the IP address to where the Log Forwarder will forward the audit logs from the protector.
  6. Save the changes to the rpagent.cfg file.

6 - Uninstalling the DB2 Database Protector

Uninstall the DB2 Database Protector.

The process to uninstall the DB2 Database Protector involves the following steps:

  1. Dropping the User Defined Functions.
  2. Uninstalling the RPAgent.
  3. Uninstalling the Log Forwarder.
  4. Deleting the installation directory.

Dropping the User Defined Functions

  1. Log in to the DB2 Database server using the same account used to create the UDFs.
  2. Navigate to the /opt/protegrity/databaseprotector/db2/sqlscripts/ directory.
  3. To drop the UDFs, run the following command:
    db2 -tvf dropobjects.sql
    
  4. Press ENTER.
    The script deletes all the user-defined functions.
    CONNECT TO <database_name>
    
    Database Connection Information
    
     Database server        = DB2/LINUXX8664 11.5.0.0
     SQL authorization ID   = DB2INST1
     Local database alias   = <database_name>
    
    
     DROP FUNCTION pty.ins_enc_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_unicode_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_unicode_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_unicode_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.have_sel_perm
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.have_ins_perm
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.have_upd_perm
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.toggle_trace
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_hash_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_hash_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.getversion
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.getcoreversion
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.whoami
     DB20000I  The SQL command completed successfully.
    
     CONNECT RESET
     DB20000I  The SQL command completed successfully.
    

Uninstalling the RPAgent

Before uninstalling the RPAgent, Protegrity recommends creating a backup.

  1. Log in to the DB2 Database server.
  2. Navigate to the /opt/protegrity/rpagent/bin/ directory.
  3. To stop the RPAgent, run the following command:
    rpagentctrl stop
    
  4. Press ENTER. The command stops the RPAgent service.
  5. Navigate to the /opt/protegrity directory.
  6. Delete the /opt/protegrity/rpagent/ directory.

Uninstalling the Log Forwarder

Before uninstalling the Log Forwarder, Protegrity recommends creating a backup.

  1. Log in to the DB2 Database server.
  2. Navigate to the /opt/protegrity/logforwarder/bin/ directory.
  3. To stop the Log Forwarder, run the following command:
    logforwarderctrl stop
    
  4. Press ENTER. The command stops the Log Forwarder.
  5. Navigate to the /opt/protegrity directory.
  6. Delete the /opt/protegrity/logforwarder/ directory.

Deleting the installation directory

To complete the uninstall process, delete the installation directory.

Note: Before deleting the installation directory, ensure the database and all the services are stopped.

  1. Log in to the DB2 Database server.
  2. Navigate to the /opt/protegrity/databaseprotector/ directory.
  3. To delete the db2 directory, run the following command:
    rm -rf db2
    

7 - Upgrading the DB2 Database Protector

Upgrade the DB2 Database Protector.

To upgrade the DB2 Database Protector:

  1. Drop the existing UDFs.
  2. Uninstall the existing version of the protector.
  3. Install the new version of the protector.
  4. Start the RPAgent.
  5. Create the new user-defined functions.

Dropping the Existing User Defined Functions

  1. Log in to the DB2 Database server using the same account used to create the UDFs.
  2. Navigate to the /opt/protegrity/databaseprotector/db2/sqlscripts/ directory.
  3. To drop the UDFs, run the following command:
    db2 -tvf dropobjects.sql
    
  4. Press ENTER.
    The script deletes all the user-defined functions.
    CONNECT TO <database_name>
    
    Database Connection Information
    
     Database server        = DB2/LINUXX8664 11.5.0.0
     SQL authorization ID   = DB2INST1
     Local database alias   = <database_name>
    
    
     DROP FUNCTION pty.ins_enc_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_unicode_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_unicode_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_unicode_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_varcharfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_char
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_charfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_lvarchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_lvcfbd
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_date
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_time
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_timestamp
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_integer
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_smallint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_bigint
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_real
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_double
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_blob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_enc_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_enc_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_dec_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.sel_clob
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.have_sel_perm
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.have_ins_perm
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.have_upd_perm
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.toggle_trace
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.ins_hash_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.upd_hash_varchar
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.getversion
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.getcoreversion
     DB20000I  The SQL command completed successfully.
    
     DROP FUNCTION pty.whoami
     DB20000I  The SQL command completed successfully.
    
     CONNECT RESET
     DB20000I  The SQL command completed successfully.
    

Uninstalling the Existing Version of the Protector

To uninstall the existing version of the protector:

  1. Uninstall the RPAgent.
  2. Uninstall the Log Forwarder.

Uninstalling the RPAgent

Before uninstalling the RPAgent, Protegrity recommends creating a backup.

  1. Log in to the DB2 Database server.
  2. Navigate to the /opt/protegrity/rpagent/bin/ directory.
  3. To stop the RPAgent, run the following command:
    rpagentctrl stop
    
  4. Navigate to the /opt/protegrity/ directory.
  5. Delete the /opt/protegrity/rpagent/ directory.

Uninstalling the Log Forwarder

Before uninstalling the Log Forwarder, Protegrity recommends creating a backup.

  1. Log in to the DB2 Database server.
  2. Navigate to the /opt/protegrity/logforwarder/bin directory.
  3. To stop the Log Forwarder, run the following command:
    logforwarderctrl stop
    
  4. Navigate to the /opt/protegrity/ directory.
  5. Delete the /opt/protegrity/logforwarder/ directory.

Deleting the Installation Directory

After removing the RPAgent and the Log Forwarder, delete the installation directory.

Note: Before deleting the installation directory, ensure the database and all the services are stopped.

  1. Log in to the DB2 Database server.
  2. Navigate to the /opt/protegrity/databaseprotector/ directory.
  3. To delete the db2 directory, run the following command:
    rm -rf db2
    

Installing the New Version of the Protector

After all the services are stopped and components removed, install the latest version of the protector, recreate the UDFs, and restart the RPAgent.

Note: For more information on installing the protector, refer to Installing the DB2 Database Protector.

Creating the User Defined Functions

For more information on creating the UDFs, refer to Creating the User Defined Functions.

Starting the RPAgent

  1. Log in to the DB2 Database server.
  2. Navigate to the /opt/protegrity/rpagent/bin directory.
  3. To start the RPAgent, run the following command:
    rpagentctrl start