dbcl-history

Last updated: January 21, 2026

Note: This is a Liquibase Secure feature, so you need a Liquibase Secure License Key to use it.

dbcl-history is a command that displays the DATABASECHANGELOGHISTORY table. By default, the command displays the table in STDOUT. It is available in Liquibase 4.27.0 and later. It is only available to Liquibase Secure users.

Uses

The DATABASECHANGELOGHISTORY (DBCLH) table contains all changes ever made to your database with Liquibase, including rollbacks and other changes not included in the DATABASECHANGELOG table (DBCL). You can see the DBCLH table in your database by running a SQL query:

SELECT * FROM DATABASECHANGELOGHISTORY;

However, you may also want Liquibase to display the DBCLH in your command line or an output file without running a SQL query. You may also want to display it in a machine-readable format. The dbcl-history command lets you do all these things. If you have Structured Logging enabled, Liquibase also sends the output of dbcl-history to structured logs. This lets you automatically feed your data into third-party logging tools.

Easily accessing the DBCLH table enables you to identify patterns in your deployments that later have to be rolled back. By understanding these patterns, you can avoid these problems and speed up your development cycle.

Syntax

To display the DBCLH table in STDOUT, run the dbcl-history command in your command line or in a flow file. For example, to generate human-readable JSON output:

CLI example

liquibase dbcl-history --format=JSON_PRETTY --verbose

You can use the --output-file global parameter to send command output to a file instead of the console:

liquibase --output-file=dbclh_2024-03-15.json dbcl-history --format=JSON_PRETTY --verbose

loading

Parameters

Global parameters

Parameter

Definition

Requirement

--license-key=<string>

Your Liquibase Pro license key

Required

--dbclhistory-capture-extensions=<true|false>

If true, installed extensions are captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-extensions.

Optional

--dbclhistory-capture-sql=<true|false>

If true, SQL generated by commands is captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-sql.

Optional

--dbclhistory-enabled=<true|false>

Enables the DATABASECHANGELOGHISTORY table. This table includes records of rollbacks, dropAlls, and repeated runOnChange type activity, which is not available in the standard DATABASECHANGELOG table. Liquibase 4.27.0+. Default: false. See --dbclhistory-enabled.

Optional

--dbclhistory-severity=<string>

The exit code for Liquibase to return if an exception is encountered while recording events to the DATABASECHANGELOGHISTORY table. Valid values are INFO (0), MINOR (1), MAJOR (2), CRITICAL (3), and BLOCKER (4), from least severe to most severe. Liquibase 4.27.0+. Default: 1. See --dbclhistory-severity.

Optional

--output-file=<string>

File path to where the command output will be written. If not specified, output goes to STDOUT. See --output-file.

Optional

Command parameters

Parameter

Definition

Requirement

--url=<string>

The JDBC database connection URL.

Required

--default-catalog-name=<string>

Name of the default catalog to use for the database connection

Optional

--default-schema-name=<string>

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

--driver=<string>

The JDBC driver class

Optional

--driver-properties-file=<string>

The JDBC driver properties file

Optional

--format=<string>

Specifies the format of the output. Valid values are JSON and JSON_PRETTY. Specifying JSON formats the output as machine-readable JSON without indentation or line breaks. Specifying JSON_PRETTY adds whitespace to be human-readable. Default: JSON.

Optional

--password=<string>

Password to connect to the target database.

Optional

--username=<string>

Username to connect to the target database.

Optional

--verbose=<true|false>

Specifies the detail level of the command's output. Default: false.

Optional

Global parameters

Parameter

Definition

Requirement

globalArgs: { license-key: "<string>" }

Your Liquibase Pro license key

Required

globalArgs: { dbclhistory-capture-extensions: "<true|false>" }

If true, installed extensions are captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-extensions.

Optional

globalArgs: { dbclhistory-capture-sql: "<true|false>" }

If true, SQL generated by commands is captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-sql.

Optional

globalArgs: { dbclhistory-enabled: "<true|false>" }

