2025年9月10日水曜日

生成AIによるデータベースのスキーマ変更をSQLclのprojectコマンドを使ってデプロイする

ClaudeとSQLclのMCPサーバーを組み合わせると、必要な機能を指示するするだけで表や列、制約などの追加や削除を提案してくれます。生成されたDDLはデータベースで実際に実行するので、DDLが正しいことも保証されます。

CREATE TABLE文やALTER文を自分で書かなくてよくなるので作業効率は上がります。しかし、本番環境はもちろんのこと、開発環境であってもスキーマの変更は他への影響が大きく、なかなか簡単には実施できません。

以下ではOracle Databaseのマルチテナントの機能の1つであるスナップショット・クローンとSQLclのprojectコマンドを使って、独立した環境でスキーマの変更を実施してみます。生成AIによって提案されたスキーマの変更を開発者が確定した上で、SQLclのprojectコマンドでアーティファクトを作成します。このアーティファクトを開発環境や本番環境にデプロイすることにより、確定した変更のみを稼働中の環境に適用します。

以下の資料の手順を参考にしています。

Oracle LiveLabs - Database CI/CD Project Automation for a React JS Application

生成AIでスキーマ変更を行う前に元になるPDBで、上記のLab 1: Migrate Your Application to SQLcl Projectに記載されている作業を行い、PDBのスナップショット・クローンを作成する準備をします。

Lab 1の作業を行ったのち、PDBのスナップショット・クローンを作成します。作成したスナップショット・クローンに接続して、生成AIを使用したスキーマの変更を実施します。変更したスキーマからアーティファクトを作成するために、Lab 3: Database CI/CD with SQLcl Projectsの手順を実施します。

作業はMacbookで実施します。データベースはpodmanでコンテナとして実行しているOracle Database 23ai Freeを使用します。その他に使用するのはSQLclとClaude Desktopなので、macOS以外のプラットフォームでも同じように作業を進めることができるでしょう。

大まかな作業の流れは以下になります。
  1. Oracle Database 23ai Freeのデータベースを作成します。
  2. プラガブル・データベースFREEPDB1にサンプル・スキーマhuman resourcesをインストールします。
  3. FREEPDB1にサンプル・スキーマがインストールされた状態で、SQLclのプロジェクトを初期化します。
  4. FREEPDB1のスナップショット・クローンとしてFREEPDB1_SCを作成します。
  5. FREEPDB1_SCのスキーマを生成AIを使いながら更新します。
  6. SQLclのprojectコマンドを実行して、スキーマの更新をアーティファクトにします。
  7. アーティファクトをFREEPDB1にデプロイします。

データベースの作成



作業ディレクトリを決め、その作業ディレクトリに移動します。

podmanを使って、Oracle Database 23ai Freeのコンテナをmydbとして作成します。データ・ファイルを保存するボリュームとしてmydbvolを作成します。環境変数ORACLE_PWDに、SYSおよびSYSTEMのパスワードとなる文字列を設定します。

podman volume create mydbvol
podman run -d --name mydb -p 1521:1521 -e ORACLE_PWD=<SYSのパスワード> -v mydbvol:/opt/oracle/oradata container-registry.oracle.com/database/free:latest

概ね、コンテナは即時に作成され、データベースもすぐに使えるようになります。

mydb % podman volume create mydbvol

mydbvol

mydb % podman run -d --name mydb -p 1521:1521 -e ORACLE_PWD=******* -v mydbvol:/opt/oracle/oradata container-registry.oracle.com/database/free:latest

71218b4768e0b19f8dbbe0a488286c31f6472a58ef63d3c633468b650eca26a2

mydb % 



サンプル・データセットhuman resourcesのインストール



サンプル・データセットのhuman resourcesを、プラガブル・データベースFREEPDB1にインストールします。GitHubより、サンプル・データセットのアーカイブをダウンロードします。

curl -OL https://github.com/oracle-samples/db-sample-schemas/archive/refs/tags/v23.3.zip

mydb % curl -OL https://github.com/oracle-samples/db-sample-schemas/archive/refs/tags/v23.3.zip

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

100 11.6M    0 11.6M    0     0  4058k      0 --:--:--  0:00:02 --:--:-- 4131k

mydb % 


ダウンロードされたv23.3.zipを解凍します。

unzip v23.3.zip

mydb % unzip v23.3.zip 

Archive:  v23.3.zip

e3325a83e56c516815844025418a96ecaf219751

   creating: db-sample-schemas-23.3

 extracting: db-sample-schemas-23.3/.gitignore  

  inflating: db-sample-schemas-23.3/LICENSE.txt  

  inflating: db-sample-schemas-23.3/README.md  

  inflating: db-sample-schemas-23.3/README.txt  

  inflating: db-sample-schemas-23.3/SECURITY.md  

   creating: db-sample-schemas-23.3/customer_orders

  inflating: db-sample-schemas-23.3/customer_orders/README.md  


[中略]


  inflating: db-sample-schemas-23.3/sales_history/sh_create.sql  

  inflating: db-sample-schemas-23.3/sales_history/sh_install.sql  

  inflating: db-sample-schemas-23.3/sales_history/sh_populate.sql  

  inflating: db-sample-schemas-23.3/sales_history/sh_uninstall.sql  

  inflating: db-sample-schemas-23.3/sales_history/supplementary_demographics.csv  

  inflating: db-sample-schemas-23.3/sales_history/times.csv  

mydb % 


db-sample-schemas-23.3/human_resourcesに移動します。

cd db-sample-schemas-23.3/human_resources

SQLclを起動し、ユーザーSYSTEMFREEPDB1に接続します。hr_install.sqlを実行し、スキーマHRおよびHRのサンプル・データセットをインストールします。

sql system@localhost/freepdb1
@hr_install


スキーマHRの変更作業は、データベースにHRで接続して実施します。そのため、ここで設定したHRのパスワードは覚えておきます。

mydb % cd db-sample-schemas-23.3/human_resources 

human_resources % sql system@localhost/freepdb1



SQLcl: 水 9月 10 13:37:06 2025のリリース25.2 Production


Copyright (c) 1982, 2025, Oracle.  All rights reserved.


パスワード (**********?) ******

Last Successful login time: 水 9月  10 2025 13:37:07 +09:00


接続先:

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.9.0.25.07


SQL> @hr_install


Thank you for installing the Oracle Human Resources Sample Schema.

This installation script will automatically exit your database session

at the end of the installation or if any error is encountered.

The entire installation will be logged into the 'hr_install.log' log file.


Enter a password for the user HR: ******



Enter a tablespace for HR [USERS]: 

Do you want to overwrite the schema, if it already exists? [YES|no]: 

******  Creating REGIONS table ....


Table REGIONSは作成されました。



INDEX REG_ID_PKは作成されました。



Table REGIONSが変更されました。


******  Creating COUNTRIES table ....


Table COUNTRIESは作成されました。

[中略]


Installation verification    

____________________________ 

Verification:                


Table             provided    actual 

______________ ___________ _________ 

regions                  5         5 

countries               25        25 

departments             27        27 

locations               23        23 

employees              107       107 

jobs                    19        19 

job_history             10        10 


Thank you!                                                  

___________________________________________________________ 

The installation of the sample schema is now finished.      

Please check the installation verification output above.    

                                                            

You will now be disconnected from the database.             

                                                            

Thank you for using Oracle Database!                        

                                                            

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.9.0.25.07から切断されました

human_resources % 


作業ディレクトリに戻り、ディレクトリ.dbtoolsを作成します。環境変数DBTOOLS_HOMEにこのディレクトリを設定することにより、SQLclのプロジェクト情報とMCPサーバーの接続情報をデフォルトの保存先から分離します。

mkdir .dbtools

mydb % mkdir .dbtools

mydb % 


環境変数DBTOOLS_HOMEの設定を忘れないように、環境変数を設定した上でSQLclを起動するファイルsql.shを作成します。.dbtoolssqlコマンドの位置は、自身で使用している位置に変更します。
#!/bin/sh
export DBTOOLS_HOME=$HOME/Documents/mydb/.dbtools
$HOME/sqlcl/bin/sql $*
実行可能にします。

chmod 755 sql.sh

mydb % chmod 755 sql.sh

mydb % 


