Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Overview

When a Datical/Liquibase Enterprise/Liquibase Business deployment process is aborted or killed, its database process lock table (DATABASECHANGELOGLOCK) is left with a lock record that prevents subsequent packaging or deployment jobs from being able to run. In order to allow future processes to proceed, the table needs to be cleared out by manually updating the column to 0 (zero).  This can happen with any of the supported database platforms.

If the target is an Oracle database the DATICAL_SPERRORLOG table might also be held open.  The DATICAL_SPERRORLOG table is used to capture output for scripts executed using sqlplus during a deployment.

Newer versions of Datical have better ways of handling the locks, so we recommend upgrading to Datical DB version 7.3 or higher for the smoothest handling of the locks.  Please see below for different instructions for different versions of Datical.

Sample Error

Below is sample text you may see in the Deploy Report if there is a lock on the databasechangeloglock table:

...

If you are using Oracle with Datical version 7.2 and you need to manually terminate a packager job or a deploy job, the DATICAL_SPERRORLOG table may be held open on your Datical tracking schema.  You may need to disconnect the session for the user that runs Datical.  The DATICAL_SPERRORLOG table is used to capture output for scripts executed using sqlplus during a deployment.

Here is how you can disconnect the session:

  • Run a query to find the process
Code Block
SELECT s.inst_id,
   s.sid,
   s.serial#,
   p.spid,
   s.username,
   s.program FROM   gv$session s
   JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id;
  • Disconnect the session with the following statement.
Code Block
ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;

...

If you are using Oracle with Datical version 7.0 or lower 2 and you need to manually terminate a packager job or a deploy job, the DATICAL_SPERRORLOG table may be held open on your Datical tracking schema.  You may need to kill disconnect the session for the user that runs Datical.  The DATICAL_SPERRORLOG table is used to capture output for scripts executed using sqlplus during a deployment.

Here is how you can disconnect the session:

  • Run a query to find the process
Code Block
SELECT s.inst_id,
   s.sid,
   s.serial#,
   p.spid,
   s.username,
   s.program FROM   gv$session s
   JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id;
  • Disconnect the session with the following statement.
Code Block
ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;


Known issue with Oracle: When running this command to clear locks with Datical versions 7.0 or lower in an Oracle database you may see the following warning message relating to "MBeans":

...

Update the DATABASECHANGELOGLOCK table manually.:

Code Block
languagesql
titleSQL
UPDATE DATABASECHANGELOGLOCK SET LOCKED=0;

Note that if you update the DATABASECHANGELOGLOCK table manually, for Oracle you may also have to manually check to see if the DATICAL_SPERRORLOG table is held open on your Datical tracking schema.  You may need to kill disconnect the session for the user that runs Datical, then manually drop the .  The DATICAL_SPERRORLOG table is used to capture output for scripts executed using sqlplus during a deployment.

Here is how you can disconnect the session:

  • Run a query to find the process
Code Block
SELECT s.inst_id,
   s.sid,
   s.serial#,
   p.spid,
   s.username,
   s.program FROM   gv$session s
   JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id;
  • Disconnect the session with the following statement.
Code Block
ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;