Enables the DATABASECHANGELOGHISTORY table. This table includes records of rollbacks, dropAlls, and repeated runOnChange type activity, which is not available in the standard DATABASECHANGELOG table. Liquibase 4.27.0+. Default: false. See --dbclhistory-enabled.

Optional

globalArgs: { dbclhistory-severity: "<string>" }

The exit code for Liquibase to return if an exception is encountered while recording events to the DATABASECHANGELOGHISTORY table. Valid values are INFO (0), MINOR (1), MAJOR (2), CRITICAL (3), and BLOCKER (4), from least severe to most severe. Liquibase 4.27.0+. Default: 1. See --dbclhistory-severity.

Optional

globalArgs: { output-file: "<string>" }

File path to where the command output will be written. If not specified, output goes to STDOUT. See --output-file.

Optional

Command parameters

Parameter

Definition

Requirement

cmdArgs: { url: "<string>" }

The JDBC database connection URL.

Required

cmdArgs: { default-catalog-name: "<string>" }

Name of the default catalog to use for the database connection

Optional

cmdArgs: { default-schema-name: "<string>" }

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

cmdArgs: { driver: "<string>" }

The JDBC driver class

Optional

cmdArgs: { driver-properties-file: "<string>" }

The JDBC driver properties file

Optional

cmdArgs: { format: "<string>" }

Specifies the format of the output. Valid values are JSON and JSON_PRETTY. Specifying JSON formats the output as machine-readable JSON without indentation or line breaks. Specifying JSON_PRETTY adds whitespace to be human-readable. Default: JSON.

Optional

cmdArgs: { password: "<string>" }

Password to connect to the target database.

Optional

cmdArgs: { username: "<string>" }

Username to connect to the target database.

Optional

cmdArgs: { verbose: "<true|false>" }

Specifies the detail level of the command's output. Default: false.

Optional

Global parameters

Parameter

Definition

Requirement

liquibase.licenseKey: <string>

Your Liquibase Pro license key

Required

liquibase.dbclhistory.captureExtensions: <true|false>

If true, installed extensions are captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-extensions.

Optional

liquibase.dbclhistory.captureSql: <true|false>

If true, SQL generated by commands is captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-sql.

Optional

liquibase.dbclhistory.enabled: <true|false>

Enables the DATABASECHANGELOGHISTORY table. This table includes records of rollbacks, dropAlls, and repeated runOnChange type activity, which is not available in the standard DATABASECHANGELOG table. Liquibase 4.27.0+. Default: false. See --dbclhistory-enabled.

Optional

liquibase.dbclhistory.severity: <string>

The exit code for Liquibase to return if an exception is encountered while recording events to the DATABASECHANGELOGHISTORY table. Valid values are INFO (0), MINOR (1), MAJOR (2), CRITICAL (3), and BLOCKER (4), from least severe to most severe. Liquibase 4.27.0+. Default: 1. See --dbclhistory-severity.

Optional

liquibase.outputFile: <string>

File path to where the command output will be written. If not specified, output goes to STDOUT. See --output-file.

Optional

Command parameters

Parameter

Definition

Requirement

liquibase.command.url: <string>

liquibase.command.dbclHistory.url: <string>

The JDBC database connection URL.

Required

liquibase.command.defaultCatalogName: <string>

liquibase.command.dbclHistory.defaultCatalogName: <string>

Name of the default catalog to use for the database connection

Optional

liquibase.command.defaultSchemaName: <string>

liquibase.command.dbclHistory.defaultSchemaName: <string>

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

liquibase.command.driver: <string>

liquibase.command.dbclHistory.driver: <string>

The JDBC driver class

Optional

liquibase.command.driverPropertiesFile: <string>

liquibase.command.dbclHistory.driverPropertiesFile: <string>

The JDBC driver properties file

Optional

liquibase.command.format: <string>

liquibase.command.dbclHistory.format: <string>

Specifies the format of the output. Valid values are JSON and JSON_PRETTY. Specifying JSON formats the output as machine-readable JSON without indentation or line breaks. Specifying JSON_PRETTY adds whitespace to be human-readable. Default: JSON.

Optional

liquibase.command.password: <string>