ファイル.gitignoreを作成し、以下を記述します。
db-sample-schemas-23.3/*
v23.3.zip
.dbtools/*


ソース・データベースの準備



Oracle LiveLabsのLab 1: Migrate Your Application to SQLcl Projectsの作業を行います。

SQLclでスキーマHRに接続します。先ほど作成したsql.shを呼び出します。

./sql.sh hr@localhost/freepdb1

mydb % ./sql.sh hr@localhost/freepdb1



SQLcl: 水 9月 10 14:01:02 2025のリリース25.2 Production


Copyright (c) 1982, 2025, Oracle.  All rights reserved.


パスワード (**********?) ******

接続先:

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.9.0.25.07


SQL> 


SQLclからgitコマンドを実行するために ! コマンドを使用します。

!git init --initial-branch main
!git add --all
!git commit -m "Initial commit"

SQL> !git init --initial-branch main

Initialized empty Git repository in /Users/_________/Documents/mydb/.git/


SQL> !git add --all


SQL> !git commit -m "Initial commit"

[main (root-commit) de0aa69] Initial commit

 2 files changed, 6 insertions(+)

 create mode 100644 .gitignore

 create mode 100755 sql.sh


SQL> 


SQLclのプロジェクトを初期化します。名前はHrManagerとします。対象のスキーマはHRです。

project init -name HrManager -schemas HR

SQL> project init -name HrManager -schemas HR


------------------------

プロジェクトの詳細

------------------------

プロジェクト名:    HrManager 

スキーマ:       HR 

ディレクトリ:       /Users/____________/Documents/mydb 

接続名:  

プロジェクトのルート:     mydb

プロジェクトが正常に作成されました

SQL> 


作成されたプロジェクト・ファイルをリポジトリに追加し、コミットします。

!git branch
!git status
!git add --all
!git status
!git commit -m "Add project files"

SQL> !git branch

* main


SQL> !git status

On branch main

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git restore <file>..." to discard changes in working directory)

modified:   .gitignore


Untracked files:

  (use "git add <file>..." to include in what will be committed)

README.md

dist/


no changes added to commit (use "git add" and/or "git commit -a")


SQL> !git add --all


SQL> !git status

On branch main

Changes to be committed:

  (use "git restore --staged <file>..." to unstage)

modified:   .gitignore

new file:   README.md

new file:   dist/install.sql



SQL> !git commit -m "Add project files"

[main 8c40b21] Add project files

 3 files changed, 77 insertions(+)

 create mode 100644 README.md

 create mode 100644 dist/install.sql


SQL> 


新しいブランチとしてBase-Releaseを作成し、切り替えます。

!git checkout -b Base-Release
!git branch
!git status


SQL> !git checkout -b Base-Release

Switched to a new branch 'Base-Release'


SQL> !git branch

* Base-Release

  main


SQL> !git status

On branch Base-Release

nothing to commit, working tree clean


SQL> 


プロジェクトにフィルタを追加します。エディタでファイル.dbtools/filters/project.filtersを開きます。

!vi .dbtools/filters/project.filters

not (object_type = 'TRIGGER' and object_name ='DATABASECHANGELOG_ACTIONS_TRG'),
に続けて、以下の行を追加します。DBTOOLS$で始まるオブジェクトをプロジェクトとして管理する対象から除外しています。
not (object_name like 'DBTOOLS$%'),

/*

Comma separated list of predicates to be fine-tuned for individual project.

Run

       project export -debug

to double check the dictionary queries

with internal and custom filters applied.


Reference list of export_types from internal.fixed.filters

        'ALL_OBJECTS',

        'ALL_INDEXES',

        'ALL_TRIGGERS',

        'ALL_SYNONYMS',

        'ALL_COL_COMMENTS',

        'ALL_TAB_COMMENTS',

        'ALL_TAB_PRIVS',

        'ALL_MVIEW_LOGS',

        'ALL_QUEUE_TABLES',

        'ALL_QUEUES',

        'ALL_DEPENDENCIES',

        'APEX_APPLICATIONS',

        'ORDS_SCHEMA',

        'USER'

*/


-- Liquibase Tables

object_type != 'TABLE' or object_name not in ('DATABASECHANGELOG',

                                              'DATABASECHANGELOGLOCK',

                                              'DATABASECHANGELOG_ACTIONS'

                                              ),

not (object_type = 'VIEW'    and object_name ='DATABASECHANGELOG_DETAILS'),

not (object_type = 'TRIGGER' and object_name ='DATABASECHANGELOG_ACTIONS_TRG'),

not (object_name like 'DBTOOLS$%'),   <--- ここに追加します。



-- DM generated tables

--not (object_type = 'TABLE' and object_name like 'DM$%' ),

--not (object_type = 'VIEW' and object_name like 'DM$V%' ),

object_name not like 'DM$%',      -- covers tables, views, indexes

object_name not like 'I_MLOG$%',      -- covers Materialized Views Logs Indexes

object_name not like 'I_SNAP$%',


export_type not in ('USER'),


-- Exclude certain database object types:

-- object_type not in ('CONTEXT', 'SCHEDULE'),



スキーマHRをプロジェクトにエクスポートします。

project export

SQL> project export

現在の接続(DESCRIPTION=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=freepdb1))) HRがすべての操作に使用されます

*** TABLES ***

*** PROCEDURES ***

*** SEQUENCES ***

*** INDEXES ***

*** TRIGGERS ***

*** REF_CONSTRAINTS ***

*** VIEWS ***

--------------------------------

COMMENT                        7

INDEX                         11

PROCEDURE                      2

REF_CONSTRAINT                10

SEQUENCE                       3

TABLE                          7

TRIGGER                        2

VIEW                           1

--------------------------------

43オブジェクトをエクスポートしました

7秒経過しました

SQL> 


エクスポートされたファイルをリポジトリに追加し、変更をコミットします。

!git status
!git add --all
!git status
!git commit -m "Export HR schema"

SQL> !git status

On branch Base-Release

Untracked files:

  (use "git add <file>..." to include in what will be committed)

src/


nothing added to commit but untracked files present (use "git add" to track)


SQL> !git add --all


SQL> !git status

On branch Base-Release

Changes to be committed:

  (use "git restore --staged <file>..." to unstage)

new file:   src/database/hr/comments/countries.sql

new file:   src/database/hr/comments/departments.sql

new file:   src/database/hr/comments/employees.sql

new file:   src/database/hr/comments/job_history.sql

new file:   src/database/hr/comments/jobs.sql

new file:   src/database/hr/comments/locations.sql

new file:   src/database/hr/comments/regions.sql

new file:   src/database/hr/indexes/dept_location_ix.sql

new file:   src/database/hr/indexes/emp_department_ix.sql

new file:   src/database/hr/indexes/emp_job_ix.sql

new file:   src/database/hr/indexes/emp_manager_ix.sql

new file:   src/database/hr/indexes/emp_name_ix.sql

new file:   src/database/hr/indexes/jhist_department_ix.sql

new file:   src/database/hr/indexes/jhist_employee_ix.sql

new file:   src/database/hr/indexes/jhist_job_ix.sql

new file:   src/database/hr/indexes/loc_city_ix.sql

new file:   src/database/hr/indexes/loc_country_ix.sql

new file:   src/database/hr/indexes/loc_state_province_ix.sql

new file:   src/database/hr/procedures/add_job_history.sql

new file:   src/database/hr/procedures/secure_dml.sql

new file:   src/database/hr/ref_constraints/countr_reg_fk.sql

new file:   src/database/hr/ref_constraints/dept_loc_fk.sql

new file:   src/database/hr/ref_constraints/dept_mgr_fk.sql

new file:   src/database/hr/ref_constraints/emp_dept_fk.sql

new file:   src/database/hr/ref_constraints/emp_job_fk.sql

new file:   src/database/hr/ref_constraints/emp_manager_fk.sql

new file:   src/database/hr/ref_constraints/jhist_dept_fk.sql

new file:   src/database/hr/ref_constraints/jhist_emp_fk.sql

new file:   src/database/hr/ref_constraints/jhist_job_fk.sql

new file:   src/database/hr/ref_constraints/loc_c_id_fk.sql

new file:   src/database/hr/sequences/departments_seq.sql

new file:   src/database/hr/sequences/employees_seq.sql

new file:   src/database/hr/sequences/locations_seq.sql

new file:   src/database/hr/tables/countries.sql

new file:   src/database/hr/tables/departments.sql

new file:   src/database/hr/tables/employees.sql

new file:   src/database/hr/tables/job_history.sql

new file:   src/database/hr/tables/jobs.sql

new file:   src/database/hr/tables/locations.sql

new file:   src/database/hr/tables/regions.sql

new file:   src/database/hr/triggers/secure_employees.sql

new file:   src/database/hr/triggers/update_job_history.sql

new file:   src/database/hr/views/emp_details_view.sql



SQL> !git commit -m "Export HR schema"

