3 SQLclでのLiquibaseのサポート

この章では、SQLclのLiquibase機能について説明します。内容は次のとおりです。

3.1 SQLclでのLiquibaseについて

Liquibaseは、データベース・スキーマの変更を追跡、管理、および適用するための、データベースに依存しないオープンソースのライブラリです。

Liquibaseの主要な概念の理解については、主要な概念を参照してください。

ノート:

SQL Developerインストールの一部であるSQLclでは、Liquibaseは使用できません。この機能を使用するには、スタンドアロンのSQLclオファリングをダウンロードする必要があります。

SQLclのLiquibase機能により、コマンドを実行して、単一オブジェクトまたは完全なスキーマ(変更セットと変更ログ)の変更ログを生成できます。これらのオブジェクトは、SQLclを使用するか、従来のLiquibaseインタフェースを使用して手動で処理できます。

SQLclのLiquibase機能を使用すると、次のことができます。

  • 単一オブジェクトの変更ログを生成して実行する
  • オブジェクトの依存性を持つスキーマ変更セットを生成して実行する
  • 作成中に、オブジェクトの依存性に基づいて変更セットを自動的にソートする
  • 変更セットまたは変更ログの実行に関するすべてのSQL文を、生成時に記録する
  • 変更セットおよび変更ログの完全なロールバック・サポートを自動的に提供する

3.2 Liquibaseを使用するための要件

Liquibase機能を使用するための2つの重要な側面は、Oracleデータベースにおけるオブジェクトの取得とデプロイです。

オブジェクトの取得

オブジェクトまたはスキーマを取得するには、SQLcl 19.2以降がインストールされている必要があります。

このリリースでは、SQLclで接続しているスキーマからのみオブジェクトを取得できます。また、ファイルを保存するディレクトリに対する書込み権限も必要です。

スキーマ全体を取得する場合、接続先のユーザーに表を作成する権限が必要です。DATABASECHANGELOG_EXPORT表は、オブジェクトの詳細を収集して正しくソートするために内部的に作成されます。作成されたオブジェクトは、取得プロセスから自動的に除外され、取得の完了時に破棄されます。

オブジェクトのデプロイ

Liquibaseは、DATABASECHANGELOG表を使用して、実行された変更セットを追跡します。DATABASECHANGELOGLOCK表は、Liquibaseのインスタンスが確実に一度に1つのみ実行されているようにします。DATABASECHANGELOG_ACTIONS表は、オブジェクトの状態とデプロイメント中に実行されたSQL文を追跡します。

  • SQLcl

    SQLclを介してデータベースに変更をデプロイするには、19.2リリース以降および表を作成する権限が必要です。デプロイする変更を介して任意のオブジェクト型を作成するには、必要な権限を持っている必要があります。

  • Liquibase

    Liquibaseを直接使用して変更セットをデプロイする場合、次のものが必要です。

    • Liquibase環境にインストールされている拡張機能。dbtools-liquibase.jarファイルをliquibase/lib/extに追加します。
    • 表およびパッケージを作成する権限。

3.3 サポートされているタイプ

DDLタイプでは、作成構文または置換構文を使用します。変更を適用する前にオブジェクトのスナップショットが取得されるため、最後の既知の状態への自動ロールバックがサポートされます。

SXMLタイプは、自動ロールバック・サポートによる自動変更生成をサポートします。

DDLタイプには、独自の変更タイプがあります。

  • CONSTRAINT
  • DIMENSION
  • DIRECTORY
  • FUNCTION
  • JOB
  • OBJECT_GRANT
  • PACKAGE_BODY
  • PACKAGE_SPEC
  • PROCEDURE
  • PUBLIC_SYNONYM
  • REF_CONSTRAINT
  • SYNONYM
  • TRIGGER
  • TYPE BODY
  • TYPE SPEC

SXMLタイプは、SXML変更タイプを共有します。

  • AQ_QUEUE
  • AQ_QUEUE_TABLE
  • AQ_TRANSFORM
  • ASSOCIATION
  • AUDIT
  • AUDIT_OBJ
  • CLUSTER
  • CONTEXT
  • DB_LINK
  • DEFAULT_ROLE
  • FGA_POLICY
  • JOB
  • LIBRARY
  • MATERIALIZED_VIEW
  • MATERIALIZED_VIEW_LOG
  • OPERATOR
  • PROFILE
  • PROXY
  • REFRESH_GROUP
  • RESOURCE_COST
  • RLS_CONTEXT
  • RLS_GROUP
  • RMGR_CONSUMER_GROUP
  • RMGR_INTITIAL_CONSUMER_GROUP
  • RMGR_PLAN
  • RMGR_PLAN_DIRECTIVE
  • ROLE
  • ROLLBACK_SEGMENT
  • SEQUENCE
  • TABLE
  • TABLESPACE
  • TRIGGER XS_ACL
  • TRUSTED_DB_LINK
  • USER
  • VIEW
  • XMLSCHEMA
  • XS_ACL_PARAM INDEX
  • XS_DATA_SECURITY
  • XS_ROLE
  • XS_ROLESET
  • XS_ROLE_GRANT
  • XS_SECURITY_CLASS
  • XS_USER

3.4 SQLclでサポートされているLiquibaseコマンド

SQLclのLiquibaseコマンドは、liquibaseまたはlbを使用して起動できます。

使用可能なすべてのコマンドのリストを表示するには、引数なしでliquibaseまたはlbを実行します。

3.4.1 LB GENOBJECT

APEX、ORDS RESTfulサービス・モジュールまたはデータベース・オブジェクトの変更ログを生成します。

APEX

構文

lb genobject -type {APEX} -applicationid APPLICATIONID -workspaceid WORKSPACEID 
[-instance] [-expWorkspace][-expMinimal] [-expFiles] [-skipExportDate] [-expPubReports] [-expSavedReports] 
[-expIRNotif] [-expTranslations] [-expFeedback] [-expTeamdevdata] [-deploymentSystem DEPLOYMENTSYSTEM] 
[-expFeedbackSince EXPFEEDBACKSINCE] [-expOriginalIds] [-expNoSubscriptions] [-expComments] 
[-expSupportingObjects {Y,N,I}] [-expACLAssignments] [-dir DIR] [-list LIST] 
[-changesSince CHANGESSINCE] [-changesBy CHANGESBY] [-nochecksum] [-split] 
[-expComponents EXPCOMPONENTS] [-context CONTEXT] [-label LABEL] 
[-emit_schema] [-fail] [-replace] [-runonchange] [-runalways] [-debug]

APEXオブジェクトの変更ログを生成します。

名前付きパラメータ

パラメータ 説明 デフォルト
-type {APEX} APEXオブジェクトの出力を生成します。 -
-applicationid APPLICATIONID エクスポートするアプリケーションのIDを指定します。 -
-workspaceid WORKSPACEID エクスポートするすべてのアプリケーションまたはエクスポートするワークスペースのワークスペースIDを指定します。 -
-instance すべてのアプリケーションをエクスポートします。 False
-expWorkspace -workspaceidで指定されたワークスペースをエクスポートします。-workspaceidが指定されていない場合はすべてのワークスペースをエクスポートします。 False
-expMinimal ワークスペース定義、ユーザーおよびグループのみエクスポートします。 False
-expFiles -workspaceidで指定されたすべてのワークスペース・ファイルをエクスポートします。 False
-skipExportDate アプリケーション・エクスポート・ファイルからエクスポート日付を除外します。 False
-expPubReports ユーザーが保存したすべてのパブリック対話型レポートをエクスポートします。 False
-expSavedReports ユーザーが保存したすべての対話型レポートをエクスポートします。 False
-expIRNotif すべての対話型レポート通知をエクスポートします。 False
-expTranslations 変換リポジトリから、変換マッピングとすべてのテキストをエクスポートします。 False
-expFeedback すべてのワークスペースまたは-workspaceidで指定されたワークスペースのチーム開発フィードバックをエクスポートします。 False
-expTeamdevdata すべてのワークスペースまたは-workspaceidで指定されたワークスペースのチーム開発データをエクスポートします。 False
-deploymentSystem DEPLOYMENTSYSTEM エクスポートするフィードバックのデプロイメント・システムを指定します。 -
-expFeedbackSince EXPFEEDBACKSINCE YYYYMMDD書式の日付以降のチーム開発フィードバックをエクスポートします。 -
-expOriginalIds アプリケーションのインポート時のIDが、エクスポートにそのまま表示されます。 False
-expNoSubscriptions サブスクライブしているコンポーネントへの参照をエクスポートしません。 False
-expComments 開発者コメントをエクスポートします。 False
-expSupportingObjects {Y,N,I} サポートしているオブジェクトをエクスポートします。はい(Y)、いいえ(N)またはインストール(I)を渡して、デフォルトをオーバーライドします(デフォルト: N) N
-expACLAssignments ACLユーザー・ロール割当てをエクスポートします。 False
-dir DIR 指定されたディレクトリ内のすべてのファイルを保存します。たとえば、-dir some/sub/directoryです。 -
-list LIST アプリケーションのワークスペースまたはコンポーネントにある変更されたすべてのアプリケーションをリストします。 -
-changesSince CHANGESSINCE 日付パラメータを必要とします(yyyy-mm-dd)。-listの値を、指定の日付以降の変更に限定します。 -
-changesBy CHANGESBY 文字列パラメータを必要とします。-listの値を、指定のユーザーによる変更に限定します。 -
-nochecksum 内容が変更されていない場合でも、既存のファイルを上書きします。 False
-split アプリケーションを複数のファイルに分割します。 False
-expComponents EXPCOMPONENTS アプリケーション・コンポーネントをエクスポートします。残りのすべてのパラメータは、TYPE: IDという形式にする必要があります。 -

