Hello,
I have done it this way:
1- This is my liquibase.properties
#Liquibase.properties
driver: oracle.jdbc.OracleDriver
classpath: ./ojdbc8.jar
url: jdbc:oracle:thin:@localhost:1521:XE
username: hr
password: hr
2- This is my changelog test.xml:
3- This is my testSql.sql file :
DECLARE
e_error EXCEPTION;
PRAGMA exception_init ( e_error,-00942 );
BEGIN
EXECUTE IMMEDIATE ‘drop table AD_GROUP_ROLE_MAPPING’;
EXCEPTION
WHEN e_error THEN
NULL;
END;
/
CREATE TABLE AD_GROUP_ROLE_MAPPING
(
AD_GROUP_NAME VARCHAR2(200) NOT NULL,
ROLE_ID NUMBER,
PRIMARY KEY (AD_GROUP_NAME)
)
4- I run the liquibase updateToTagSQL command :
liquibase --changeLogFile=test.xml --outputFile=out.sql updateToTagSQL TAG2134
5- This is the final output:
– *********************************************************************
– Update to ‘TAG2134’ Database Script
– *********************************************************************
– Change Log: test.xml
– Ran at: 02/06/2021 10:19
– Against: HR@jdbc:oracle:thin:@localhost:1521:XE
– Liquibase version: 4.3.5
– *********************************************************************
– Create Database Lock Table
CREATE TABLE HR.DATABASECHANGELOGLOCK (ID INTEGER NOT NULL, LOCKED NUMBER(1) NOT NULL, LOCKGRANTED TIMESTAMP, LOCKEDBY VARCHAR2(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID));
– Initialize Database Lock Table
DELETE FROM HR.DATABASECHANGELOGLOCK;
INSERT INTO HR.DATABASECHANGELOGLOCK (ID, LOCKED) VALUES (1, 0);
– Lock Database
UPDATE HR.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = ‘DESKTOP-AHMED (192.168.56.1)’, LOCKGRANTED = TO_TIMESTAMP(‘2021-06-02 10:19:44.937’, ‘YYYY-MM-DD HH24:MI:SS.FF’) WHERE ID = 1 AND LOCKED = 0;
– Create Database Change Log Table
CREATE TABLE HR.DATABASECHANGELOG (ID VARCHAR2(255) NOT NULL, AUTHOR VARCHAR2(255) NOT NULL, FILENAME VARCHAR2(255) NOT NULL, DATEEXECUTED TIMESTAMP NOT NULL, ORDEREXECUTED INTEGER NOT NULL, EXECTYPE VARCHAR2(10) NOT NULL, MD5SUM VARCHAR2(35), DESCRIPTION VARCHAR2(255), COMMENTS VARCHAR2(255), TAG VARCHAR2(255), LIQUIBASE VARCHAR2(20), CONTEXTS VARCHAR2(255), LABELS VARCHAR2(255), DEPLOYMENT_ID VARCHAR2(10));
– Changeset test.xml::1::krzysd
DECLARE
e_error EXCEPTION;
PRAGMA exception_init ( e_error,-00942 );
BEGIN
EXECUTE IMMEDIATE ‘drop table AD_GROUP_ROLE_MAPPING’;
EXCEPTION
WHEN e_error THEN
NULL;
END;/
CREATE TABLE AD_GROUP_ROLE_MAPPING
(
AD_GROUP_NAME VARCHAR2(200) NOT NULL,
ROLE_ID NUMBER,
PRIMARY KEY (AD_GROUP_NAME)
)/
INSERT INTO HR.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES (‘1’, ‘krzysd’, ‘test.xml’, SYSTIMESTAMP, 1, ‘8:f4bd3e9aaaf1952e45f18eaf849eaa76’, ‘sqlFile’, ‘’, ‘EXECUTED’, NULL, NULL, ‘4.3.5’, ‘2625585326’);
– Changeset test.xml::TAG2134::ahmed1
INSERT INTO HR.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID, TAG) VALUES (‘TAG2134’, ‘ahmed1’, ‘test.xml’, SYSTIMESTAMP, 2, ‘8:334b4743b886a8813524c03189b50c6f’, ‘tagDatabase’, ‘’, ‘EXECUTED’, NULL, NULL, ‘4.3.5’, ‘2625585326’, ‘TAG2134’);
– Release Database Lock
UPDATE HR.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;
I hope this help you.
Regards,
Ahmed.