[Base-Release f91fb81] Export HR schema

 43 files changed, 611 insertions(+)

 create mode 100644 src/database/hr/comments/countries.sql

 create mode 100644 src/database/hr/comments/departments.sql

 create mode 100644 src/database/hr/comments/employees.sql

 create mode 100644 src/database/hr/comments/job_history.sql

 create mode 100644 src/database/hr/comments/jobs.sql

 create mode 100644 src/database/hr/comments/locations.sql

 create mode 100644 src/database/hr/comments/regions.sql

 create mode 100644 src/database/hr/indexes/dept_location_ix.sql

 create mode 100644 src/database/hr/indexes/emp_department_ix.sql

 create mode 100644 src/database/hr/indexes/emp_job_ix.sql

 create mode 100644 src/database/hr/indexes/emp_manager_ix.sql

 create mode 100644 src/database/hr/indexes/emp_name_ix.sql

 create mode 100644 src/database/hr/indexes/jhist_department_ix.sql

 create mode 100644 src/database/hr/indexes/jhist_employee_ix.sql

 create mode 100644 src/database/hr/indexes/jhist_job_ix.sql

 create mode 100644 src/database/hr/indexes/loc_city_ix.sql

 create mode 100644 src/database/hr/indexes/loc_country_ix.sql

 create mode 100644 src/database/hr/indexes/loc_state_province_ix.sql

 create mode 100644 src/database/hr/procedures/add_job_history.sql

 create mode 100644 src/database/hr/procedures/secure_dml.sql

 create mode 100644 src/database/hr/ref_constraints/countr_reg_fk.sql

 create mode 100644 src/database/hr/ref_constraints/dept_loc_fk.sql

 create mode 100644 src/database/hr/ref_constraints/dept_mgr_fk.sql

 create mode 100644 src/database/hr/ref_constraints/emp_dept_fk.sql

 create mode 100644 src/database/hr/ref_constraints/emp_job_fk.sql

 create mode 100644 src/database/hr/ref_constraints/emp_manager_fk.sql

 create mode 100644 src/database/hr/ref_constraints/jhist_dept_fk.sql

 create mode 100644 src/database/hr/ref_constraints/jhist_emp_fk.sql

 create mode 100644 src/database/hr/ref_constraints/jhist_job_fk.sql

 create mode 100644 src/database/hr/ref_constraints/loc_c_id_fk.sql

 create mode 100644 src/database/hr/sequences/departments_seq.sql

 create mode 100644 src/database/hr/sequences/employees_seq.sql

 create mode 100644 src/database/hr/sequences/locations_seq.sql

 create mode 100644 src/database/hr/tables/countries.sql

 create mode 100644 src/database/hr/tables/departments.sql

 create mode 100644 src/database/hr/tables/employees.sql

 create mode 100644 src/database/hr/tables/job_history.sql

 create mode 100644 src/database/hr/tables/jobs.sql

 create mode 100644 src/database/hr/tables/locations.sql

 create mode 100644 src/database/hr/tables/regions.sql

 create mode 100644 src/database/hr/triggers/secure_employees.sql

 create mode 100644 src/database/hr/triggers/update_job_history.sql

 create mode 100644 src/database/hr/views/emp_details_view.sql


SQL> 


ステージを実行します。

project stage

SQL> project stage


ステージは「比較」です:

旧ブランチ refs/heads/main

新規ブランチ refs/heads/Base-Release




ステージの処理が完了しました。変更を確認してリポジトリにコミットしてください


 Untracked files:

dist/releases

.dbtools

db-sample-schemas-23.3

dist/utils

SQL> 


ステージで作成されたファイルを追加し、変更をコミットします。

!git status
!git add --all
!git status
!git commit -m "Add stage files"

SQL> !git status

On branch Base-Release

Untracked files:

  (use "git add <file>..." to include in what will be committed)

dist/releases/

dist/utils/


nothing added to commit but untracked files present (use "git add" to track)


SQL> !git add --all


SQL> !git status

On branch Base-Release

Changes to be committed:

  (use "git restore --staged <file>..." to unstage)

new file:   dist/releases/main.changelog.xml

new file:   dist/releases/next/changes/Base-Release/hr/comments/countries.sql

new file:   dist/releases/next/changes/Base-Release/hr/comments/departments.sql

new file:   dist/releases/next/changes/Base-Release/hr/comments/employees.sql

new file:   dist/releases/next/changes/Base-Release/hr/comments/job_history.sql

new file:   dist/releases/next/changes/Base-Release/hr/comments/jobs.sql

new file:   dist/releases/next/changes/Base-Release/hr/comments/locations.sql

new file:   dist/releases/next/changes/Base-Release/hr/comments/regions.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/dept_location_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/emp_department_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/emp_job_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/emp_manager_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/emp_name_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/jhist_department_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/jhist_employee_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/jhist_job_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/loc_city_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/loc_country_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/indexes/loc_state_province_ix.sql

new file:   dist/releases/next/changes/Base-Release/hr/procedures/add_job_history.sql

new file:   dist/releases/next/changes/Base-Release/hr/procedures/secure_dml.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/countr_reg_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/dept_loc_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/dept_mgr_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_dept_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_job_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_manager_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_dept_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_emp_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_job_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/ref_constraints/loc_c_id_fk.sql

new file:   dist/releases/next/changes/Base-Release/hr/sequences/departments_seq.sql

new file:   dist/releases/next/changes/Base-Release/hr/sequences/employees_seq.sql

new file:   dist/releases/next/changes/Base-Release/hr/sequences/locations_seq.sql

new file:   dist/releases/next/changes/Base-Release/hr/tables/countries.sql

new file:   dist/releases/next/changes/Base-Release/hr/tables/departments.sql

new file:   dist/releases/next/changes/Base-Release/hr/tables/employees.sql

new file:   dist/releases/next/changes/Base-Release/hr/tables/job_history.sql

new file:   dist/releases/next/changes/Base-Release/hr/tables/jobs.sql

new file:   dist/releases/next/changes/Base-Release/hr/tables/locations.sql

new file:   dist/releases/next/changes/Base-Release/hr/tables/regions.sql

new file:   dist/releases/next/changes/Base-Release/hr/triggers/secure_employees.sql

new file:   dist/releases/next/changes/Base-Release/hr/triggers/update_job_history.sql

new file:   dist/releases/next/changes/Base-Release/hr/views/emp_details_view.sql

new file:   dist/releases/next/changes/Base-Release/stage.changelog.xml

new file:   dist/releases/next/release.changelog.xml

new file:   dist/utils/prechecks.sql

new file:   dist/utils/recompile.sql



SQL> !git commit -m "Add stage files"

[Base-Release 6edfb47] Add stage files

 48 files changed, 1067 insertions(+)

 create mode 100644 dist/releases/main.changelog.xml

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/countries.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/departments.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/employees.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/job_history.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/jobs.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/locations.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/regions.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/dept_location_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/emp_department_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/emp_job_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/emp_manager_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/emp_name_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/jhist_department_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/jhist_employee_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/jhist_job_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/loc_city_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/loc_country_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/loc_state_province_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/procedures/add_job_history.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/procedures/secure_dml.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/countr_reg_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/dept_loc_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/dept_mgr_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_dept_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_job_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_manager_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_dept_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_emp_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_job_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/loc_c_id_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/sequences/departments_seq.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/sequences/employees_seq.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/sequences/locations_seq.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/countries.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/departments.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/employees.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/job_history.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/jobs.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/locations.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/regions.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/triggers/secure_employees.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/triggers/update_job_history.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/views/emp_details_view.sql

 create mode 100644 dist/releases/next/changes/Base-Release/stage.changelog.xml

 create mode 100644 dist/releases/next/release.changelog.xml

 create mode 100644 dist/utils/prechecks.sql

 create mode 100644 dist/utils/recompile.sql


SQL> 


変更をメインのブランチにマージします。

!git checkout main
!git merge Base-Release


SQL> !git checkout main

Switched to branch 'main'


SQL> !git merge Base-Release

Updating 8c40b21..6edfb47