liquibase.command.dbclHistory.password: <string>

Password to connect to the target database.

Optional

liquibase.command.username: <string>

liquibase.command.dbclHistory.username: <string>

Username to connect to the target database.

Optional

liquibase.command.verbose: <true|false>

liquibase.command.dbclHistory.verbose: <true|false>

Specifies the detail level of the command's output. Default: false.

Optional

Global parameters

Parameter

Definition

Requirement

JAVA_OPTS=-Dliquibase.licenseKey=<string>

Your Liquibase Pro license key

Required

JAVA_OPTS=-Dliquibase.dbclhistory.captureExtensions=<true|false>

If true, installed extensions are captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-extensions.

Optional

JAVA_OPTS=-Dliquibase.dbclhistory.captureSql=<true|false>

If true, SQL generated by commands is captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-sql.

Optional

JAVA_OPTS=-Dliquibase.dbclhistory.enabled=<true|false>

Enables the DATABASECHANGELOGHISTORY table. This table includes records of rollbacks, dropAlls, and repeated runOnChange type activity, which is not available in the standard DATABASECHANGELOG table. Liquibase 4.27.0+. Default: false. See --dbclhistory-enabled.

Optional

JAVA_OPTS=-Dliquibase.dbclhistory.severity=<string>

The exit code for Liquibase to return if an exception is encountered while recording events to the DATABASECHANGELOGHISTORY table. Valid values are INFO (0), MINOR (1), MAJOR (2), CRITICAL (3), and BLOCKER (4), from least severe to most severe. Liquibase 4.27.0+. Default: 1. See --dbclhistory-severity.

Optional

JAVA_OPTS=-Dliquibase.outputFile=<string>

File path to where the command output will be written. If not specified, output goes to STDOUT. See --output-file.

Optional

Command parameters

Parameter

Definition

Requirement

JAVA_OPTS=-Dliquibase.command.url=<string>

JAVA_OPTS=-Dliquibase.command.dbclHistory.url=<string>

The JDBC database connection URL.

Required

JAVA_OPTS=-Dliquibase.command.defaultCatalogName=<string>

JAVA_OPTS=-Dliquibase.command.dbclHistory.defaultCatalogName=<string>

Name of the default catalog to use for the database connection

Optional

JAVA_OPTS=-Dliquibase.command.defaultSchemaName=<string>

JAVA_OPTS=-Dliquibase.command.dbclHistory.defaultSchemaName=<string>

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

JAVA_OPTS=-Dliquibase.command.driver=<string>

JAVA_OPTS=-Dliquibase.command.dbclHistory.driver=<string>

The JDBC driver class

Optional

JAVA_OPTS=-Dliquibase.command.driverPropertiesFile=<string>

JAVA_OPTS=-Dliquibase.command.dbclHistory.driverPropertiesFile=<string>

The JDBC driver properties file

Optional

JAVA_OPTS=-Dliquibase.command.format=<string>

JAVA_OPTS=-Dliquibase.command.dbclHistory.format=<string>

Specifies the format of the output. Valid values are JSON and JSON_PRETTY. Specifying JSON formats the output as machine-readable JSON without indentation or line breaks. Specifying JSON_PRETTY adds whitespace to be human-readable. Default: JSON.

Optional

JAVA_OPTS=-Dliquibase.command.password=<string>

JAVA_OPTS=-Dliquibase.command.dbclHistory.password=<string>

Password to connect to the target database.

Optional

JAVA_OPTS=-Dliquibase.command.username=<string>

JAVA_OPTS=-Dliquibase.command.dbclHistory.username=<string>

Username to connect to the target database.

Optional

JAVA_OPTS=-Dliquibase.command.verbose=<true|false>

JAVA_OPTS=-Dliquibase.command.dbclHistory.verbose=<true|false>

Specifies the detail level of the command's output. Default: false.

Optional

Global parameters

Parameter

Definition

Requirement

LIQUIBASE_LICENSE_KEY=<string>

Your Liquibase Pro license key

Required

LIQUIBASE_DBCLHISTORY_CAPTURE_EXTENSIONS=<true|false>