共通ジェネレータ・パラメータ

パラメータ 説明 デフォルト
-context CONTEXT 実行する変更セット・コンテキストを指定します。 -
-label LABEL ラベルを使用して変更ログをフィルタします。 -
-emit_schema DDLの生成時にスキーマを含めます。 False
-fail 変更セットにfailOnError値を設定します。 False
-replace 変更セットにreplaceIfExists値を設定します。 False
-runonchange 変更セットにrunOnChange値を設定します。 False
-runalways 変更セットにrunAlways値を設定します。 False
-debug 追加のデバッグ出力を生成して表示します。 False

SQL> lb genobject -type apex -applicationid 4900
Exporting Application 4900
Action successfully completed please review created file f4900.xml

ORDS RESTfulサービス・モジュール

構文

lb genobject -type {ORDS} -name NAME [-noenable] [-noprivs] 
[-context CONTEXT] [-label LABEL] [-emit_schema] [-fail] 
[-replace] [-runonchange] [-runalways] [-debug]

ORDS (Oracle REST Data Services) RESTfulサービス・モジュールの変更ログを生成します。

名前付きパラメータ

パラメータ 説明 デフォルト
-type {ORDS} ORDSモジュールの出力を生成します。 -
-name NAME モジュール名 -
-noenable enable_schemaコールをエクスポートに含めるかどうかを指定します True
-noprivs 権限をエクスポートに含めるかどうかを指定します。 True

共通ジェネレータ・パラメータ

パラメータ 説明 デフォルト
-context CONTEXT 実行する変更セット・コンテキストを指定します。 -
-label LABEL ラベルを使用して変更ログをフィルタします。 -
-emit_schema DDLの生成時にスキーマを含めます。 False
-fail 変更セットにfailOnError値を設定します。 False
-replace 変更セットにreplaceIfExists値を設定します。 False
-runonchange 変更セットにrunOnChange値を設定します。 False
-runalways 変更セットにrunAlways値を設定します。 False
-debug 追加のデバッグ出力を生成して表示します。 False

データベース・オブジェクト

構文

lb genobject -type TYPE -name NAME 
[-context CONTEXT] [-label LABEL] [-emit_schema] 
[-fail] [-replace] [-runonchange] [-runalways] [-debug]

指定したデータベース・オブジェクトの変更ログを生成します。

名前付きパラメータ

パラメータ 説明
-type TYPE データベース内のオブジェクトのタイプ
-name NAME オブジェクト名

共通ジェネレータ・パラメータ

パラメータ 説明 デフォルト
-context CONTEXT 実行する変更セット・コンテキストを指定します。 -
-label LABEL ラベルを使用して変更ログをフィルタします。 -
-emit_schema DDLの生成時にスキーマを含めます。 False
-fail 変更セットにfailOnError値を設定します。 False
-replace 変更セットにreplaceIfExists値を設定します。 False
-runonchange 変更セットにrunOnChange値を設定します。 False
-runalways 変更セットにrunAlways値を設定します。 False
-debug 追加のデバッグ出力を生成して表示します。 False

サポートされるデータベース・オブジェクト・タイプ

タイプ タイプ タイプ
AQ_QUEUE AQ_QUEUE_TABLE AQ_TRANSFORM
ASSOCIATION AUDIT AUDIT_OBJ
CLUSTER CONSTRAINT CONTEXT
DB_LINK DEFAULT_ROLE DIMENSION
FGA_POLICY FUNCTION INDEX
JOB LIBRARY MATERIALIZED_VIEW
MATERIALIZED_VIEW_LOG OBJECT_GRANT OPERATOR
PACKAGE_SPEC PACKAGE_BODY PROCEDURE
PROFILE PROXY PUBLIC_SYNONYM
REF_CONSTRAINT REFRESH_GROUP RESOURCE_COST
RLS_CONTEXT RLS_GROUP RLS_POLICY
RMGR_CONSUMER_GROUP RMGR_PLAN RMGR_PLAN_DIRECTIVE
ROLE ROLLBACK_SEGMENT SEQUENCE
SYNONYM TABLE TABLESPACE
TRIGGER TRUSTED_DB_LINK TYPE
TYPE_SPEC TYPE_BODY USER
VIEW XMLSCHEMA XS_USER XS_ROLE
XS_ROLESET XS_ROLE_GRANT XS_SECURITY_CLASS
XS_DATA_SECURITY XS_ACL XS_ACL_PARAM
XS_NAMESPACE RMGR_INTITIAL_CONSUMER_GROUP  

SQL> lb genobject -type table -name zipcodes 
Action successfully completed please review created file zipcodes_table.xml

3.4.2 LB GENSCHEMA

接続されたスキーマの変更ログおよびコントローラ・ファイルを生成します。

構文

liquibase(lb) genschema [-noreport] [-synonyms] [-grants] 
[-context CONTEXT] [-label LABEL] [-emit_schema] 
[-fail] [-replace] [-runonchange] [-runalways] [-debug]

ユーザーがSQLclで接続しているスキーマ全体を取得します。スキーマ内のオブジェクトのそれぞれについて、現在の作業ディレクトリにXMLファイルが作成され、controller.xmlファイルが作成されます。コントローラ・ファイルは、スキーマを正しくデプロイできるように、すべてのファイルを適切な順序で含んだ変更ログです。

名前付きパラメータ

パラメータ 説明 デフォルト
-noreport 画面出力を抑制します True
-synonyms パブリック・シノニムを含めます False
-grants 権限を含めます False

共通ジェネレータ・パラメータ

パラメータ 説明 デフォルト
-context CONTEXT 実行する変更セット・コンテキストを指定します。 -
-label LABEL ラベルを使用して変更ログをフィルタします。 -
-emit_schema DDLの生成時にスキーマを含めます。 False
-fail 変更セットにfailOnError値を設定します。 False
-replace 変更セットにreplaceIfExists値を設定します。 False
-runonchange 変更セットにrunOnChange値を設定します。 False
-runalways 変更セットにrunAlways値を設定します。 False
-debug 追加のデバッグ出力を生成して表示します。 False

SQL> lb genschema
lb genschema
[Type - TYPE_SPEC]:                          153 ms
[Type - TYPE_BODY]:                          29 ms
[Type - SEQUENCE]:                           48 ms
[Type - CLUSTER]:                            27 ms
[Type - TABLE]:                              36 ms
[Type - MATERIALIZED_VIEW_LOG]:              19 ms
[Type - MATERIALIZED_VIEW]:                  6 ms
[Type - VIEW]:                               148 ms
[Type - REF_CONSTRAINT]:                     272 ms
[Type - DIMENSION]:                          23 ms
[Type - FUNCTION]:                           27 ms
[Type - PROCEDURE]:                          64 ms
[Type - PACKAGE_SPEC]:                       171 ms
[Type - DB_LINK]:                            14 ms
[Type - SYNONYM]:                            22 ms
[Type - INDEX]:                              202 ms
[Type - TRIGGER]:                            51 ms
[Type - PACKAGE_BODY]:                       252 ms
[Method loadCaptureTable]:                   1864 ms
[Method parseCaptureTableRecords]:           7342 ms
[Method sortCaptureTable]:                   30 ms
[Method createExportChangeLogs]:             3 ms

Export Flags Used:
Export Grants               false
Export Synonyms             false

3.4.3 LB GENCONTROLFILE

サンプルとして空白のcontroller.xmlを生成します。

構文

liquibase(lb) gencontrolfile

現在の作業ディレクトリにファイルを含めるためのプレースホルダを指定して、空の変更ログmaster.xmlを作成します。このコマンドは、カスタム変更セットを含む変更ログを作成するときに使用できます。

SQL> lb gencontrolfile
Action successfully completed please review created file controller.xml

3.4.4 LB UPDATE

現在の接続を使用して、指定した変更ログを適用します。

構文

liquibase(lb) update -changelog CHANGELOG [-context CONTEXT] 
[-label LABEL] [-emit_schema] [-fail] [-replace] [-runonchange] [-runalways] [-debug]

自分や他の開発者が変更ログ・ファイルに追加したデータベースの変更を適用できます。

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

共通更新パラメータ