Fast-forward

 dist/releases/main.changelog.xml                              |   7 +

 .../next/changes/Base-Release/hr/comments/countries.sql       |  16 ++

 .../next/changes/Base-Release/hr/comments/departments.sql     |  23 +++

 .../next/changes/Base-Release/hr/comments/employees.sql       |  47 ++++++

 .../next/changes/Base-Release/hr/comments/job_history.sql     |  32 ++++

 dist/releases/next/changes/Base-Release/hr/comments/jobs.sql  |  20 +++

 .../next/changes/Base-Release/hr/comments/locations.sql       |  32 ++++

 .../next/changes/Base-Release/hr/comments/regions.sql         |  13 ++

 .../next/changes/Base-Release/hr/indexes/dept_location_ix.sql |   9 ++

 .../changes/Base-Release/hr/indexes/emp_department_ix.sql     |   9 ++

 .../next/changes/Base-Release/hr/indexes/emp_job_ix.sql       |   9 ++

 .../next/changes/Base-Release/hr/indexes/emp_manager_ix.sql   |   9 ++

 .../next/changes/Base-Release/hr/indexes/emp_name_ix.sql      |  10 ++

 .../changes/Base-Release/hr/indexes/jhist_department_ix.sql   |   9 ++

 .../changes/Base-Release/hr/indexes/jhist_employee_ix.sql     |   9 ++

 .../next/changes/Base-Release/hr/indexes/jhist_job_ix.sql     |   9 ++

 .../next/changes/Base-Release/hr/indexes/loc_city_ix.sql      |   9 ++

 .../next/changes/Base-Release/hr/indexes/loc_country_ix.sql   |   9 ++

 .../changes/Base-Release/hr/indexes/loc_state_province_ix.sql |   9 ++

 .../changes/Base-Release/hr/procedures/add_job_history.sql    |  27 ++++

 .../next/changes/Base-Release/hr/procedures/secure_dml.sql    |  13 ++

 .../changes/Base-Release/hr/ref_constraints/countr_reg_fk.sql |  10 ++

 .../changes/Base-Release/hr/ref_constraints/dept_loc_fk.sql   |  10 ++

 .../changes/Base-Release/hr/ref_constraints/dept_mgr_fk.sql   |  10 ++

 .../changes/Base-Release/hr/ref_constraints/emp_dept_fk.sql   |  10 ++

 .../changes/Base-Release/hr/ref_constraints/emp_job_fk.sql    |  10 ++

 .../Base-Release/hr/ref_constraints/emp_manager_fk.sql        |  10 ++

 .../changes/Base-Release/hr/ref_constraints/jhist_dept_fk.sql |  10 ++

 .../changes/Base-Release/hr/ref_constraints/jhist_emp_fk.sql  |  10 ++

 .../changes/Base-Release/hr/ref_constraints/jhist_job_fk.sql  |  10 ++

 .../changes/Base-Release/hr/ref_constraints/loc_c_id_fk.sql   |  10 ++

 .../changes/Base-Release/hr/sequences/departments_seq.sql     |   7 +

 .../next/changes/Base-Release/hr/sequences/employees_seq.sql  |   7 +

 .../next/changes/Base-Release/hr/sequences/locations_seq.sql  |   7 +

 .../next/changes/Base-Release/hr/tables/countries.sql         |  13 ++

 .../next/changes/Base-Release/hr/tables/departments.sql       |  22 +++

 .../next/changes/Base-Release/hr/tables/employees.sql         |  37 +++++

 .../next/changes/Base-Release/hr/tables/job_history.sql       |  30 ++++

 dist/releases/next/changes/Base-Release/hr/tables/jobs.sql    |  22 +++

 .../next/changes/Base-Release/hr/tables/locations.sql         |  24 +++

 dist/releases/next/changes/Base-Release/hr/tables/regions.sql |  20 +++

 .../changes/Base-Release/hr/triggers/secure_employees.sql     |  13 ++

 .../changes/Base-Release/hr/triggers/update_job_history.sql   |  18 +++

 .../next/changes/Base-Release/hr/views/emp_details_view.sql   |  54 +++++++

 dist/releases/next/changes/Base-Release/stage.changelog.xml   |  49 ++++++

 dist/releases/next/release.changelog.xml                      |   8 +

 dist/utils/prechecks.sql                                      |  81 ++++++++++

 dist/utils/recompile.sql                                      | 225 +++++++++++++++++++++++++++

 src/database/hr/comments/countries.sql                        |  14 ++

 src/database/hr/comments/departments.sql                      |  21 +++

 src/database/hr/comments/employees.sql                        |  45 ++++++

 src/database/hr/comments/job_history.sql                      |  30 ++++

 src/database/hr/comments/jobs.sql                             |  18 +++

 src/database/hr/comments/locations.sql                        |  30 ++++

 src/database/hr/comments/regions.sql                          |  11 ++

 src/database/hr/indexes/dept_location_ix.sql                  |   7 +

 src/database/hr/indexes/emp_department_ix.sql                 |   7 +

 src/database/hr/indexes/emp_job_ix.sql                        |   7 +

 src/database/hr/indexes/emp_manager_ix.sql                    |   7 +

 src/database/hr/indexes/emp_name_ix.sql                       |   8 +

 src/database/hr/indexes/jhist_department_ix.sql               |   7 +

 src/database/hr/indexes/jhist_employee_ix.sql                 |   7 +

 src/database/hr/indexes/jhist_job_ix.sql                      |   7 +

 src/database/hr/indexes/loc_city_ix.sql                       |   7 +

 src/database/hr/indexes/loc_country_ix.sql                    |   7 +

 src/database/hr/indexes/loc_state_province_ix.sql             |   7 +

 src/database/hr/procedures/add_job_history.sql                |  25 +++

 src/database/hr/procedures/secure_dml.sql                     |  11 ++

 src/database/hr/ref_constraints/countr_reg_fk.sql             |   8 +

 src/database/hr/ref_constraints/dept_loc_fk.sql               |   8 +

 src/database/hr/ref_constraints/dept_mgr_fk.sql               |   8 +

 src/database/hr/ref_constraints/emp_dept_fk.sql               |   8 +

 src/database/hr/ref_constraints/emp_job_fk.sql                |   8 +

 src/database/hr/ref_constraints/emp_manager_fk.sql            |   8 +

 src/database/hr/ref_constraints/jhist_dept_fk.sql             |   8 +

 src/database/hr/ref_constraints/jhist_emp_fk.sql              |   8 +

 src/database/hr/ref_constraints/jhist_job_fk.sql              |   8 +

 src/database/hr/ref_constraints/loc_c_id_fk.sql               |   8 +

 src/database/hr/sequences/departments_seq.sql                 |   5 +

 src/database/hr/sequences/employees_seq.sql                   |   5 +

 src/database/hr/sequences/locations_seq.sql                   |   5 +

 src/database/hr/tables/countries.sql                          |  11 ++

 src/database/hr/tables/departments.sql                        |  20 +++

 src/database/hr/tables/employees.sql                          |  35 +++++

 src/database/hr/tables/job_history.sql                        |  28 ++++

 src/database/hr/tables/jobs.sql                               |  20 +++

 src/database/hr/tables/locations.sql                          |  22 +++

 src/database/hr/tables/regions.sql                            |  18 +++

 src/database/hr/triggers/secure_employees.sql                 |  11 ++

 src/database/hr/triggers/update_job_history.sql               |  16 ++

 src/database/hr/views/emp_details_view.sql                    |  52 +++++++

 91 files changed, 1678 insertions(+)

 create mode 100644 dist/releases/main.changelog.xml

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/countries.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/departments.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/employees.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/job_history.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/jobs.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/locations.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/comments/regions.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/dept_location_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/emp_department_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/emp_job_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/emp_manager_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/emp_name_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/jhist_department_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/jhist_employee_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/jhist_job_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/loc_city_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/loc_country_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/indexes/loc_state_province_ix.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/procedures/add_job_history.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/procedures/secure_dml.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/countr_reg_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/dept_loc_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/dept_mgr_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_dept_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_job_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/emp_manager_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_dept_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_emp_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/jhist_job_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/ref_constraints/loc_c_id_fk.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/sequences/departments_seq.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/sequences/employees_seq.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/sequences/locations_seq.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/countries.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/departments.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/employees.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/job_history.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/jobs.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/locations.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/tables/regions.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/triggers/secure_employees.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/triggers/update_job_history.sql

 create mode 100644 dist/releases/next/changes/Base-Release/hr/views/emp_details_view.sql

 create mode 100644 dist/releases/next/changes/Base-Release/stage.changelog.xml

 create mode 100644 dist/releases/next/release.changelog.xml

 create mode 100644 dist/utils/prechecks.sql

 create mode 100644 dist/utils/recompile.sql

 create mode 100644 src/database/hr/comments/countries.sql

 create mode 100644 src/database/hr/comments/departments.sql

 create mode 100644 src/database/hr/comments/employees.sql

 create mode 100644 src/database/hr/comments/job_history.sql

 create mode 100644 src/database/hr/comments/jobs.sql

 create mode 100644 src/database/hr/comments/locations.sql

 create mode 100644 src/database/hr/comments/regions.sql

 create mode 100644 src/database/hr/indexes/dept_location_ix.sql

 create mode 100644 src/database/hr/indexes/emp_department_ix.sql

 create mode 100644 src/database/hr/indexes/emp_job_ix.sql

 create mode 100644 src/database/hr/indexes/emp_manager_ix.sql

 create mode 100644 src/database/hr/indexes/emp_name_ix.sql

 create mode 100644 src/database/hr/indexes/jhist_department_ix.sql

 create mode 100644 src/database/hr/indexes/jhist_employee_ix.sql

 create mode 100644 src/database/hr/indexes/jhist_job_ix.sql

 create mode 100644 src/database/hr/indexes/loc_city_ix.sql

 create mode 100644 src/database/hr/indexes/loc_country_ix.sql

 create mode 100644 src/database/hr/indexes/loc_state_province_ix.sql

 create mode 100644 src/database/hr/procedures/add_job_history.sql

 create mode 100644 src/database/hr/procedures/secure_dml.sql

 create mode 100644 src/database/hr/ref_constraints/countr_reg_fk.sql

 create mode 100644 src/database/hr/ref_constraints/dept_loc_fk.sql

 create mode 100644 src/database/hr/ref_constraints/dept_mgr_fk.sql

 create mode 100644 src/database/hr/ref_constraints/emp_dept_fk.sql

 create mode 100644 src/database/hr/ref_constraints/emp_job_fk.sql

 create mode 100644 src/database/hr/ref_constraints/emp_manager_fk.sql

 create mode 100644 src/database/hr/ref_constraints/jhist_dept_fk.sql

 create mode 100644 src/database/hr/ref_constraints/jhist_emp_fk.sql

 create mode 100644 src/database/hr/ref_constraints/jhist_job_fk.sql

 create mode 100644 src/database/hr/ref_constraints/loc_c_id_fk.sql

 create mode 100644 src/database/hr/sequences/departments_seq.sql

 create mode 100644 src/database/hr/sequences/employees_seq.sql

 create mode 100644 src/database/hr/sequences/locations_seq.sql

 create mode 100644 src/database/hr/tables/countries.sql

 create mode 100644 src/database/hr/tables/departments.sql

 create mode 100644 src/database/hr/tables/employees.sql

 create mode 100644 src/database/hr/tables/job_history.sql

 create mode 100644 src/database/hr/tables/jobs.sql

 create mode 100644 src/database/hr/tables/locations.sql

 create mode 100644 src/database/hr/tables/regions.sql

 create mode 100644 src/database/hr/triggers/secure_employees.sql

 create mode 100644 src/database/hr/triggers/update_job_history.sql

 create mode 100644 src/database/hr/views/emp_details_view.sql


SQL> 


リリース1.0.0を作成します。

project release -version 1.0.0

SQL> project release -version 1.0.0

プロセスが正常に完了しました

SQL> 


作成されたファイルを追加し、変更をコミットします。