If true, installed extensions are captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-extensions.

Optional

LIQUIBASE_DBCLHISTORY_CAPTURE_SQL=<true|false>

If true, SQL generated by commands is captured in the DATABASECHANGELOGHISTORY table. Liquibase 4.27.0+. Default: true. See --dbclhistory-capture-sql.

Optional

LIQUIBASE_DBCLHISTORY_ENABLED=<true|false>

Enables the DATABASECHANGELOGHISTORY table. This table includes records of rollbacks, dropAlls, and repeated runOnChange type activity, which is not available in the standard DATABASECHANGELOG table. Liquibase 4.27.0+. Default: false. See --dbclhistory-enabled.

Optional

LIQUIBASE_DBCLHISTORY_SEVERITY=<string>

The exit code for Liquibase to return if an exception is encountered while recording events to the DATABASECHANGELOGHISTORY table. Valid values are INFO (0), MINOR (1), MAJOR (2), CRITICAL (3), and BLOCKER (4), from least severe to most severe. Liquibase 4.27.0+. Default: 1. See --dbclhistory-severity.

Optional

LIQUIBASE_OUTPUT_FILE=<string>

File path to where the command output will be written. If not specified, output goes to STDOUT. See --output-file.

Optional

Command parameters

Parameter

Definition

Requirement

LIQUIBASE_COMMAND_URL=<string>

LIQUIBASE_COMMAND_DBCL_HISTORY_URL=<string>

The JDBC database connection URL.

Required

LIQUIBASE_COMMAND_DEFAULT_CATALOG_NAME=<string>

LIQUIBASE_COMMAND_DBCL_HISTORY_DEFAULT_CATALOG_NAME=<string>

Name of the default catalog to use for the database connection

Optional

LIQUIBASE_COMMAND_DEFAULT_SCHEMA_NAME=<string>

LIQUIBASE_COMMAND_DBCL_HISTORY_DEFAULT_SCHEMA_NAME=<string>

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

LIQUIBASE_COMMAND_DRIVER=<string>

LIQUIBASE_COMMAND_DBCL_HISTORY_DRIVER=<string>

The JDBC driver class

Optional

LIQUIBASE_COMMAND_DRIVER_PROPERTIES_FILE=<string>

LIQUIBASE_COMMAND_DBCL_HISTORY_DRIVER_PROPERTIES_FILE=<string>

The JDBC driver properties file

Optional

LIQUIBASE_COMMAND_FORMAT=<string>

LIQUIBASE_COMMAND_DBCL_HISTORY_FORMAT=<string>

Specifies the format of the output. Valid values are JSON and JSON_PRETTY. Specifying JSON formats the output as machine-readable JSON without indentation or line breaks. Specifying JSON_PRETTY adds whitespace to be human-readable. Default: JSON.

Optional

LIQUIBASE_COMMAND_PASSWORD=<string>

LIQUIBASE_COMMAND_DBCL_HISTORY_PASSWORD=<string>

Password to connect to the target database.

Optional

LIQUIBASE_COMMAND_USERNAME=<string>

LIQUIBASE_COMMAND_DBCL_HISTORY_USERNAME=<string>

Username to connect to the target database.

Optional

LIQUIBASE_COMMAND_VERBOSE=<true|false>

LIQUIBASE_COMMAND_DBCL_HISTORY_VERBOSE=<true|false>

Specifies the detail level of the command's output. Default: false.

Optional

Output