パラメータ 説明 デフォルト
-context CONTEXT 実行する変更セット・コンテキストを指定します。 -
-label LABEL ラベルを使用して変更ログをフィルタします。 -
-emit_schema DDLの生成時にスキーマを含めます。 False
-log 実行した作業のログを生成します False
-debug 追加のデバッグ出力を生成して表示します。 False

SQL> lb update -changelog zipcodes_table.xml
ScriptRunner Executed:zipcodes_table.xml::3b128595dbfbc34086c0a18ff38e090529999::Generated

3.4.5 LB UPDATESQL

データベースを現在のバージョンに更新するSQLを生成します。

構文

liquibase(lb) updatesql -changelog CHANGELOG [-context CONTEXT] 
[-label LABEL] [-emit_schema] [-fail] [-replace] [-runonchange] [-runalways] [-debug]

特定の変更ログに適用されるSQL文を生成し、画面にレンダリングします。

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

共通ジェネレータ・パラメータ

パラメータ 説明 デフォルト
-context CONTEXT 実行する変更セット・コンテキストを指定します。 -
-label LABEL ラベルを使用して変更ログをフィルタします。 -
-emit_schema DDLの生成時にスキーマを含めます。 False
-fail 変更セットにfailOnError値を設定します。 False
-replace 変更セットにreplaceIfExists値を設定します。 False
-runonchange 変更セットにrunOnChange値を設定します。 False
-runalways 変更セットにrunAlways値を設定します。 False
-debug 追加のデバッグ出力を生成して表示します。 False

SQL> lb updatesql -changelog zipcodes_tablev2.xml
-- *********************************************************************
-- Update Database Script
-- *********************************************************************
-- Change Log: zipcodes_tablev2.xml
-- Ran at: 6/3/20 12:49 PM
-- Against: JDOE@jdbc:oracle:thin:@localhost:1521/ORCLPDB1
-- Liquibase version: 3.8.9
-- *********************************************************************

-- Lock Database
UPDATE JDOE.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = '192.168.1.175 (192.168.1.175)', 
LOCKGRANTED = TO_TIMESTAMP('2020-06-03 12:49:05.779', 'YYYY-MM-DD HH24:MI:SS.FF') WHERE ID = 1 AND LOCKED = 0;

-- Changeset zipcodes_tablev2.xml::3595dbfbc34086449c0a18ff38e090529999::Generated
ALTER TABLE "ZIPCODES" ADD ("LON" NUMBER)
/