!git add --all
!git commit -m "Release 1.0.0"

SQL> !git add --all


SQL> !git commit -m "Release 1.0.0"

[main 2765c37] Release 1.0.0

 48 files changed, 15 insertions(+), 1 deletion(-)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/comments/countries.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/comments/departments.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/comments/employees.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/comments/job_history.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/comments/jobs.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/comments/locations.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/comments/regions.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/dept_location_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/emp_department_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/emp_job_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/emp_manager_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/emp_name_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/jhist_department_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/jhist_employee_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/jhist_job_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/loc_city_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/loc_country_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/indexes/loc_state_province_ix.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/procedures/add_job_history.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/procedures/secure_dml.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/countr_reg_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/dept_loc_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/dept_mgr_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/emp_dept_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/emp_job_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/emp_manager_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/jhist_dept_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/jhist_emp_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/jhist_job_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/ref_constraints/loc_c_id_fk.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/sequences/departments_seq.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/sequences/employees_seq.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/sequences/locations_seq.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/tables/countries.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/tables/departments.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/tables/employees.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/tables/job_history.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/tables/jobs.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/tables/locations.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/tables/regions.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/triggers/secure_employees.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/triggers/update_job_history.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/hr/views/emp_details_view.sql (100%)

 rename dist/releases/{next => 1.0.0}/changes/Base-Release/stage.changelog.xml (100%)

 create mode 100644 dist/releases/1.0.0/changes/main/stage.changelog.xml

 create mode 100644 dist/releases/1.0.0/release.changelog.xml


SQL> 


デブロイ可能なアーティファクトを作成します。

その前にdist/install.sqlに含まれるlb(Liquibase)コマンドを変更します。

!vi dist/install.sql

lb updateとなっている部分をchangelog-syncに変更します。updateの場合、リリース1.0.0は初期リリースなので、スキーマHRに何もオブジェクトがないことを前提としてCREATE TABLE文を実行しようとします。しかし、実際にはデータベース・オブジェクトは作成済みなのでエラーが発生します。changelog-syncではオブジェクトの作成はせず、そのDDLが実行済みであることを確認します。

-- Kick off Liquibase

prompt "Installing/updating schemas"

lb update -log -changelog-file releases/main.changelog.xml -search-path "."


これを

-- Kick off Liquibase

prompt "Installing/updating schemas"

lb changelog-sync -log -changelog-file releases/main.changelog.xml -search-path "."


に変更します。

上記の変更をコミットし、アーティファクトを生成します。

!git add --all
!git commit -m "updated installer to do a changelog-sync"
project gen-artifact -verbose

SQL> !git add --all


SQL> !git commit -m "updated installer to do a changelog-sync"

[main f69db76] updated installer to do a changelog-sync

 1 file changed, 1 insertion(+), 1 deletion(-)


SQL> project gen-artifact -verbose

file : /Users/ynakakoshi/Documents/mydb/dist/releases/next/release.changelog.xml

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/release.changelog.xml

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/stage.changelog.xml

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/procedures/secure_dml.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/procedures/add_job_history.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/comments/jobs.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/comments/departments.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/comments/regions.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/comments/countries.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/comments/employees.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/comments/job_history.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/comments/locations.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/tables/jobs.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/tables/departments.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/tables/regions.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/tables/countries.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/tables/employees.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/tables/job_history.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/tables/locations.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/dept_loc_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/emp_job_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/jhist_job_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/jhist_dept_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/loc_c_id_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/countr_reg_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/emp_dept_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/jhist_emp_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/dept_mgr_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/ref_constraints/emp_manager_fk.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/triggers/update_job_history.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/triggers/secure_employees.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/sequences/departments_seq.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/sequences/locations_seq.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/sequences/employees_seq.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/views/emp_details_view.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/emp_name_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/jhist_department_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/emp_manager_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/emp_department_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/loc_country_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/jhist_employee_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/jhist_job_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/loc_city_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/dept_location_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/emp_job_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/Base-Release/hr/indexes/loc_state_province_ix.sql

file : /Users/ynakakoshi/Documents/mydb/dist/releases/1.0.0/changes/main/stage.changelog.xml

file : /Users/ynakakoshi/Documents/mydb/dist/releases/main.changelog.xml

file : /Users/ynakakoshi/Documents/mydb/dist/utils/recompile.sql

file : /Users/ynakakoshi/Documents/mydb/dist/utils/prechecks.sql

file : /Users/ynakakoshi/Documents/mydb/dist/install.sql

Your artifact has been generated HrManager-1.0.0.zip

SQL> 


以上でソース・データベースが準備できました。


スナップショット・クローンの作成



コンテナmydbに接続し、プラガブル・データベースFREEPDB1のスナップショット・クローンとしてFREEPDB1_SCを作成します。

podman exec -it mydb bash

mydb % podman exec -it mydb bash

bash-4.4$ 


データベースに接続し、アーカイブログ・モードを確認します。

sqlplus / as sysdba
archive log list

スナップショット・クローンを作成するには、データベースはアーカイブログ・モードで稼働している必要があります。アーカイブログ・モードでない場合は、ALTER DATABASE ARCHIVELOGを実行し、アーカイブログ・モードに切り替えます。手順や注意点はChatGPT、Claude、Geminiのどれに聞いてもきちんと教えてくれます。

bash-4.4$ sqlplus / as sysdba


SQL*Plus: Release 23.0.0.0.0 - Production on Wed Sep 10 05:42:45 2025

Version 23.9.0.25.07


Copyright (c) 1982, 2025, Oracle.  All rights reserved.



Connected to:

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.9.0.25.07


SQL> archive log list

Database log mode       Archive Mode

Automatic archival       Enabled

Archive destination       /opt/oracle/product/23ai/dbhomeFree/dbs/arch

Oldest online log sequence     2

Next log sequence to archive   2

Current log sequence       1

SQL> 


初期化パラメータのclonedbを確認します。通常のファイル・システムにデータファイルが配置されている場合は、clonedbtrueにする必要があります。

show parameter clonedb

SQL> show parameter clonedb


NAME     TYPE VALUE

------------------------------------ ----------- ------------------------------

clonedb      boolean FALSE

clonedb_dir     string

SQL> 


clonedbtrueに変更します。スコープはspfileに限定されているため、変更後にデータベースを再起動します。

alter system set clonedb=true scope=spfile;
shutdown immediate
startup
show parameter clonedb


SQL> alter system set clonedb=true scope=spfile;


System altered.


SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.


Total System Global Area 1603293992 bytes

Fixed Size     4928296 bytes

Variable Size   452984832 bytes

Database Buffers 1140850688 bytes

Redo Buffers     4530176 bytes

Database mounted.

Database opened.

SQL> show parameter clonedb


NAME     TYPE VALUE

------------------------------------ ----------- ------------------------------

clonedb      boolean TRUE

clonedb_dir     string

SQL> 


以上でスナップショット・クローンを作成できるようになりました。

スナップショット・クローンのソースとなるプラガブル・データベースFREEPDB1を、読取専用でオープンします。

alter pluggable database freepdb1 close immediate;
alter pluggable database freepdb1 open read only;

SQL> alter pluggable database freepdb1 close immediate;


Pluggable database altered.


SQL> alter pluggable database freepdb1 open read only;


Pluggable database altered.


SQL> 


FREEPDB1のスナップショット・クローンをFREEPDB1_SCとして作成します。通常の利用ができるように読み書き可能でオープンします。

create pluggable database freepdb1_sc from freepdb1 snapshot copy file_name_convert = ('FREEPDB1','FREEPDB1_SC');
alter pluggable database freepdb1_sc open read write;
show pdbs

SQL> create pluggable database freepdb1_sc from freepdb1 snapshot copy file_name_convert = ('FREEPDB1','FREEPDB1_SC');


Pluggable database created.


SQL> alter pluggable database freepdb1_sc open read write;


Pluggable database altered.


SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED   READ ONLY  NO

3 FREEPDB1   READ ONLY  NO

4 FREEPDB1_SC   READ WRITE NO

SQL> 


以上で、スナップショット・クローンFREEPDB1_SCが作成されました。このスナップショット・クローンに接続して、スキーマの変更を実施します。


スキーマの更新



コンテナmydbから抜け、ホストで作業します。

SQLclを起動し、先ほど作成したスナップショット・クローンFREEPDB1_SCへの接続を保存します。名前はmydb-scとします。

./sql.sh /nolog
conn -save mydb-sc -savepwd hr@localhost/freepdb1_sc

mydb % ./sql.sh /nolog



SQLcl: 水 9月 10 14:59:47 2025のリリース25.2 Production


Copyright (c) 1982, 2025, Oracle.  All rights reserved.


SQL> conn -save mydb-sc -savepwd hr@localhost/freepdb1_sc

パスワード (**********?) ******

名前: mydb-sc

接続文字列: localhost/freepdb1_sc

ユーザー: hr

パスワード: ******

接続しました.

SQL> 


EMPLOYEESの定義を確認します。

desc employees

SQL> desc employees


名前                Nullかどうか    タイプ             

_________________ ___________ _______________ 

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)       

SQL> exit

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.9.0.25.07から切断されました

mydb % 