[{"arguments":"--dbclhistory-enabled=true --license-key ***** update","author":"your.name","command":"update","comments":"example-comment","contexts":"example-context","deploymentId":"5441340119","description":"createTable tableName=person","end":"2024-01-16 16:42:20.158","executedSql":"CREATE TABLE PUBLIC.person (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, name VARCHAR(50) NOT NULL, address1 VARCHAR(50), address2 VARCHAR(50), city VARCHAR(30), CONSTRAINT PK_PERSON PRIMARY KEY (id));","extensions":"internal\\lib\\commons-collections4.jar: Apache Commons Collections 4.4.0 By The Apache Software Foundation, internal\\lib\\commons-lang3.jar: Apache Commons Lang 3.13.0 By The Apache Software Foundation, internal\\lib\\commons-text.jar: Apache Commons Text 1.11.0 By The Apache Software Foundation, internal\\lib\\h2.jar: H2 Database Engine 2.2.224 By H2 Group, internal\\lib\\hsqldb.jar: HSQLDB 2.7.2 By The HSQL Development Group, internal\\lib\\jaxb-api.jar: jaxb-api 2.3.1 By Oracle Corporation, internal...","filename":"example-changelog.xml","hostname":"LAPTOP-74GFS93J","id":"1","internalCommand":"update","labels":"example-label","liquibaseInterface":"cli","liquibaseVersion":"DEV","md5Sum":"9:884ea70a8e61427b7b1a217a62954c48","outcome":"success","start":"2024-01-16 16:42:20.144","systemUser":"liquibase-user","tag":"null"},{"arguments":"--dbclhistory-enabled=true --license-key ***** update","author":"your.name","command":"update","comments":"example-comment","contexts":"example-context","deploymentId":"5441340119","description":"createTable tableName=company","end":"2024-01-16 16:42:20.216","executedSql":"CREATE TABLE PUBLIC.company (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, name VARCHAR(50) NOT NULL, address1 VARCHAR(50), address2 VARCHAR(50), city VARCHAR(30), CONSTRAINT PK_COMPANY PRIMARY KEY (id));","extensions":"internal\\lib\\commons-collections4.jar: Apache Commons Collections 4.4.0 By The Apache Software Foundation, internal\\lib\\commons-lang3.jar: Apache Commons Lang 3.13.0 By The Apache Software Foundation, internal\\lib\\commons-text.jar: Apache Commons Text 1.11.0 By The Apache Software Foundation, internal\\lib\\h2.jar: H2 Database Engine 2.2.224 By H2 Group, internal\\lib\\hsqldb.jar: HSQLDB 2.7.2 By The HSQL Development Group, internal\\lib\\jaxb-api.jar: jaxb-api 2.3.1 By Oracle Corporation, internal...","filename":"example-changelog.xml","hostname":"LAPTOP-74GFS93J","id":"2","internalCommand":"update","labels":"example-label","liquibaseInterface":"cli","liquibaseVersion":"DEV","md5Sum":"9:0160e0cb8fe825cbd40207ef539e0d08","outcome":"success","start":"2024-01-16 16:42:20.208","systemUser":"liquibase-user","tag":"null"},{"arguments":"--dbclhistory-enabled=true --license-key ***** update","author":"other.dev","command":"update","comments":"example-comment","contexts":"example-context","deploymentId":"5441340119","description":"addColumn tableName=person","end":"2024-01-16 16:42:20.26","executedSql":"ALTER TABLE PUBLIC.person ADD country VARCHAR(2);","extensions":"internal\\lib\\commons-collections4.jar: Apache Commons Collections 4.4.0 By The Apache Software Foundation, internal\\lib\\commons-lang3.jar: Apache Commons Lang 3.13.0 By The Apache Software Foundation, internal\\lib\\commons-text.jar: Apache Commons Text 1.11.0 By The Apache Software Foundation, internal\\lib\\h2.jar: H2 Database Engine 2.2.224 By H2 Group, internal\\lib\\hsqldb.jar: HSQLDB 2.7.2 By The HSQL Development Group, internal\\lib\\jaxb-api.jar: jaxb-api 2.3.1 By Oracle Corporation, internal...","filename":"example-changelog.xml","hostname":"LAPTOP-74GFS93J","id":"3","internalCommand":"update","labels":"example-label","liquibaseInterface":"cli","liquibaseVersion":"DEV","md5Sum":"9:cf75e37ee64b860fb5d1d1bc943c75fb","outcome":"success","start":"2024-01-16 16:42:20.249","systemUser":"liquibase-user","tag":"null"}]Liquibase command 'dbcl-history' was executed successfully.

loading

By default, Liquibase limits the length of the extensions and sql keys to 500 characters. You can specify --verbose to show the full strings.

loading