-- Logging Oracle Extension actions to the Database. 
DECLARE 
id varchar2(200) := '3595dbfbc34086449c0a18ff38e090529999';
rawAction clob;
rawSxml clob;
myrow varchar2(2000);
action clob := '';
sxml clob := '';
dep varchar2(200) := '1202945773';
author varchar2(200) := 'Generated';
filename varchar2(200) := 'zipcodes_tablev2.xml';
insertlog varchar2(200) := 'insert into DATABASECHANGELOG_ACTIONS (id,author,filename,sql,sxml,deployment_id) 
values (:id,:author,:filename,:action,:sxml,:dep) returning rowid into :out';
updateaction varchar2(200) := 'update DATABASECHANGELOG_ACTIONS set sql = sql ||:action where rowid = :myrow ';
updatesxml varchar2(200) := 'update DATABASECHANGELOG_ACTIONS set sxml = sxml ||:sxml where rowid = :myrow ';
begin 
action := utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw(q'
{QUxURVIgVEFCTEUgIlpJUENPREVTIiBBREQgKCJMT04iIE5VTUJFUikKLwogIC0tIE9SQS0zOTM0MTogQ
2Fubm90IGNvbnZlcnQgYW4gZXhpc3RpbmcgY29sdW1uIGludG8gYW4gaWRlbnRpdHkgY29sdW1uLgov}')));
sxml := utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw(q'
{PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFRBQkxFIHhtbG5zPSJodHRwOi8veG1sbnMub3Jh
Y2xlLmNvbS9rdSIgdmVyc2lvbj0iMS4wIj4KICAgPFNDSEVNQT5TS1VUWjwvU0NIRU1BPgogICA8TkFNRT5aSVBDT0RFUzwvTkFNRT4KICAgPFJFT
EFUSU9OQUxfVEFCTEU+CiAgICAgIDxDT0xfTElTVD4KICAgICAgICAgPENPTF9MSVNUX0lURU0+CiAgICAgICAgICAgIDxOQU1FPklEPC9OQU1FPg
ogICAgICAgICAgICA8REFUQVRZUEU+TlVNQkVSPC9EQVRBVFlQRT4KICAgICAgICAgICAgPE5PVF9OVUxMLz4KICAgICAgICAgPC9DT0xfTElTVF9
JVEVNPgogICAgICAgICA8Q09MX0xJU1RfSVRFTT4KICAgICAgICAgICAgPE5BTUU+Q09ERTwvTkFNRT4KICAgICAgICAgICAgPERBVEFUWVBFPlZBU
kNIQVIyPC9EQVRBVFlQRT4KICAgICAgICAgICAgPExFTkdUSD42PC9MRU5HVEg+CiAgICAgICAgICAgIDxDT0xMQVRFX05BTUU+VVNJTkdfTkxTX0N
PTVA8L0NPTExBVEVfTkFNRT4KICAgICAgICAgPC9DT0xfTElTVF9JVEVNPgogICAgICAgICA8Q09MX0xJU1RfSVRFTT4KICAgICAgICAgICAgPE5BT
UU+Q0lUWTwvTkFNRT4KICAgICAgICAgICAgPERBVEFUWVBFPlZBUkNIQVIyPC9EQVRBVFlQRT4KICAgICAgICAgICAgPExFTkdUSD41MDwvTEVOR1R
IPgogICAgICAgICAgICA8Q09MTEFURV9OQU1FPlVTSU5HX05MU19DT01QPC9DT0xMQVRFX05BTUU+CiAgICAgICAgIDwvQ09MX0xJU1RfSVRFTT4KI
CAgICAgICAgPENPTF9MSVNUX0lURU0+CiAgICAgICAgICAgIDxOQU1FPlNUQVRFPC9OQU1FPgogICAgICAgICAgICA8REFUQVRZUEU+VkFSQ0hBUjI
8L0RBVEFUWVBFPgogICAgICAgICAgICA8TEVOR1RIPjUwPC9MRU5HVEg+CiAgICAgICAgICAgIDxDT0xMQVRFX05BTUU+VVNJTkdfTkxTX0NPTVA8L
0NPTExBVEVfTkFNRT4KICAgICAgICAgPC9DT0xfTElTVF9JVEVNPgogICAgICAgICA8Q09MX0xJU1RfSVRFTT4KICAgICAgICAgICAgPE5BTUU+Q09
VTlRZPC9OQU1FPgogICAgICAgICAgICA8REFUQVRZUEU+VkFSQ0hBUjI8L0RBVEFUWVBFPgogICAgICAgICAgICA8TEVOR1RIPjUwPC9MRU5HVEg+C
iAgICAgICAgICAgIDxDT0xMQVRFX05BTUU+VVNJTkdfTkxTX0NPTVA8L0NPTExBVEVfTkFNRT4KICAgICAgICAgPC9DT0xfTElTVF9JVEVNPgogICA
gICAgICA8Q09MX0xJU1RfSVRFTT4KICAgICAgICAgICAgPE5BTUU+QVJFQV9DT0RFPC9OQU1FPgogICAgICAgICAgICA8REFUQVRZUEU+TlVNQkVSP
C9EQVRBVFlQRT4KICAgICAgICAgICAgPFBSRUNJU0lPTj4zPC9QUkVDSVNJT04+CiAgICAgICAgICAgIDxTQ0FMRT4wPC9TQ0FMRT4KICAgICAgICA
gPC9DT0xfTElTVF9JVEVNPgogICAgICAgICA8Q09MX0xJU1RfSVRFTT4KICAgICAgICAgICAgPE5BTUU+TEFUPC9OQU1FPgogICAgICAgICAgICA8R
EFUQVRZUEU+TlVNQkVSPC9EQVRBVFlQRT4KICAgICAgICAgPC9DT0xfTElTVF9JVEVNPgogICAgICA8L0NPTF9MSVNUPgogICAgICA8UFJJTUFSWV9
LRVlfQ09OU1RSQUlOVF9MSVNUPgogICAgICAgICA8UFJJTUFSWV9LRVlfQ09OU1RSQUlOVF9MSVNUX0lURU0+CiAgICAgICAgICAgIDxDT0xfTElTV
D4KICAgICAgICAgICAgICAgPENPTF9MSVNUX0lURU0+CiAgICAgICAgICAgICAgICAgIDxOQU1FPklEPC9OQU1FPgogICAgICAgICAgICAgICA8L0N
PTF9MSVNUX0lURU0+CiAgICAgICAgICAgIDwvQ09MX0xJU1Q+CiAgICAgICAgICAgIDxVU0lOR19JTkRFWD4KICAgICAgICAgICAgICAgPElOREVYX
0FUVFJJQlVURVM+CiAgICAgICAgICAgICAgICAgIDxQQ1RGUkVFPjEwPC9QQ1RGUkVFPgogICAgICAgICAgICAgICAgICA8SU5JVFJBTlM+MjwvSU5
JVFJBTlM+CiAgICAgICAgICAgICAgICAgIDxNQVhUUkFOUz4yNTU8L01BWFRSQU5TPgogICAgICAgICAgICAgICAgICA8VEFCTEVTUEFDRT5VU0VSU
zwvVEFCTEVTUEFDRT4KICAgICAgICAgICAgICAgICAgPExPR0dJTkc+WTwvTE9HR0lORz4KICAgICAgICAgICAgICAgPC9JTkRFWF9BVFRSSUJVVEV
TPgogICAgICAgICAgICA8L1VTSU5HX0lOREVYPgogICAgICAgICA8L1BSSU1BUllfS0VZX0NPTlNUUkFJTlRfTElTVF9JVEVNPgogICAgICA8L1BSS
U1BUllfS0VZX0NPTlNUUkFJTlRfTElTVD4KICAgICAgPERFRkFVTFRfQ09MTEFUSU9OPlVTSU5HX05MU19DT01QPC9ERUZBVUxUX0NPTExBVElPTj4
KICAgICAgPFBIWVNJQ0FMX1BST1BFUlRJRVM+CiAgICAgICAgIDxIRUFQX1RBQkxFPgogICAgICAgICAgICA8U0VHTUVOVF9BVFRSSUJVVEVTPgogI
CAgICAgICAgICAgICA8U0VHTUVOVF9DUkVBVElPTl9ERUZFUlJFRC8+CiAgICAgICAgICAgICAgIDxQQ1RGUkVFPjEwPC9QQ1RGUkVFPgogICAgICA
gICAgICAgICA8UENUVVNFRD40MDwvUENUVVNFRD4KICAgICAgICAgICAgICAgPElOSVRSQU5TPjE8L0lOSVRSQU5TPgogICAgICAgICAgICAgICA8T
UFYVFJBTlM+MjU1PC9NQVhUUkFOUz4KICAgICAgICAgICAgICAgPFRBQkxFU1BBQ0U+VVNFUlM8L1RBQkxFU1BBQ0U+CiAgICAgICAgICAgICAgIDx
MT0dHSU5HPlk8L0xPR0dJTkc+CiAgICAgICAgICAgIDwvU0VHTUVOVF9BVFRSSUJVVEVTPgogICAgICAgICAgICA8Q09NUFJFU1M+TjwvQ09NUFJFU
1M+CiAgICAgICAgIDwvSEVBUF9UQUJMRT4KICAgICAgPC9QSFlTSUNBTF9QUk9QRVJUSUVTPgogICA8L1JFTEFUSU9OQUxfVEFCTEU+CjwvVEFCTEU+}')));

execute immediate insertlog using id,author,filename,action,sxml,dep returning into myrow;
end;
/
--;

INSERT INTO JDOE.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, 
COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('3595dbfbc34086449c0a18ff38e090529999', 
'Generated', 'zipcodes_tablev2.xml', SYSTIMESTAMP, 2, '8:5262bd1c3989655295b5641b82868158', 
'createSxmlObject objectName=ZIPCODES, ownerName=JDOE, '', 'EXECUTED', NULL, NULL, '3.8.9', '1202945773');

-- Release Database Lock
UPDATE JDOE.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

3.4.6 LB ROLLBACK

要求された状態をロールバックします。

構文

liquibase(lb) rollback -changelog CHANGELOG [-context CONTEXT] 
[-label LABEL] [-emit_schema] [-fail] [-replace] [-runonchange] [-runalways] [-log] 
[-debug] (-count COUNT | -date DATE)

入力変更ログを使用して適用された最後の変更から開始して、変更をロールバックします。カウントは変更ログ内の変更数よりも大きくなる場合があります。999は最大サイズであり、すべての変更をロールバックします。

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

ロールバック・スタイル・オプション

次のオプションのいずれかを選択します。

オプション 説明
-count COUNT 適用する変更の数
-date DATE ロールバック先の日付

共通更新パラメータ

パラメータ 説明 デフォルト
-context CONTEXT 実行する変更セット・コンテキストを指定します。 -
-label LABEL ラベルを使用して変更ログをフィルタします。 -
-emit_schema DDLの生成時にスキーマを含めます。 False
-fail 変更セットにfailOnError値を設定します。 False
-replace 変更セットにreplaceIfExists値を設定します。 False
-runonchange 変更セットにrunOnChange値を設定します。 False
-runalways 変更セットにrunAlways値を設定します。 False
-log 実行した作業のログを生成します False
-debug 追加のデバッグ出力を生成して表示します。 False

lb rollback -changelog zipcodes_tablev2.xml -count 100
ScriptRunner Executed:zipcodes_tablev2.xml::3595dbfbc34086449c0a18ff38e090529999::Generated

3.4.7 LB ROLLBACKSQL

データベースを要求した状態にロールバックするSQLを記述します。

構文

liquibase(lb) rollbacksql -changelog CHANGELOG [-context CONTEXT] 
[-label LABEL] [-emit_schema] [-fail] [-replace] [-runonchange] [-runalways] [-debug] 
(-count COUNT | -date DATE)

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

ロールバック・スタイル・オプション

次のオプションのいずれかを選択します。

オプション 説明
-count COUNT 適用する変更の数
-date DATE ロールバック先の日付

共通更新パラメータ

パラメータ 説明 デフォルト
-label LABEL ラベルを使用して変更ログをフィルタします。 -
-context CONTEXT 実行する変更セット・コンテキストを指定します。 -
-emit_schema DDLの生成時にスキーマを含めます。 False
-fail 変更セットにfailOnError値を設定します。 False
-replace 変更セットにreplaceIfExists値を設定します。 False
-runonchange 変更セットにrunOnChange値を設定します。 False
-runalways 変更セットにrunAlways値を設定します。 False
-debug 追加のデバッグ出力を生成して表示します。 -

lb rollbacksql -changelog zipcodes_tablev2.xml -count 100

-- *********************************************************************
-- Rollback 100 Change(s) Script
-- *********************************************************************
-- Change Log: zipcodes_tablev2.xml
-- Ran at: 6/3/20 12:55 PM
-- Against: JDOE@jdbc:oracle:thin:@localhost:1521/ORCLPDB1
-- Liquibase version: 3.8.9
-- *********************************************************************

-- Lock Database
UPDATE JDOE.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = '192.168.1.175 (192.168.1.175)', 
LOCKGRANTED = TO_TIMESTAMP('2020-06-03 12:55:19.175', 'YYYY-MM-DD HH24:MI:SS.FF') 
WHERE ID = 1 AND LOCKED = 0;

-- Rolling Back ChangeSet: 
zipcodes_tablev2.xml::3595dbfbc34086449c0a18ff38e090529999::Generated

ALTER TABLE "JDOE"."ZIPCODES" DROP ("LON");

delete from DATABASECHANGELOG_actions where id = '3595dbfbc34086449c0a18ff38e090529999' and 
filename = 'zipcodes_tablev2.xml' and author ='Generated' and sequence = (select Max(sequence) 
from DATABASECHANGELOG_actions where id = '3595dbfbc34086449c0a18ff38e090529999' and 
filename = 'zipcodes_tablev2.xml' and author ='Generated');

DELETE FROM JDOE.DATABASECHANGELOG WHERE ID = '3595dbfbc34086449c0a18ff38e090529999' AND 
AUTHOR = 'Generated' AND FILENAME = 'zipcodes_tablev2.xml';

-- Release Database Lock
UPDATE JDOE.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

3.4.8 LB DIFF

2つのデータベース間の差異の説明を標準出力に書き込みます。

構文

liquibase(lb) diff -url URL -user USER -pass PASS [-noreport]

現在の接続と指定されたデータベースの差異を表示します。reportがtrueの場合、出力はテキスト・レポートの形式になります。reportがfalse (デフォルト)の場合、出力は変更ログの形式になります。

宛先URLの形式は、HOST:PORT:SIDまたはHOST:PORT/SERVICEです。

名前付きパラメータ

パラメータ 説明 デフォルト
-url URL 宛先データベースのJDBC URL -
-user USER 宛先ユーザー -
-pass PASS 宛先パスワード -
-noreport 結果はテキスト・レポートではなく、変更ログとして出力されます True

lb diff -url localhost:1521/ORCLPDB1 -user hr -password hr

Action successfully completed please review created file diffResult.txt

!more diffResult.txt
Reference Database: JDOE @ jdbc:oracle:thin:@localhost:1521/ORCLPDB1 (Default Schema: JDOE)
Comparison Database: HR @ jdbc:oracle:thin:@localhost:1521/ORCLPDB1 (Default Schema: HR)
Compared Schemas: JDOE -> HR
Product Name: EQUAL
Product Version: EQUAL
Missing Catalog(s): NONE
Unexpected Catalog(s): NONE
Changed Catalog(s): NONE
Missing Column(s): 
     JDOE.ZIPCODES.AREA_CODE
     JDOE.DATABASECHANGELOG.AUTHOR
     JDOE.DATABASECHANGELOG_ACTIONS.AUTHOR
     JDOE.DATABASECHANGELOG_DETAILS.AUTHOR
     JDOE.ZIPCODES.CITY
     JDOE.ZIPCODES.CODE
     JDOE.DATABASECHANGELOG.COMMENTS
     JDOE.DATABASECHANGELOG_DETAILS.COMMENTS
     JDOE.DATABASECHANGELOG.CONTEXTS
     JDOE.DATABASECHANGELOG_DETAILS.CONTEXTS
     JDOE.ZIPCODES.COUNTY
     JDOE.DATABASECHANGELOG.DATEEXECUTED
     JDOE.DATABASECHANGELOG_DETAILS.DATEEXECUTED
     JDOE.DATABASECHANGELOG.DEPLOYMENT_ID
     JDOE.DATABASECHANGELOG_ACTIONS.DEPLOYMENT_ID
     JDOE.DATABASECHANGELOG_DETAILS.DEPLOYMENT_ID
     JDOE.DATABASECHANGELOG.DESCRIPTION
     JDOE.DATABASECHANGELOG_DETAILS.DESCRIPTION
     JDOE.DATABASECHANGELOG.EXECTYPE
     JDOE.DATABASECHANGELOG_DETAILS.EXECTYPE
     JDOE.DATABASECHANGELOG.FILENAME
     JDOE.DATABASECHANGELOG_ACTIONS.FILENAME
     JDOE.DATABASECHANGELOG_DETAILS.FILENAME
     JDOE.DATABASECHANGELOG.ID
     JDOE.DATABASECHANGELOGLOCK.ID
     JDOE.DATABASECHANGELOG_ACTIONS.ID
     JDOE.DATABASECHANGELOG_DETAILS.ID
     JDOE.ZIPCODES.ID
     JDOE.DATABASECHANGELOG.LABELS
     JDOE.DATABASECHANGELOG_DETAILS.LABELS
     JDOE.ZIPCODES.LAT
     JDOE.DATABASECHANGELOG.LIQUIBASE
     JDOE.DATABASECHANGELOG_DETAILS.LIQUIBASE
     JDOE.DATABASECHANGELOGLOCK.LOCKED
     JDOE.DATABASECHANGELOGLOCK.LOCKEDBY
     JDOE.DATABASECHANGELOGLOCK.LOCKGRANTED
     JDOE.ZIPCODES.LON
     JDOE.DATABASECHANGELOG.MD5SUM
     JDOE.DATABASECHANGELOG_DETAILS.MD5SUM
     JDOE.DATABASECHANGELOG.ORDEREXECUTED
     JDOE.DATABASECHANGELOG_ACTIONS.SEQUENCE
     JDOE.DATABASECHANGELOG_ACTIONS.SQL
     JDOE.DATABASECHANGELOG_DETAILS.SQL
     JDOE.ZIPCODES.STATE
     JDOE.DATABASECHANGELOG_ACTIONS.SXML
     JDOE.DATABASECHANGELOG_DETAILS.SXML
     JDOE.DATABASECHANGELOG.TAG
Unexpected Column(s): NONE
Changed Column(s): NONE
Missing Foreign Key(s): NONE
Unexpected Foreign Key(s): NONE
Changed Foreign Key(s): NONE
Missing Index(s): 
     PK_DATABASECHANGELOGLOCK UNIQUE  ON JDOE.DATABASECHANGELOGLOCK(ID)
     SYS_C00122620 UNIQUE  ON JDOE.DATABASECHANGELOG_ACTIONS(ID, AUTHOR, FILENAME, SEQUENCE)
     SYS_C00122637 UNIQUE  ON JDOE.ZIPCODES(ID)
Unexpected Index(s): NONE
Changed Index(s): NONE
Missing Primary Key(s): 
     PK_DATABASECHANGELOGLOCK on JDOE.DATABASECHANGELOGLOCK(ID)
     SYS_C00122620 on JDOE.DATABASECHANGELOG_ACTIONS(ID, AUTHOR, FILENAME, SEQUENCE)
     SYS_C00122637 on JDOE.ZIPCODES(ID)
Unexpected Primary Key(s): NONE
Changed Primary Key(s): NONE
Missing Sequence(s): NONE
Unexpected Sequence(s): NONE
Changed Sequence(s): NONE
Missing Table(s): 
     DATABASECHANGELOG
     DATABASECHANGELOGLOCK
     DATABASECHANGELOG_ACTIONS
     ZIPCODES
Unexpected Table(s): NONE
Changed Table(s): NONE
Missing Unique Constraint(s): NONE
Unexpected Unique Constraint(s): NONE
Changed Unique Constraint(s): NONE
Missing View(s): 
     DATABASECHANGELOG_DETAILS
Unexpected View(s): NONE
Changed View(s): NONE


SQL> lb diff -url localhost:1521/ORCLPDB1 -user hr -password hr -noreport

Action successfully completed please review created file diffResult.xml

diffResult.xml
!more diffResult.xml
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext 
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd 
http://www.liquibase.org/xml/ns/dbchangelog 
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
    <changeSet author="jdoe (generated)" id="1591203948991-1">
        <createTable tableName="DATABASECHANGELOG_ACTIONS">
            <column name="ID" type="VARCHAR2(255 BYTE)">
                <constraints nullable="false"/>
            </column>
            <column name="SEQUENCE" type="NUMBER">
                <constraints nullable="false"/>
            </column>
            <column name="SQL" type="CLOB"/>
            <column name="SXML" type="CLOB"/>
            <column name="AUTHOR" type="VARCHAR2(255 BYTE)">
                <constraints nullable="false"/>
            </column>
            <column name="FILENAME" type="VARCHAR2(255 BYTE)">
                <constraints nullable="false"/>
            </column>
            <column name="DEPLOYMENT_ID" type="VARCHAR2(10 BYTE)"/>
        </createTable>
    </changeSet>
    <changeSet author="jdoe (generated)" id="1591203948991-2">
        <createView fullDefinition="true" viewName="DATABASECHANGELOG_DETAILS">
CREATE OR REPLACE FORCE VIEW DATABASECHANGELOG_DETAILS (DEPLOYMENT_ID, ID, AUTHOR, 
FILENAME, SQL, SXML, DATEEXECUTED, EXECTYPE, MD5SUM, DESCRIPTION, COMMENTS, LIQUIBASE, 
CONTEXTS, LABELS) AS SELECT  da.deployment_id,    da.id,    da.author,    
da.filename,  da.sql,     da.sxml,    d.dateexecuted,    d.exectype,    d.md5sum,  
d.description,    d.comments,   d.liquibase,    d.contexts,    d.labels 
FROM databasechangelog d  LEFT JOIN databasechangelog_actions da ON d.id = da.id 
AND d.author = da.author AND 
d.filename = da.filename ORDER BY   1,7</createView>
    </changeSet>
    <changeSet author="jdoe (generated)" id="1591203948991-3">
        <createTable tableName="ZIPCODES">
            <column name="ID" type="NUMBER">
                <constraints nullable="false" primaryKey="true" primaryKeyName="SYS_C00122637"/>
            </column>
            <column name="CODE" type="VARCHAR2(6 BYTE)"/>
            <column name="CITY" type="VARCHAR2(50 BYTE)"/>
            <column name="STATE" type="VARCHAR2(50 BYTE)"/>
            <column name="COUNTY" type="VARCHAR2(50 BYTE)"/>
            <column name="AREA_CODE" type="NUMBER(3, 0)"/>
            <column name="LAT" type="NUMBER"/>
            <column name="LON" type="NUMBER"/>
        </createTable>
    </changeSet>
    <changeSet author="jdoe (generated)" id="1591203948991-4">
        <createIndex indexName="SYS_C00122620" tableName="DATABASECHANGELOG_ACTIONS" unique="true">
            <column name="ID"/>
            <column name="AUTHOR"/>
            <column name="FILENAME"/>
            <column name="SEQUENCE"/>
        </createIndex>
    </changeSet>
    <changeSet author="skutz (generated)" id="1591203948991-5">
        <addPrimaryKey columnNames="ID, AUTHOR, FILENAME, SEQUENCE" constraintName="SYS_C00122620" 
forIndexName="SYS_C00122620" tableName="DATABASECHANGELOG_ACTIONS"/>
    </changeSet>
</databaseChangeLog>

3.4.9 LB DBDOC

現在のデータベースおよび変更ログに基づいてJavadocのようなドキュメントを生成します。

構文

liquibase(lb) dbdoc -changelog CHANGELOG -dir DIR [-context CONTEXT] [-label LABEL]

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。
-dir DIR 指定されたディレクトリ内のすべてのファイルを保存します(例: -dir some/sub/directory)。

共通更新パラメータ

パラメータ 説明
-context CONTEXT 実行する変更セット・コンテキストを指定します。
-label LABEL ラベルを使用して変更ログをフィルタします。

SQL> lb dbdoc -changelog states_table.xml -dir ./doc
SQL> !ls -l ./doc
total 56
drwxr-xr-x   3 jdoe  staff    96 Jun  3 13:25 authors
-rw-r--r--   1 jdoe  staff   449 Jun  3 13:25 authors.html
drwxr-xr-x   3 jdoe  staff    96 Jun  3 13:25 changelogs
-rw-r--r--   1 jdoe  staff   474 Jun  3 13:25 changelogs.html
drwxr-xr-x  31 jdoe  staff   992 Jun  3 13:25 columns
-rw-r--r--   1 jdoe  staff   555 Jun  3 13:25 currenttables.html
-rw-r--r--   1 jdoe  staff   899 Jun  3 13:25 globalnav.html
-rw-r--r--   1 jdoe  staff   769 Jun  3 13:25 index.html
-rw-r--r--   1 jdoe  staff   445 Jun  3 13:25 overview-summary.html
drwxr-xr-x   4 jdoe  staff   128 Jun  3 13:25 pending
drwxr-xr-x   3 jdoe  staff    96 Jun  3 13:25 recent
-rw-r--r--   1 jdoe  staff  1202 Jun  3 13:25 stylesheet.css
drwxr-xr-x   4 jdoe  staff   128 Jun  3 13:25 tables

図3-1に、DBDOCコマンドで作成された索引ページを示します。これを使用して、ドキュメントの生成に使用された変更ログの様々な詳細間を移動できます。

3.4.10 LB CHANGELOGSYNC

データベースで実行された変更ログ内のすべての変更をファイルにマークするSQL文を書き込みます。

構文

liquibase(lb) changelogsync -changelog CHANGELOG

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

SQL> lb changelogsync -changelog zipcodes_table.xml
-- *********************************************************************
-- SQL to add all changesets to database history table
-- *********************************************************************
-- Change Log: zipcodes_table.xml
-- Ran at: 6/3/20 1:28 PM
-- Against: JDOE@jdbc:oracle:thin:@localhost:1521/ORCLPDB1
-- Liquibase version: 3.8.9
-- *********************************************************************

-- Lock Database
UPDATE JDOE.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = '192.168.1.175 (192.168.1.175)', 
LOCKGRANTED = TO_TIMESTAMP('2020-06-03 13:28:24.686', 'YYYY-MM-DD HH24:MI:SS.FF') 
WHERE ID = 1 AND LOCKED = 0;

INSERT INTO JDOE.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, 
MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) 
VALUES ('e6568d24910039bf3d4241e7edff5ec82612c60f', 'Generated', 'zipcodes_table.xml', 
SYSTIMESTAMP, 3, '8:e4fe731b3a40f479dec11e234e4a69ac', 'createSxmlObject objectName=ZIPCODES, 
ownerName=JDOE', '', 'EXECUTED', NULL, NULL, '3.8.9', '1205304697');

-- Release Database Lock
UPDATE JDOE.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

3.4.11 LB CLEARCHECKSUMS

現在のチェックサムをデータベースから削除します。次の更新では、デプロイされている変更セットについてはチェックサムが再計算され、デプロイされていない変更セットはデプロイされます。

構文

liquibase(lb) clearchecksums -changelog CHANGELOG

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

SQL> lb clearchecksums -changelog zipcodes_table.xml

3.4.12 LB LISTLOCKS

データベース変更ログを現在ロックしているユーザーがリストされます。

構文

liquibase(lb) listlocks -changelog CHANGELOG

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

SQL> lb listlocks -changelog zipcodes_table.xml
No locks currently in use

3.4.13 LB RELEASELOCKS

データベース変更ログのすべてのロックを解除します。

構文

liquibase(lb) releaselocks -changelog CHANGELOG

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

SQL> lb releaselocks  -changelog zipcodes_table.xml

3.4.14 LB STATUS

適用されていない変更セットのリストを出力します。

構文

liquibase(lb) status -changelog CHANGELOG

現在の接続を使用して変更ログのステータスを確認します。これは、変更ログが適用されたかどうか、および変更ログの結果を示します。

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

SQL> lb status -changelog zipcodes_table.xml

1 change sets have not been applied to JDOE@jdbc:oracle:thin:@localhost:1521/ORCLPDB1     
zipcodes_table.xml::e6568d24910039bf3d4241e7edff5ec82612c60f::Generated

3.4.15 LB VALIDATE

エラーがあるかどうか、変更ログを調べます。

構文

liquibase(lb) validate -changelog CHANGELOG

名前付きパラメータ

パラメータ 説明
-changelog CHANGELOG 使用する変更ログ・ファイルを指定します。

lb validate -changelog zipcodes_table.xml
No issues were found in file zipcodes _table.xml, validation passed

3.4.16 LB VERSION

製品バージョン情報を表示します。

構文

liquibase(lb) version

SQL> lb version

Liquibase version:   3.8.9
Extension Version:   2.0.0.0.0

3.4.17 LB HELP

使用可能なLiquibaseコマンドをリストします。

構文

liquibase(lb) help command

特定のコマンドに関するヘルプを表示するには、オプションなしでコマンドを入力します。

SQL> lb help
usage: lb COMMAND ...

Commands:
The following commands are available within the liquibase feature.
lb help COMMAND for command specific help

COMMAND
genobject            Generate change log for a specific database object
genschema            Generate changelogs and controller for connected schema
gencontrolfile       Remove locks held by changelog
update               Updates database to current version
updatesql            Generates SQL to update database to current version
rollback             Rolls back the state requested
rollbacksql          Writes SQL to roll back the database to the state requested
diff                 Writes description of differences between two databases to standard out.
dbdoc                Generates Javadoc-like documentation based on current database and change log.
changelogsync        Mark all changes as executed in the database.
clearchecksums       Removes current checksums from  database.
listlocks            Lists who currently has locks on the database changelog.
releaselocks         Releases all locks on the database changelog.
status               Outputs list of unrun change sets.
validate             Checks the changelog for errors.
version              Display product version information

3.5 DATABASECHANGELOG_DETAILSビュー

DATABASECHANGELOG_DETAILSビューには、DATABASECHANGELOG表およびDATABASECHANGELOG_ACTIONS表からの情報が統合されているため、レポート作成やトラブルシューティングを容易に実施できます。

このビューでは、データベースに適用された各変更のステータスと実行された操作を詳しく確認できます。SQL列には、データベースで実行された実際のSQLが表示されます。SXML列には、変更が適用される前のオブジェクトの状態が表示されます。

SQL> desc DATABASECHANGELOG_DETAILS


  Name            Null?         Type 
________________ ___________ ________________ 
DEPLOYMENT_ID                VARCHAR2(10)     
ID                           VARCHAR2(255)    
AUTHOR                       VARCHAR2(255)    
FILENAME                     VARCHAR2(255)    
SQL                          CLOB             
SXML                         CLOB             
DATEEXECUTED     NOT NULL    TIMESTAMP(6)     
EXECTYPE         NOT NULL    VARCHAR2(10)     
MD5SUM                       VARCHAR2(35)     
DESCRIPTION                  VARCHAR2(255)    
COMMENTS                     VARCHAR2(255)    
LIQUIBASE                    VARCHAR2(20)     
CONTEXTS                     VARCHAR2(255)    
LABELS                       VARCHAR2(255)    

3.6 Liquibaseの変更セット

次の表に変更セットを示し、そのそれぞれについて説明します。変更セットの詳細は、<changeSet>タグを参照してください。

変更セット 説明
CreateOracleConstraint SQLから制約を作成します。
CreateOracleDirectory SQLからディレクトリを作成します。
CreateOracleFunction SQLから関数を作成します。
CreateOracleGrant SQLから権限を作成します。
CreateOraclePackageBody SQLからパッケージ本体を作成します。
CreateOracleJob SQLからDBMS_Schedulerジョブを作成します。
CreateOraclePackageSpec SQLからパッケージ仕様部を作成します。
CreateOracleProcedure SQLからプロシージャを作成します。
CreateOraclePublicSynonym SQLからパブリック・シノニムを作成します。
CreateOracleRefConstraint SQLから参照制約を作成します。
CreateOracleSynonym SQLからシノニムを作成します。
CreateOracleTrigger SQLからトリガーを作成します。
CreateOracleTypeBody SQLから型本体を作成します。
CreateOracleTypeSpec SQLから型指定を作成します。
CreateSxmlObject SQLから関数を作成します。
DropOracleConstraint 制約を削除します。
DropOracleFunction 関数を削除します。
DropOracleGrant 権限を削除します。
DropOraclePackageBody パッケージ本体を削除します。
DropOraclePackageSpec パッケージ仕様部を削除します。
DropOracleProcedure プロシージャを削除します。
DropOracleRefConstraint 参照制約を削除します。
DropOracleTrigger トリガーを削除します。
DropOracleTypeBody 型本体を削除します。
DropOracleTypeSpec 型指定を削除します。
DropOracleSynonym シノニムを削除します。
DropSxmlObject SXMLオブジェクトを削除します。オブジェクトがcreateSxmlObjectを介して作成された場合、オブジェクトは最後の状態にロールバックされます。作成されていなかった場合は削除されます。これは主にSXMLオブジェクトの処理のために内部的に使用されます。
RunOracleScript SQLclエンジンを使用してSQLスクリプトを実行します。すべてのSQLclコマンドがサポートされています。スクリプト、ファイルおよびURLソースがサポートされます。RunOracleScriptを使用したカスタムSQLの実行を参照してください。

3.7 Liquibaseを使用した例

3.7.1 オブジェクトの取得とデプロイ

EMPLOYEES表をHRからHR2にデプロイする手順は、次のとおりです。

ノート:

GENOBJECTコマンドの構文が変更されました。LB GENOBJECTを参照してください

  1. HRに接続します。
    SQL> connect hr/hr
    Connected.
  2. オブジェクトを取得します。
    SQL> lb genobject -type table -name employees
    Action successfully completed please review created file employees_table1.xml
  3. 他のユーザーに接続します。
    SQL> connect hr2/hr2
    Connected.
  4. オブジェクトがまだ存在していないことを確認します。
    SQL> drop table employees
    Table EMPLOYEES dropped.
  5. 現在のスキーマにオブジェクトを作成します。

    ノート:

    スキーマ名が変更されたため、include schemafalseに設定する必要があります。そうしないと、HRスキーマにオブジェクトを作成しようとします。
    SQL> lb update -changelog employees_table.xml
    ScriptRunner Executed:/Users/jdoe/Documents/lbtest/v2/employees_table.xml::6486f968-93fe-4e1c-ac59-17ef392e1423::Generated
    
  6. オブジェクトが作成されたことを検証します。
    SQL> desc employees  
    ---- ----- ------ 
    EMPLOYEE_ID       NOT NULL    NUMBER(6)       
    FIRST_NAME                    VARCHAR2(20)    
    LAST_NAME         NOT NULL    VARCHAR2(25)    
    EMAIL             NOT NULL    VARCHAR2(25)    
    PHONE_NUMBER                  VARCHAR2(20)    
    HIRE_DATE         NOT NULL    DATE            
    JOB_ID            NOT NULL    VARCHAR2(10)    
    SALARY                        NUMBER(8,2)     
    COMMISSION_PCT                NUMBER(2,2)     
    MANAGER_ID                    NUMBER(6)       
    DEPARTMENT_ID                 NUMBER(4)       
    

3.7.2 スキーマの取得とデプロイ

HRスキーマを取得してHR2スキーマで再生成するには:
sql.exe hr/hr@pdb1

SQL> lb genschema
[Type - TYPE_SPEC]:                          107 ms
[Type - TYPE_BODY]:                           80 ms
[Type - SEQUENCE]:                            26 ms
[Type - CLUSTER]:                             25 ms
[Type - TABLE]:                              721 ms
[Type - MATERIALIZED_VIEW_LOG]:               18 ms
[Type - MATERIALIZED_VIEW]:                    9 ms
[Type - VIEW]:                                81 ms
[Type - REF_CONSTRAINT]:                     128 ms
[Type - DIMENSION]:                           14 ms
[Type - FUNCTION]:                            43 ms
[Type - PROCEDURE]:                           47 ms
[Type - PACKAGE_SPEC]:                        24 ms
[Type - DB_LINK]:                             14 ms
[Type - SYNONYM]:                             23 ms
[Type - INDEX]:                              102 ms
[Type - TRIGGER]:                             25 ms
[Type - PACKAGE_BODY]:                        33 ms
[Type - JOB]:                                 14 ms
[Method loadCaptureTable]:                  1534 ms
[Method parseCaptureTableRecords]:          5479 ms
[Method sortCaptureTable]:                    37 ms
[Method createExportChangeLogs]:               0 ms

Export Flags Used:

Export Grants	      false
Export Synonyms	    false
SQL> 

setup the hr2 user --

drop user hr2 cascade;
create user hr2 identified by hr2;
grant connect,resource, create view to hr2;
alter user hr2 quota unlimited on users;
alter user hr2 quota unlimited on sysaux;

SQL> drop user hr2 cascade;
User HR2 dropped.

SQL> create user hr2 identified by hr2;
User HR2 created.

SQL> grant connect,resource, create view to hr2;
Grant succeeded.

SQL> alter user hr2 quota unlimited on users;
User HR2 altered.

SQL> alter user hr2 quota unlimited on sysaux;
User HR2 altered.

SQL> connect hr2/hr2
Connected.

SQL> lb update -changelog controller.xml
ScriptRunner Executed:person_typ_type_spec.xml::32492b89db4b0e2a115caa3e7e6c3d29c11fa1db::Generated
ScriptRunner Executed:emp_person_typ_type_spec.xml::cb314e652bc79126fa0a2b5261720d15728c7e04::Generated
ScriptRunner Executed:people_typ_type_spec.xml::cc5c2298290e3ce2dc1563da82ddd9ea33a768c8::Generated

SQL> tables

TABLES
___________________________
DATABASECHANGELOG
DATABASECHANGELOGLOCK
DATABASECHANGELOG_ACTIONS
COUNTRIES
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY

10 rows selected.

3.7.3 マスター制御ファイルの生成

SQL> lb gencontrolfile
Action successfully completed please review created file controller.xml

SQL> !more controller.xml
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<include file="{filename.xml}"/>
</databaseChangeLog>

3.7.4 スキーマの取得とデプロイおよびその後のアップグレードと再デプロイ

手順は次のとおりです。
  1. HRスキーマをHR2スキーマに移行し、HRスキーマを変更してHR2を更新します。
    setup the hr2 user --
    drop user hr2 cascade;
    create user hr2 identified by hr2;
    grant connect,resource, create view to hr2;
    alter user hr2 quota unlimited on users;
    alter user hr2 quota unlimited on sysaux;
    
    SQL> drop user hr2 cascade;
    User HR2 dropped.
    
    SQL> create user hr2 identified by hr2;
    User HR2 created.
    
    SQL> grant connect,resource, create view to hr2;
    Grant succeeded.
    
    SQL> alter user hr2 quota unlimited on users;
    User HR2 altered.
    
    SQL> alter user hr2 quota unlimited on sysaux;
    User HR2 altered.
    
    SQL> connect hr2/hr2
    Connected.
    
    SQL> !mkdir v1 
    
    SQL> cd v1
    SQL> connect hr/hr
    Connected.
    SQL> lb genschema
    [Type - TYPE_SPEC]:                          185 ms
    [Type - TYPE_BODY]:                           84 ms
    [Type - SEQUENCE]:                            41 ms
    [Type - CLUSTER]:                             38 ms
    [Type - TABLE]:                              702 ms
    [Type - MATERIALIZED_VIEW_LOG]:               20 ms
    [Type - MATERIALIZED_VIEW]:                   10 ms
    [Type - VIEW]:                                85 ms
    [Type - REF_CONSTRAINT]:                     142 ms
    [Type - DIMENSION]:                           21 ms
    [Type - FUNCTION]:                            45 ms
    [Type - PROCEDURE]:                           52 ms
    [Type - PACKAGE_SPEC]:                        30 ms
    [Type - DB_LINK]:                             18 ms
    [Type - SYNONYM]:                             30 ms
    [Type - INDEX]:                              125 ms
    [Type - TRIGGER]:                             31 ms
    [Type - PACKAGE_BODY]:                        39 ms
    [Type - JOB]:                                 19 ms
    [Method loadCaptureTable]:                  1717 ms
    [Method parseCaptureTableRecords]:          6243 ms
    [Method sortCaptureTable]:                    42 ms
    [Method createExportChangeLogs]:               1 ms
    
    Export Flags Used:
    Export Grants          false
    Export Synonyms        false
    
  2. HRスキーマを変更します。
    SQL> ALTER TABLE DEPARTMENTS ADD (COLUMN1 VARCHAR2(20) );
    Table DEPARTMENTS altered.
    
    SQL> ALTER TABLE COUNTRIES ADD (COLUMN1 VARCHAR2(20) );
    Table COUNTRIES altered.
    
    SQL> ALTER TABLE LOCATIONS ADD (COLUMN1 VARCHAR2(20) );
    Table LOCATIONS altered.
    
    SQL> CREATE OR REPLACE PROCEDURE PROCEDURE2 (PARAM1 IN VARCHAR2,PARAM2 IN VARCHAR2,PARAM3 IN VARCHAR2, PARAM4 IN VARCHAR
    2) AS BEGIN NULL; END PROCEDURE2;
    Procedure PROCEDURE2 compiled
  3. v2ディレクトリに変更を加えます。
    SQL> cd .. 
    SQL> !mkdir v2 
    SQL> cd v2 
    
  4. HRスキーマのv2をエクスポートします。
    SQL> lb genschema
    [Type - TYPE_SPEC]:                          102 ms
    [Type - TYPE_BODY]:                           74 ms
    [Type - SEQUENCE]:                            26 ms
    [Type - CLUSTER]:                             25 ms
    [Type - TABLE]:                              534 ms
    [Type - MATERIALIZED_VIEW_LOG]:               13 ms
    [Type - MATERIALIZED_VIEW]:                   10 ms
    [Type - VIEW]:                                78 ms
    [Type - REF_CONSTRAINT]:                     119 ms
    [Type - DIMENSION]:                           15 ms
    [Type - FUNCTION]:                            44 ms
    [Type - PROCEDURE]:                           46 ms
    [Type - PACKAGE_SPEC]:                        25 ms
    [Type - DB_LINK]:                             14 ms
    [Type - SYNONYM]:                             24 ms
    [Type - INDEX]:                              100 ms
    [Type - TRIGGER]:                             25 ms
    [Type - PACKAGE_BODY]:                        34 ms
    [Type - JOB]:                                 14 ms
    [Method loadCaptureTable]:                  1322 ms
    [Method parseCaptureTableRecords]:          5452 ms
    [Method sortCaptureTable]:                    37 ms
    [Method createExportChangeLogs]:               0 ms
    Export Flags Used:
    Export Grants      false
    Export Synonyms    false
    

    v1をインポートするには、v1ディレクトリに戻ってHR2として接続します。

    SQL> cd ..
    SQL> connect hr2/hr2 
    Connected. 
    
  5. 次に、HR2スキーマに取得をインポートします。
    SQL> lb update -changelog controller.xml
    ScriptRunner Executed:person_typ_type_spec.xml::f9d8cb37f8030674b1d0060b054254a28f96dd51::Generated
    ScriptRunner Executed:emp_person_typ_type_spec.xml::cabf96af49def8fc164a6c0aa7be69c1a78d46c4::Generated
    ScriptRunner Executed:people_typ_type_spec.xml::6a98e2a2ec56a7ca6b716a114804081f8760ec78::Generated
    ScriptRunner Executed:dept_persons_typ_type_spec.xml::e250a6757e4e023a30c1b9f458149e4dfa0ad6bc::Generated
    ScriptRunner Executed:employee_type_type_spec.xml::aa2ef7c172e6df08e4082a4f139f4c6edf6e14bc::Generated
    ScriptRunner Executed:person_typ_type_body.xml::bd29fd1d0827b70ae4b644781eeb9a69f7caf956::Generated
    ScriptRunner Executed:departments_seq_sequence.xml::ea03838db9dc0613a5128090c9388ff1b8dc8a1a::Generated
    ScriptRunner Executed:locations_seq_sequence.xml::2aba6107a95a977632161be9ca920bdb836f18fc::Generated
    ScriptRunner Executed:employees_seq_sequence.xml::2379ab3cbd7f84f52f6596fa16479bb6ccf721ca::Generated
    ScriptRunner Executed:countries_table.xml::8e87e94fd74b172dc76d950216e057827e2e3f83::Generated
    ScriptRunner Executed:countries_comments.xml::8797a740e38cf3ef7da36b6ba4aa5497cfd6b457::Generated
    
  6. 表を確認して検証します。
    SQL> show user
    USER is "HR2"
    
    SQL> desc departments
    
    Name                  Null?          Type
    __________________ ___________ _______________
    DEPARTMENT_ID        NOT NULL       NUMBER(4)
    DEPARTMENT_NAME      NOT NULL       VARCHAR2(30)
    MANAGER_ID                          NUMBER(6)
    LOCATION_ID                         NUMBER(4)
  7. v2に切り替えて、取得をインポートします。
    SQL> cd v2
    SQL> lb update -changelog controller.xml
    ScriptRunner Executed:countries_table.xml::31a15fa402822ae67ae588a74e2b0d9506f1dc26::Generated
    ScriptRunner Executed:locations_table.xml::9548f26f7f8b53bc3639869e23b118b4fe09363b::Generated
    ScriptRunner Executed:departments_table.xml::560727e73ed902cd0ad3e25793987d323580b823::Generated
    ScriptRunner Executed:emp_email_uk_index.xml::99a0278c50a75912985023c6a075514ec939d233::Generated
    ScriptRunner Executed:secure_employees_trigger.xml::cfe2f3f3443973ee9d43f4cc77701d211c6023ba::Generated
    ScriptRunner Executed:update_job_history_trigger.xml::aa8e35e3de04b9bb0ef3c47885f175e20be6c59e::Generated
    
  8. v2にいることを確認します。
    SQL> desc departments
    
    Name                  Null?         Type
    __________________ ___________ _______________
    DEPARTMENT_ID        NOT NULL     NUMBER(4)
    DEPARTMENT_NAME      NOT NULL     VARCHAR2(30)
    MANAGER_ID                        NUMBER(6)
    LOCATION_ID                       NUMBER(4)
    COLUMN1                           NUMBER          

3.7.5 RunOracleScriptを使用したカスタムSQLの実行

スクリプト、ファイルへのリンクまたはURLをソースとして使用できるRunOracleScript変更セットを作成します。この例の変更セットは、スクリプトで表を作成し、PL/SQL変数を使用する方法を示しています。
#### SCRIPT - STRING EXAMPLE ####

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog 
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:n0="http://www.oracle.com/xml/ns/dbchangelog-ext" 
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
  <changeSet id="runScriptString" author="jdoe">
    <n0:runOracleScript objectName="myScript" ownerName="JDOE" sourceType="STRING">
       <n0:source><![CDATA[DEFINE table_name = RUNNERSTRING;create table &&table_name (id number);]]></n0:source>
    </n0:runOracleScript>
  </changeSet>
</databaseChangeLog>
----------------------------------------------------------------------------------------------------------------------------------------------------
 
SQL> tables
no rows selected
 
SQL> lb update -changelog stringscript.xml
ScriptRunner Executed:stringscript.xml::runScriptString::jdoe
 
SQL> tables
TABLES 
____________________________ 
DATABASECHANGELOGLOCK        
DATABASECHANGELOG            
DATABASECHANGELOG_ACTIONS    
RUNNERSTRING                          
#### SCRIPT - FILE EXAMPLE ####

filescript.xml
----------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog 
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:n0="http://www.oracle.com/xml/ns/dbchangelog-ext" 
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
  <changeSet id="RunScriptFile" author="jdoe">
     <n0:runOracleScript objectName="myScript" ownerName="JDOE" sourceType="FILE">
         <n0:source><![CDATA[/Volumes/SSD/work/sqlcl/scriptFILE.sql]]></n0:source>
     </n0:runOracleScript>
  </changeSet>
</databaseChangeLog>
----------------------------------------------------------------------------------------------------------------------------------------------------

scriptFILE.sql
-------------------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE RUNNERFILE (id number)
-------------------------------------------------------------------------------------------------------------------------------------------

SQL> tables
TABLES 
____________________________ 
DATABASECHANGELOGLOCK        
DATABASECHANGELOG            
DATABASECHANGELOG_ACTIONS    
RUNNERSTRING                 

SQL> lb update -changelog filescript.xml
ScriptRunner Executed:/Volumes/SSD/work/sqlcl/filescript.xml::RunScriptFile::jdoe

SQL> tables
TABLES 
____________________________ 
DATABASECHANGELOGLOCK        
DATABASECHANGELOG            
DATABASECHANGELOG_ACTIONS    
RUNNERSTRING                 
RUNNERFILE     
#### SCRIPT - URL EXAMPLE ####

urlscript.xml
----------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog 
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:n0="http://www.oracle.com/xml/ns/dbchangelog-ext" 
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
  <changeSet id="RunScriptUrl" author="jdoe">
     <n0:runOracleScript objectName="myScript" ownerName="JDOE" sourceType="URL">
         <n0:source><![CDATA[file:///Volumes/SSD/work/sqlcl/scriptURL.sql]]></n0:source>
     </n0:runOracleScript>
  </changeSet>
</databaseChangeLog>
----------------------------------------------------------------------------------------------------------------------------------------------------

scriptURL.sql
-------------------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE RUNNERURL (id number)
-------------------------------------------------------------------------------------------------------------------------------------------

SQL> tables
TABLES 
____________________________ 
DATABASECHANGELOGLOCK        
DATABASECHANGELOG            
DATABASECHANGELOG_ACTIONS    
RUNNERSTRING                 
RUNNERFILE                   

SQL> lb update -changelog urlscript.xml
ScriptRunner Executed:/Volumes/SSD/work/sqlcl/urlscript.xml::RunScriptUrl::jdoe

SQL> tables
TABLES 
____________________________ 
DATABASECHANGELOGLOCK        
DATABASECHANGELOG            
DATABASECHANGELOG_ACTIONS    
RUNNERSTRING                 
RUNNERFILE                   
RUNNERURL