Claude DesktopのMCPサーバーを登録します。commandとして、環境変数DBTOOLS_HOMEの設定を含むsql.shをフルパスで指定します。
{
  "mcpServers": {
    "sqlcl": {
      "command": "/Users/___________/Documents/mydb/sql.sh",
      "args": [
        "-mcp"
      ]
    }
  }
}
Claude Desktopからmydb-scに接続します。

sqlclのmydb-scに接続して。


以下を依頼しました。チャットの履歴は以下です(作業を再実行したため、若干異なる結果になっています。)


スキーマHRの表EMPLOYEESに、退職に関する情報を追加して。
退職理由はマスター表を作成して定型の理由を設定し、それを参照するようにしてください。

これで退職理由は定型化され、データの整合性が保たれるようになりました。新しい退職理由が必要な場合は、マスター表に追加するだけで対応できます。
Claudeが生成したSQLのうち、退職理由マスター・データはDDLではないため、SQLclでのエクスポートの対象になりません。このSQLを取り出しておきます。
-- ====================================================================
-- RESIGNATION_REASONSテーブル マスターデータ投入スクリプト
-- 作成日: 2025-09-10
-- 説明: 退職理由マスターテーブルの初期データを投入
-- ====================================================================

-- マスターデータの投入
INSERT INTO HR.RESIGNATION_REASONS 
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY) 
VALUES
(1, 'RESIGNATION', '自己都合退職', '従業員からの自発的な退職申出', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS 
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY) 
VALUES
(2, 'DISMISSAL', '会社都合退職', '会社からの解雇・人員整理等', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS 
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY) 
VALUES
(3, 'RETIREMENT', '定年退職', '定年による退職', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS 
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY) 
VALUES
(4, 'CONTRACT_END', '契約期間満了', '有期契約の期間満了による退職', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS 
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY) 
VALUES
(5, 'DEATH', '死亡退職', '在職中の死亡による退職', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS 
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY) 
VALUES
(6, 'TRANSFER', '転籍・出向', '他社への転籍・出向による退職', 'Y', DATE '2025-09-10', 'HR');

-- コミット
COMMIT;

-- ====================================================================
-- スクリプト終了
-- ====================================================================
これまでの変更をデプロイ可能なアーティファクトとして作成します。


スキーマ更新文のアーティファクトの作成



Oracle LiveLabsLab 3: Database CI/CD with SQLcl Projectsに記載されている手順を実施します。

SQLclを起動し、FREEPDB1_SCに接続します。

./sql.sh /nolog
conn -name mydb-sc

mydb % ./sql.sh /nolog



SQLcl: 水 9月 10 15:17:18 2025のリリース25.2 Production


Copyright (c) 1982, 2025, Oracle.  All rights reserved.


SQL> conn -name mydb-sc

接続しました.

SQL> 


ブランチTicket-1-Leaveを作成し、切り替えます。

!git branch
!git checkout -b Ticket-1-Leave

SQL> !git branch

  Base-Release

* main


SQL> !git checkout -b Ticket-1-Leave

Switched to a new branch 'Ticket-1-Leave'


SQL> 


変更されたスキーマをエクポートします。

project export

SQL> project export

現在の接続(DESCRIPTION=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=freepdb1_sc))) HRがすべての操作に使用されます

*** TABLES ***

*** SEQUENCES ***

*** PROCEDURES ***

*** INDEXES ***

*** TRIGGERS ***

*** VIEWS ***

*** REF_CONSTRAINTS ***

--------------------------------

COMMENT                        8

INDEX                         11

PROCEDURE                      2

REF_CONSTRAINT                11

SEQUENCE                       3

TABLE                          8

TRIGGER                        2

VIEW                           1

--------------------------------

46オブジェクトをエクスポートしました

7秒経過しました

SQL> 


変更をコミットします。

!git status
!git add --all
!git status
!git commit -m "Export updated schema"

SQL> !git status

On branch Ticket-1-Leave

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git restore <file>..." to discard changes in working directory)

modified:   src/database/hr/comments/employees.sql

modified:   src/database/hr/tables/employees.sql


Untracked files:

  (use "git add <file>..." to include in what will be committed)

src/database/hr/comments/resignation_reasons.sql

src/database/hr/ref_constraints/fk_emp_resignation_reason.sql

src/database/hr/tables/resignation_reasons.sql


no changes added to commit (use "git add" and/or "git commit -a")


SQL> !git add --all


SQL> !git status

On branch Ticket-1-Leave

Changes to be committed:

  (use "git restore --staged <file>..." to unstage)

modified:   src/database/hr/comments/employees.sql

new file:   src/database/hr/comments/resignation_reasons.sql

new file:   src/database/hr/ref_constraints/fk_emp_resignation_reason.sql

modified:   src/database/hr/tables/employees.sql

new file:   src/database/hr/tables/resignation_reasons.sql



SQL> !git commit -m "Export updated schema"

[Ticket-1-Leave 5e78377] Export updated schema

 5 files changed, 76 insertions(+), 13 deletions(-)

 create mode 100644 src/database/hr/comments/resignation_reasons.sql

 create mode 100644 src/database/hr/ref_constraints/fk_emp_resignation_reason.sql

 create mode 100644 src/database/hr/tables/resignation_reasons.sql


SQL> 


プロジェクトをステージします。

project stage

SQL> project stage


ステージは「比較」です:

旧ブランチ refs/heads/main

新規ブランチ refs/heads/Ticket-1-Leave




ステージの処理が完了しました。変更を確認してリポジトリにコミットしてください


Changes not staged for commit

modified: dist/releases/next/release.changelog.xml


 Untracked files:

artifact

dist/releases/1.0.0/changes/Base-Release/_custom

dist/releases/1.0.0/changes/main/_custom

.dbtools

dist/releases/next/changes

db-sample-schemas-23.3

SQL> 


退職理由のマスター・データを新しく作成された表RESIGNATION_REASONSに投入するスクリプトを、カスタム・スクリプトとして追加します。resign-reasons.sqlという名前で、ファイルを追加します。

project stage add-custom -file-name resign-reasons.sql -verbose

SQL> project stage add-custom -file-name resign-reasons.sql -verbose

ファイルresign-reasons.sqlに対するカスタムの追加コマンドを実行しています...

現在のブランチ: Ticket-1-Leave

ファイルが作成されました:  dist/releases/next/changes/Ticket-1-Leave/_custom/resign-reasons.sql

変更が更新されました:dist/releases/next/changes/Ticket-1-Leave/_custom/resign-reasons.sql

変更が更新されました:dist/releases/next/changes/Ticket-1-Leave/stage.changelog.xml

変更が更新されました:dist/releases/next/release.changelog.xml

変更がスキップされました:dist/releases/next/release.changelog.xml

カスタム・ファイル"resign-reasons.sql"が正常に作成されました

プロセスは正常に完了しました

SQL> 


ファイルが作成されました:というメッセージに続いて、実際に作成されたファイルが表示されています。

このファイルをエディタで開きます。

!vi dist/releases/next/changes/Ticket-1-Leave/_custom/resign-reasons.sql

作成されたファイルにClaudeのチャット履歴より取り出したINSERT文と、それに続けてCOMMIT;を記述します。
-- liquibase formatted sql
-- changeset  SqlCl:1757492677000 stripComments:false logicalFilePath:Ticket-1-Leave/_custom/resign-reasons.sql
-- sqlcl_snapshot dist/releases/next/changes/Ticket-1-Leave/_custom/resign-reasons.sql:null:null:custom

-- マスターデータの投入
INSERT INTO HR.RESIGNATION_REASONS
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY)
VALUES
(1, 'RESIGNATION', '自己都合退職', '従業員からの自発的な退職申出', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY)
VALUES
(2, 'DISMISSAL', '会社都合退職', '会社からの解雇・人員整理等', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS 
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY)
VALUES
(3, 'RETIREMENT', '定年退職', '定年による退職', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY)
VALUES
(4, 'CONTRACT_END', '契約期間満了', '有期契約の期間満了による退職', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY)
VALUES
(5, 'DEATH', '死亡退職', '在職中の死亡による退職', 'Y', DATE '2025-09-10', 'HR');

INSERT INTO HR.RESIGNATION_REASONS
(REASON_ID, REASON_CODE, REASON_NAME, DESCRIPTION, IS_ACTIVE, CREATED_DATE, CREATED_BY)
VALUES
(6, 'TRANSFER', '転籍・出向', '他社への転籍・出向による退職', 'Y', DATE '2025-09-10', 'HR');

-- コミット
COMMIT;
作成されたファイルを追加して、変更をコミットします。

!git add --all
!git commit -m "Add stage files"

SQL> !git add --all


SQL> !git commit -m "Add stage files"

[Ticket-1-Leave cd796c5] Add stage files

 8 files changed, 183 insertions(+)

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/_custom/resign-reasons.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/comments/employees.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/comments/resignation_reasons.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/ref_constraints/fk_emp_resignation_reason.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/tables/employees.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/tables/resignation_reasons.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/stage.changelog.xml


SQL> 


メイン・ブランチにマージします。

!git checkout main
!git merge Ticket-1-Leave

SQL> !git checkout main

Switched to branch 'main'


SQL> !git merge Ticket-1-Leave

Updating f69db76..cd796c5

