CREATE TABLE文やALTER文を自分で書かなくてよくなるので作業効率は上がります。しかし、本番環境はもちろんのこと、開発環境であってもスキーマの変更は他への影響が大きく、なかなか簡単には実施できません。
- Oracle Database 23ai Freeのデータベースを作成します。
- プラガブル・データベースFREEPDB1にサンプル・スキーマhuman resourcesをインストールします。
- FREEPDB1にサンプル・スキーマがインストールされた状態で、SQLclのプロジェクトを初期化します。
- FREEPDB1のスナップショット・クローンとしてFREEPDB1_SCを作成します。
- FREEPDB1_SCのスキーマを生成AIを使いながら更新します。
- SQLclのprojectコマンドを実行して、スキーマの更新をアーティファクトにします。
- アーティファクトをFREEPDB1にデプロイします。
データベースの作成
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のインストール
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 %
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
sql system@localhost/freepdb1
@hr_install
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サーバーの接続情報をデフォルトの保存先から分離します。
mydb % mkdir .dbtools
mydb %
#!/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/*
ソース・データベースの準備
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>
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>
project init -name HrManager -schemas HR
SQL> project init -name HrManager -schemas HR
------------------------
プロジェクトの詳細
------------------------
プロジェクト名: HrManager
スキーマ: HR
ディレクトリ: /Users/____________/Documents/mydb
接続名:
プロジェクトのルート: mydb
プロジェクトが正常に作成されました
SQL>
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>
!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>
!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'),
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>
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>
ステージを実行します。
SQL> project stage
ステージは「比較」です:
旧ブランチ refs/heads/main
新規ブランチ refs/heads/Base-Release
ステージの処理が完了しました。変更を確認してリポジトリにコミットしてください
Untracked files:
dist/releases
.dbtools
db-sample-schemas-23.3
dist/utils
SQL>
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>
project release -version 1.0.0
SQL> project release -version 1.0.0
プロセスが正常に完了しました
SQL>
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>
!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 "."
上記の変更をコミットし、アーティファクトを生成します。
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 % podman exec -it mydb bash
bash-4.4$
archive log list
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>
show parameter clonedb
SQL> show parameter clonedb
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
clonedb boolean FALSE
clonedb_dir string
SQL>
clonedbをtrueに変更します。スコープは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>
以上でスナップショット・クローンを作成できるようになりました。
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として作成します。通常の利用ができるように読み書き可能でオープンします。
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 % ./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>
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"
]
}
}
}
「スキーマHRの表EMPLOYEESに、退職に関する情報を追加して。」
「退職理由はマスター表を作成して定型の理由を設定し、それを参照するようにしてください。」
-- ====================================================================
-- 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;
-- ====================================================================
-- スクリプト終了
-- ====================================================================
スキーマ更新文のアーティファクトの作成
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>
SQL> !git branch
Base-Release
* main
SQL> !git checkout -b Ticket-1-Leave
Switched to a new branch 'Ticket-1-Leave'
SQL>
変更されたスキーマをエクポートします。
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>
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>
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>
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>
ファイルが作成されました:というメッセージに続いて、実際に作成されたファイルが表示されています。
作成されたファイルに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;
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>
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>
SQL> project release -version 2.0.0
プロセスが正常に完了しました
SQL>
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>
!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>
SQL> project gen-artifact
Your artifact has been generated HrManager-2.0.0.zip
SQL>
アーティファクトのデプロイ
podman exec -it mydb bash
mydb % podman exec -it mydb bash
bash-4.4$
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を抜けます。
./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はありません。
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>
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をデプロイします。
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>
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>
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>
podman exec -it mydb bash
mydb % podman exec -it mydb bash
bash-4.4$
スナップショット・クローンFREEPDB1_SCを削除し、プラガブル・データベースFREEPDB1を通常の読み書き可能でオープンします。
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;
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>
!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>
./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
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>