Fast-forward

 .../next/changes/Ticket-1-Leave/_custom/resign-reasons.sql    | 37 ++++++++++++++++++

 .../next/changes/Ticket-1-Leave/hr/comments/employees.sql     | 56 ++++++++++++++++++++++++++++

 .../Ticket-1-Leave/hr/comments/resignation_reasons.sql        | 19 ++++++++++

 .../hr/ref_constraints/fk_emp_resignation_reason.sql          | 10 +++++

 .../next/changes/Ticket-1-Leave/hr/tables/employees.sql       | 24 ++++++++++++

 .../changes/Ticket-1-Leave/hr/tables/resignation_reasons.sql  | 24 ++++++++++++

 dist/releases/next/changes/Ticket-1-Leave/stage.changelog.xml | 12 ++++++

 dist/releases/next/release.changelog.xml                      |  1 +

 src/database/hr/comments/employees.sql                        | 11 +++++-

 src/database/hr/comments/resignation_reasons.sql              | 17 +++++++++

 src/database/hr/ref_constraints/fk_emp_resignation_reason.sql |  8 ++++

 src/database/hr/tables/employees.sql                          | 31 +++++++++------

 src/database/hr/tables/resignation_reasons.sql                | 22 +++++++++++

 13 files changed, 259 insertions(+), 13 deletions(-)

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/_custom/resign-reasons.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/comments/employees.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/comments/resignation_reasons.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/ref_constraints/fk_emp_resignation_reason.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/tables/employees.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/hr/tables/resignation_reasons.sql

 create mode 100644 dist/releases/next/changes/Ticket-1-Leave/stage.changelog.xml

 create mode 100644 src/database/hr/comments/resignation_reasons.sql

 create mode 100644 src/database/hr/ref_constraints/fk_emp_resignation_reason.sql

 create mode 100644 src/database/hr/tables/resignation_reasons.sql


SQL> 


リリース2.0.0を作成します。

project release -version 2.0.0

SQL> project release -version 2.0.0

プロセスが正常に完了しました

SQL> 


ファイルを追加して、変更をコミットします。

!git add --all
!git commit -m "Release 2.0.0"

SQL> !git add --all


SQL> !git commit -m "Release 2.0.0"

[main 607011e] Release 2.0.0

 11 files changed, 15 insertions(+), 1 deletion(-)

 rename dist/releases/{next => 2.0.0}/changes/Ticket-1-Leave/_custom/resign-reasons.sql (100%)

 rename dist/releases/{next => 2.0.0}/changes/Ticket-1-Leave/hr/comments/employees.sql (100%)

 rename dist/releases/{next => 2.0.0}/changes/Ticket-1-Leave/hr/comments/resignation_reasons.sql (100%)

 rename dist/releases/{next => 2.0.0}/changes/Ticket-1-Leave/hr/ref_constraints/fk_emp_resignation_reason.sql (100%)

 rename dist/releases/{next => 2.0.0}/changes/Ticket-1-Leave/hr/tables/employees.sql (100%)

 rename dist/releases/{next => 2.0.0}/changes/Ticket-1-Leave/hr/tables/resignation_reasons.sql (100%)

 rename dist/releases/{next => 2.0.0}/changes/Ticket-1-Leave/stage.changelog.xml (100%)

 create mode 100644 dist/releases/2.0.0/changes/main/stage.changelog.xml

 create mode 100644 dist/releases/2.0.0/release.changelog.xml


SQL> 


デプロイ可能なアーティファクトを作成します。

先ほど変更したdist/install.sqlに含まれるlbコマンドを、changelog-syncからupdateに戻します。今度は実際にスキーマを変更するためです。

!vi dist/install.sql

-- SQLcl uses the SQLCL engine for formatted sql changelog not the JDBC engine

-- By default, a project will not use substitution variables and allows blank

-- lines in sql statements.


set define off

set sqlblanklines on


-- Prechecks modifiable helper

-- Check running with SQLcl

-- Check minimum DB version

-- Check character set

-- @utils/prechecks.sql


-- SLOT

-- Custom pre Liquibase code here (perhaps creation of a schema)

-- This is MINIMAL pre setup, everything that can go through Liquibase - SHOULD


-- Kick off Liquibase

prompt "Installing/updating schemas"

lb update -log -changelog-file releases/main.changelog.xml -search-path "."


--@utils/recompile.sql


変更を追加しコミットします。

!git add --all
!git status
!git commit -m "updated installer to do an update"

SQL> !git add --all


SQL> !git status

On branch main

Changes to be committed:

  (use "git restore --staged <file>..." to unstage)

modified:   dist/install.sql



SQL> !git commit -m "updated installer to do an update"

[main e05da6c] updated installer to do an update

 1 file changed, 1 insertion(+), 1 deletion(-)


SQL> 


アーティファクトを作成します。

project gen-artifact

SQL> project gen-artifact

Your artifact has been generated HrManager-2.0.0.zip

SQL> 


以上でアーティファクトが2つ作成されました。

artifact/HrManager-1.0.0.zipは、空のスキーマからサンプル・スキーマのHRがインストールされた直後のスキーマに変更するアーティファクトですが、実際にデータベース・オブジェクトは作成せず確認だけを実施します。

artifact/HrManager-2.0.0.zipは、サンプル・スキーマのHRに退職理由のマスター表と、それを参照する列を表EMPLOYEESに追加します。


アーティファクトのデプロイ



作成したアーティファクトをデプロイします。最初にスナップショット・クローンを作り直して元の状態に戻した上で、アーティファクトをデプロイしてみます。

コンテナmydbに接続します。

podman exec -it mydb bash

mydb % podman exec -it mydb bash

bash-4.4$ 


スナップショット・クローンFREEPDB1_SCを作り直します。

sqlplus / as sysdba
alter pluggable database freepdb1_sc close immediate;
drop pluggable database freepdb1_sc including datafiles;
create pluggable database freepdb1_sc from freepdb1 snapshot copy file_name_convert = ('FREEPDB1','FREEPDB1_SC');
alter pluggable database freepdb1_sc open read write;
show pdbs

SQL> alter pluggable database freepdb1_sc close immediate;


Pluggable database altered.


SQL> drop pluggable database freepdb1_sc including datafiles;


Pluggable database dropped.


SQL> create pluggable database freepdb1_sc from freepdb1 snapshot copy file_name_convert = ('FREEPDB1','FREEPDB1_SC');


Pluggable database created.


SQL> alter pluggable database freepdb1_sc open read write;


Pluggable database altered.


SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED   READ ONLY  NO

3 FREEPDB1   READ ONLY  NO

5 FREEPDB1_SC   READ WRITE NO

SQL> 


コンテナmydbを抜けます。

SQLclで作り直したスナップショット・クローンFREEPDB1_SCに接続します。

./sql.sh /nolog
conn -name mydb-sc
 

mydb % ./sql.sh /nolog



SQLcl: 水 9月 10 15:48:32 2025のリリース25.2 Production


Copyright (c) 1982, 2025, Oracle.  All rights reserved.


SQL> conn -name mydb-sc 

接続しました.

SQL> 


EMPLOYEESの列を確認します。列RESIGNATION_REASON_IDはありません。

desc employees

SQL> desc employees


名前                Nullかどうか    タイプ             

_________________ ___________ _______________ 

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)       

SQL> 


最初にHrManager-1.0.0.zipをデプロイします。

project deploy -file artifact/HrManager-1.0.0.zip

SQL> project deploy -file artifact/HrManager-1.0.0.zip

移行を開始しています...

Installing/updating schemas

--Starting Liquibase at 2025-09-10T17:33:02.917648 using Java 21.0.8 (version 4.30.0 #0 built at 2025-04-01 10:24+0000)


Produced logfile: sqlcl-lb-1757493182792.log


操作が正常に完了しました。

移行が完了しました

SQL> 


リリース1.0.0の時点ではまだ列RESIGNATION_REASON_IDは追加されません。

SQL> desc employees


名前                Nullかどうか    タイプ             

_________________ ___________ _______________ 

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)       

SQL> 


HrManager-2.0.0.zipをデプロイします。

project deploy -file artifact/HrManager-2.0.0.zip

SQL> project deploy -file artifact/HrManager-2.0.0.zip

移行を開始しています...

Running Changeset: Ticket-1-Leave/hr/tables/employees.sql::1757492639727::HR

Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。

Running Changeset: Ticket-1-Leave/hr/tables/resignation_reasons.sql::1757492639502::HR

Table HR.RESIGNATION_REASONSは作成されました。



Table HR.RESIGNATION_REASONSが変更されました。



Table HR.RESIGNATION_REASONSが変更されました。



Table HR.RESIGNATION_REASONSが変更されました。

Running Changeset: Ticket-1-Leave/hr/comments/employees.sql::1757492639519::hr

Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。

Running Changeset: Ticket-1-Leave/hr/comments/resignation_reasons.sql::1757492639486::hr

Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。

Running Changeset: Ticket-1-Leave/hr/ref_constraints/fk_emp_resignation_reason.sql::1757492639494::HR

Table HR.EMPLOYEESが変更されました。

Running Changeset: Ticket-1-Leave/_custom/resign-reasons.sql::1757492677000::SqlCl

1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



コミットが完了しました。

Liquibase: Update has been successful. Rows affected: 6

Installing/updating schemas

--Starting Liquibase at 2025-09-10T17:33:37.407117 using Java 21.0.8 (version 4.30.0 #0 built at 2025-04-01 10:24+0000)

Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。

Table HR.RESIGNATION_REASONSは作成されました。



Table HR.RESIGNATION_REASONSが変更されました。



Table HR.RESIGNATION_REASONSが変更されました。



Table HR.RESIGNATION_REASONSが変更されました。

Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。

Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。

Table HR.EMPLOYEESが変更されました。

1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



コミットが完了しました。


UPDATE SUMMARY

Run:                          6

Previously run:              43

Filtered out:                 0

-------------------------------

Total change sets:           49



Produced logfile: sqlcl-lb-1757493217382.log


操作が正常に完了しました。

移行が完了しました

SQL> 


リリース2.0.0が適用されると、列RESIGNATION_REASON_IDなどが追加されていることが確認できます。

SQL> desc employees


名前                       Nullかどうか    タイプ             

________________________ ___________ _______________ 

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)       

RESIGNATION_DATE                     DATE            

IS_ACTIVE                            CHAR(1)         

RESIGNATION_REASON_ID                NUMBER(3)       

SQL> 


表RESIGNATION_REASONSに、カスタム・スクリプトresign-reasons.sqlに記述したデータが投入されていることが確認できます。

select * from resignation_reasons;

SQL> select * from resignation_reasons;


   REASON_ID REASON_CODE     REASON_NAME    DESCRIPTION       IS_ACTIVE    CREATED_DATE    CREATED_BY    

____________ _______________ ______________ _________________ ____________ _______________ _____________ 

           1 RESIGNATION     自己都合退職         従業員からの自発的な退職申出    Y            25-09-10        HR            

           2 DISMISSAL       会社都合退職         会社からの解雇・人員整理等     Y            25-09-10        HR            

           3 RETIREMENT      定年退職           定年による退職           Y            25-09-10        HR            

           4 CONTRACT_END    契約期間満了         有期契約の期間満了による退職    Y            25-09-10        HR            

           5 DEATH           死亡退職           在職中の死亡による退職       Y            25-09-10        HR            

           6 TRANSFER        転籍・出向          他社への転籍・出向による退職    Y            25-09-10        HR            


6行が選択されました。 


SQL> 


アーティファクトが期待通りに作成されたことが確認できたので、ソースであるFREEPDB1に適用します。

コンテナmydbに接続します。

podman exec -it mydb bash

mydb % podman exec -it mydb bash

bash-4.4$ 


スナップショット・クローンFREEPDB1_SCを削除し、プラガブル・データベースFREEPDB1を通常の読み書き可能でオープンします。

sqlplus  / as sysdba
alter pluggable database freepdb1_sc close immediate;
drop pluggable database freepdb1_sc including datafiles;
alter pluggable database freepdb1 close immediate;
alter pluggable database freepdb1 open read write;

最後のFREEPDB1のオープンでORA-65009が発生します。

bash-4.4$ sqlplus / as sysdba


SQL*Plus: Release 23.0.0.0.0 - Production on Wed Sep 10 08:36:21 2025

Version 23.9.0.25.07


Copyright (c) 1982, 2025, Oracle.  All rights reserved.



Connected to:

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.9.0.25.07


SQL> alter pluggable database freepdb1_sc close immediate;


Pluggable database altered.


SQL> drop pluggable database freepdb1_sc including datafiles;


Pluggable database dropped.


SQL> alter pluggable database freepdb1 close immediate;


Pluggable database altered.


SQL> alter pluggable database freepdb1 open read write;

alter pluggable database freepdb1 open read write

*

ERROR at line 1:

ORA-65009: cannot open pluggable database in read-write mode

Help: https://docs.oracle.com/error-help/db/ora-65009/



SQL>


これは、スナップショット・クローンのソースPDBのデータ・ファイルのパーミッションが、書き込み禁止に変更されたためです。

!ls -l /opt/oracle/oradata/FREE/FREEPDB1/

SQL> !ls -l /opt/oracle/oradata/FREE/FREEPDB1/

total 933928

-r--r-----. 1 oracle oinstall 450895872 Sep 10 05:52 sysaux01.dbf

-r--r-----. 1 oracle oinstall 304095232 Sep 10 05:52 system01.dbf

-rw-r-----. 1 oracle oinstall  20979712 Sep 10 05:17 temp01.dbf

-r--r-----. 1 oracle oinstall 104865792 Sep 10 05:52 undotbs01.dbf

-r--r-----. 1 oracle oinstall  75505664 Sep 10 05:52 users01.dbf


SQL> 


データ・ファイルの所有者oracleは書き込めるように、パーミッションを変更します。

!chmod u+w /opt/oracle/oradata/FREE/FREEPDB1/*.dbf
!ls -l /opt/oracle/oradata/FREE/FREEPDB1/

SQL> !chmod u+w /opt/oracle/oradata/FREE/FREEPDB1/*.dbf


SQL> !ls -l /opt/oracle/oradata/FREE/FREEPDB1/

total 933928

-rw-r-----. 1 oracle oinstall 450895872 Sep 10 05:52 sysaux01.dbf

-rw-r-----. 1 oracle oinstall 304095232 Sep 10 05:52 system01.dbf

-rw-r-----. 1 oracle oinstall  20979712 Sep 10 05:17 temp01.dbf

-rw-r-----. 1 oracle oinstall 104865792 Sep 10 05:52 undotbs01.dbf

-rw-r-----. 1 oracle oinstall  75505664 Sep 10 05:52 users01.dbf


SQL> 


プラガブル・データベースFREEPDB1を通常の読み書き可能でオープンします。

alter pluggable database freepdb1 open read write;
show pdbs


SQL> alter pluggable database freepdb1 open read write;


Pluggable database altered.


SQL> show pdbs


    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED   READ ONLY  NO

3 FREEPDB1   READ WRITE NO

SQL> 


コンテナmydbを抜けます。

SQLclでプラガブル・データベースFREEPDB1に接続します。

./sql.sh /nolog
conn hr@localhost/freepdb1

mydb % ./sql.sh /nolog



SQLcl: 水 9月 10 16:13:55 2025のリリース25.2 Production


Copyright (c) 1982, 2025, Oracle.  All rights reserved.


SQL> conn hr@localhost/freepdb1

パスワード (**********?) ******

接続しました.

SQL> 


以降の作業は、先ほど作り直したFREEPDB1_SCで実施した作業と同じです。

project deploy -file artifact/HrManager-1.0.0.zip
project deploy -file artifact/HrManager-2.0.0.zip
desc employees

最終的に表EMPLOYEESに列RESIGNATION_REASON_IDなどが追加され、表RESIGNATION_REASONSにマスター・データが投入されます。

SQL> project deploy -file artifact/HrManager-1.0.0.zip

移行を開始しています...

Installing/updating schemas

--Starting Liquibase at 2025-09-10T17:40:15.129223 using Java 21.0.8 (version 4.30.0 #0 built at 2025-04-01 10:24+0000)


Produced logfile: sqlcl-lb-1757493615036.log


操作が正常に完了しました。

移行が完了しました

SQL> project deploy -file artifact/HrManager-2.0.0.zip

移行を開始しています...

Running Changeset: Ticket-1-Leave/hr/tables/employees.sql::1757492639727::HR

Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。

Running Changeset: Ticket-1-Leave/hr/tables/resignation_reasons.sql::1757492639502::HR

Table HR.RESIGNATION_REASONSは作成されました。



Table HR.RESIGNATION_REASONSが変更されました。



Table HR.RESIGNATION_REASONSが変更されました。



Table HR.RESIGNATION_REASONSが変更されました。

Running Changeset: Ticket-1-Leave/hr/comments/employees.sql::1757492639519::hr

Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。

Running Changeset: Ticket-1-Leave/hr/comments/resignation_reasons.sql::1757492639486::hr

Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。

Running Changeset: Ticket-1-Leave/hr/ref_constraints/fk_emp_resignation_reason.sql::1757492639494::HR

Table HR.EMPLOYEESが変更されました。

Running Changeset: Ticket-1-Leave/_custom/resign-reasons.sql::1757492677000::SqlCl

1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



コミットが完了しました。

Liquibase: Update has been successful. Rows affected: 6

Installing/updating schemas

--Starting Liquibase at 2025-09-10T17:40:23.804830 using Java 21.0.8 (version 4.30.0 #0 built at 2025-04-01 10:24+0000)

Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。



Table HR.EMPLOYEESが変更されました。

Table HR.RESIGNATION_REASONSは作成されました。



Table HR.RESIGNATION_REASONSが変更されました。



Table HR.RESIGNATION_REASONSが変更されました。



Table HR.RESIGNATION_REASONSが変更されました。

Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。

Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。



Commentは作成されました。

Table HR.EMPLOYEESが変更されました。

1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



1行挿入しました。



コミットが完了しました。


UPDATE SUMMARY

Run:                          6

Previously run:              43

Filtered out:                 0

-------------------------------

Total change sets:           49



Produced logfile: sqlcl-lb-1757493623788.log


操作が正常に完了しました。

移行が完了しました

SQL> desc employees


名前                       Nullかどうか    タイプ             

________________________ ___________ _______________ 

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)       

RESIGNATION_DATE                     DATE            

IS_ACTIVE                            CHAR(1)         

RESIGNATION_REASON_ID                NUMBER(3)       

SQL> 


今回の記事は以上になります。