1. はじめに
Db2ではパーティション表を使用することで、
ひとつの表を複数の区分に分割して、大規模な表の管理を容易にしたり、表データをロールイン・ロールアウトしたり、照会処理を効率化することができます。
パーティション表の作成方法については、以下リンク先の記事をご参照ください。
・Qiita:【備忘録】Db2 パーティション表 作成手順 まとめ
https://qiita.com/Haruka-Ogawa/items/b605021f01b8edb75e83
パーティション表の表データのロールイン・ロールアウトは、
デタッチ・アタッチ 操作で行います。
今回は Db2 パーティション表における デタッチ・アタッチ 操作方法について まとめます。
2. 準備
パーティション表のデタッチ・アタッチ操作をするにあたって、
Db2環境 と 必要なデータベース・オブジェクトを 準備します。
2-1. Db2環境 準備
Db2環境を準備します。
バージョンは v11.5 を使用します。
Db2の導入方法については、以下リンク先の記事に記載しています。
・Qiita: 【備忘録】Db2 インストール手順まとめ(Linux)
https://qiita.com/Haruka-Ogawa/items/9576399209b32f3016ea
・Qiita: 【備忘録】Docker版 Db2環境 取得手順
https://qiita.com/Haruka-Ogawa/items/0a4696ded4fa40e5e983
ここでは Dockerで用意したDb2環境を使用します。
2-2. オブジェクト作成
必要なデータベース オブジェクトを作成します。
① データベース作成
データベース SAMPDB を作成します。
実行例は以下の通りです。
$ db2 create db SAMPDB
DB20000I The CREATE DATABASE command completed successfully.
② 表スペース作成
まずは 作成したデータベース SAMPDB に接続します。
実行例は以下の通りです。
$ db2 connect to SAMPDB
Database Connection Information
Database server = DB2/LINUXX8664 11.5.5.0
SQL authorization ID = DB2INST1
Local database alias = SAMPDB
表スペース TS1, TS2, TS3, TS4 作成します。
実行例は以下の通りです。
$ db2 "CREATE TABLESPACE TS1"
DB20000I The SQL command completed successfully.
$ db2 "CREATE TABLESPACE TS2"
DB20000I The SQL command completed successfully.
$ db2 "CREATE TABLESPACE TS3"
DB20000I The SQL command completed successfully.
$ db2 "CREATE TABLESPACE TS4"
DB20000I The SQL command completed successfully.
・IBM Docs:CREATE TABLESPACE ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-create-tablespace
3. デタッチ
3-1. 概要
パーティション表では、
デタッチによって、データが古くなったなどで不要になった パーティションを指定して、高速に切り離すことができます。
次項3-2 では、
DATE型の列 COL2を パーティション・キーとして 2020-01-01~2020-12-31 の1年間を 3ヶ月ごとに分割し、
4つのパーティションを持つ パーティション表 TBL1 から、
2020-01-01~2020-03-31 を含むパーティション(PART0)をデタッチしてみます。
図に示すと、以下の通りになります。
・IBM Docs:データ・パーティションのデタッチ
https://www.ibm.com/docs/ja/db2/11.5?topic=ranges-detaching-data-partitions
3-2. 操作
① パーティション表 準備
CREATE TABLEコマンドで、パーティション表 TBL1 を作成します。
コマンドは以下の通りです。
CREATE TABLE TBL1(COL1 INT, COL2 DATE)
IN TS1, TS2, TS3, TS4
PARTITION BY RANGE(COL2)
( STARTING '2020-01-01'
ENDING '2020-03-31',
ENDING '2020-06-30',
ENDING '2020-09-30',
ENDING '2020-12-31'
)
実行例は以下の通りです。
$ db2 "
> CREATE TABLE TBL1(COL1 INT, COL2 DATE)
> IN TS1, TS2, TS3, TS4
> PARTITION BY RANGE(COL2)
> ( STARTING '2020-01-01'
> ENDING '2020-03-31',
> ENDING '2020-06-30',
> ENDING '2020-09-30',
> ENDING '2020-12-31'
> )
> "
DB20000I The SQL command completed successfully.
・IBM Docs:CREATE TABLE ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-create-table
また、INSERTコマンドで 値 (1,’2020-01-01’),(2,’2020-04-01’),(3,’2020-07-01’),(4,’2020-10-01’)を 挿入します。
コマンドは以下の通りです。
INSERT INTO TBL1 VALUES(1,'2020-01-01'),(2,'2020-04-01'),(3,'2020-07-01'),(4,'2020-10-01')
実行例は以下の通りです。
$ db2 "INSERT INTO TBL1 VALUES(1,'2020-01-01'),(2,'2020-04-01'),(3,'2020-07-01'),(4,'2020-10-01')"
DB20000I The SQL command completed successfully.
・IBM Docs:INSERT ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-insert
パーティション表TBL1の中身を確認すると、
値 (1,’2020-01-01’),(2,’2020-04-01’),(3,’2020-07-01’),(4,’2020-10-01’) が挿入されたことがわかります。
$ db2 "SELECT * FROM TBL1"
COL1 COL2
----------- ----------
1 01/01/2020
2 04/01/2020
3 07/01/2020
4 10/01/2020
4 record(s) selected.
② デタッチするパーティション確認
DESCRIBE コマンドで、デタッチするパーティションを確認します。
コマンドは以下の通りです。
DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
実行例は以下の通りです。
$ db2 DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
PartitionId PartitionName TableSpId PartObjId IndexTblSpId LongTblSpId AccessMode
Status
----------- ------------------------------- ----------- ----------- ------------ ----------- - ------
0 PART0 3 4 3 3 F
1 PART1 4 4 4 4 F
2 PART2 5 4 5 5 F
3 PART3 6 4 6 6 F
4 record(s) selected.
PartitionId Inclusive (y/n) Inclusive (y/n)
Low Value High Value
----------- - ------------------------------- - -------------------------------
0 Y '2020-01-01' Y '2020-03-31'
1 N '2020-03-31' Y '2020-06-30'
2 N '2020-06-30' Y '2020-09-30'
3 N '2020-09-30' Y '2020-12-31'
4 record(s) selected.
今回は パーティション表 TBL1の パーティションPART0 をデタッチします。
・IBM Docs:DESCRIBE コマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-describe
③ デタッチ
ALTER TABLEコマンドで、
パーティション表TBL1の パーティションPART0 をデタッチします。
またデタッチしたパーティションの宛先として、テーブルTBL1_EXを作成します。
コマンドは以下の通りです。
ALTER TABLE TBL1 DETACH PARTITION PART0 INTO TBL1_EX
実行例は以下の通りです。
$ db2 "ALTER TABLE TBL1 DETACH PARTITION PART0 INTO TBL1_EX"
DB20000I The SQL command completed successfully.
・IBM Docs:ALTER TABLE ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-alter-table
④ 確認
テーブル一覧を確認すると、テーブルTBL1_EXが作成されていることがわかります。
$ db2 list tables
Table/View Schema Type Creation time
------------------------------- --------------- ----- --------------------------
TBL1 DB2INST1 T 2021-04-15-09.22.02.437327
TBL1_EX DB2INST1 T 2021-04-15-09.56.52.955792
2 record(s) selected.
- デタッチした表(TBL1)
DESCRIBE コマンドで、デタッチした後のパーティション表 TBL1 を確認します。
コマンドは以下の通りです。
DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
実行例は以下の通りです。
$ db2 DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
PartitionId PartitionName TableSpId PartObjId IndexTblSpId LongTblSpId AccessMode
Status
----------- ------------------------------- ----------- ----------- ------------ ----------- - ------
1 PART1 4 4 4 4 F
2 PART2 5 4 5 5 F
3 PART3 6 4 6 6 F
3 record(s) selected.
PartitionId Inclusive (y/n) Inclusive (y/n)
Low Value High Value
----------- - ------------------------------- - -------------------------------
1 N '2020-03-31' Y '2020-06-30'
2 N '2020-06-30' Y '2020-09-30'
3 N '2020-09-30' Y '2020-12-31'
3 record(s) selected.
デタッチされたことによって、
パーティション PART0 が表示されていません。
また、AccessMode Statusが、'F' であることから、パーティション表TBL1へのパーティション にフル・アクセス可能であることがわかります。
・IBM Docs:DESCRIBE コマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-describe
パーティション表TBL1 の中身を確認します。
$ db2 "SELECT * FROM TBL1"
COL1 COL2
----------- ----------
2 04/01/2020
3 07/01/2020
4 10/01/2020
3 record(s) selected.
値(1, ’01/01/2020’)がなく、
2020-01-01~2020-03-31 を含むパーティション(PART0)がデタッチされたことがわかります。
- ターゲット表(TBL1_EX)
DESCRIBE コマンドで、デタッチ時 作成した ターゲット表 TBL1_EX を確認します。
$ db2 "SELECT * FROM TBL1_EX"
COL1 COL2
----------- ----------
1 01/01/2020
1 record(s) selected.
パーティション表 TBL1 のパーティション PART0 が、
テーブル TBL1_EX へデタッチされたことがわかりました。
4. アタッチ
4-1. 概要
パーティション表では、
アタッチ操作によって、新しいパーティションを テーブルに 高速に取り付けることができます。
次項目4-2では、
DATE型の列 COL2を パーティション・キーとして 2020-01-01~2020-12-31 の1年間を 3ヶ月ごとに分割し、
4つのパーティションを持つ パーティション表 TBL1 に、
2021-01-01~2021-03-31 を含む新規パーティションをアタッチしてみます。
図に示すと、以下の通りになります。
・IBM Docs:データ・パーティションのアタッチ
https://www.ibm.com/docs/ja/db2/11.5?topic=ranges-attaching-data-partitions
4-2. 操作
① パーティション表 準備
CREATE TABLEコマンドで、パーティション表 TBL1 を作成します。
コマンドは以下の通りです。
CREATE TABLE TBL1(COL1 INT, COL2 DATE)
IN TS1, TS2, TS3, TS4
PARTITION BY RANGE(COL2)
( STARTING '2020-01-01'
ENDING '2020-03-31',
ENDING '2020-06-30',
ENDING '2020-09-30',
ENDING '2020-12-31'
)
実行例は以下の通りです。
$ db2 "
> CREATE TABLE TBL1(COL1 INT, COL2 DATE)
> IN TS1, TS2, TS3, TS4
> PARTITION BY RANGE(COL2)
> ( STARTING '2020-01-01'
> ENDING '2020-03-31',
> ENDING '2020-06-30',
> ENDING '2020-09-30',
> ENDING '2020-12-31'
> )
> "
DB20000I The SQL command completed successfully.
・IBM Docs:CREATE TABLE ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-create-table
また、INSERTコマンドで 値 (1,’2020-01-01’),(2,’2020-04-01’),(3,’2020-07-01’),(4,’2020-10-01’)を 挿入します。
コマンドは以下の通りです。
INSERT INTO TBL1 VALUES(1,'2020-01-01'),(2,'2020-04-01'),(3,'2020-07-01'),(4,'2020-10-01')
実行例は以下の通りです。
$ db2 "INSERT INTO TBL1 VALUES(1,'2020-01-01'),(2,'2020-04-01'),(3,'2020-07-01'),(4,'2020-10-01')"
DB20000I The SQL command completed successfully.
・IBM Docs:INSERT ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-insert
パーティション表TBL1の中身を確認すると、
値 (1,’2020-01-01’),(2,’2020-04-01’),(3,’2020-07-01’),(4,’2020-10-01’) が挿入されたことがわかります。
$ db2 "SELECT * FROM TBL1"
COL1 COL2
----------- ----------
1 01/01/2020
2 04/01/2020
3 07/01/2020
4 10/01/2020
4 record(s) selected.
② アタッチする表 準備
CREATE TABLEコマンドで、アタッチするテーブルTBL1_NEWを作成します。
また、INSERTコマンドで 作成した表TBL1_NEWに データ(1, '2021-01-01’)を挿入します。
コマンドは以下の通りです。
CREATE TABLE TBL1_NEW(COL1 INT, COL2 DATE) IN TS5
INSERT INTO TBL1_NEW VALUES(1, '2021-01-01')
実行例は以下の通りです。
$ db2 "CREATE TABLE TBL1_NEW(COL1 INT, COL2 DATE) IN TS5"
DB20000I The SQL command completed successfully.
$ db2 "INSERT INTO TBL1_NEW VALUES(5, '2021-01-01')"
DB20000I The SQL command completed successfully.
作成した テーブルTBL1_NEWの中身を確認すると、以下の通りです。
$ db2 "SELECT * FROM TBL1_NEW"
COL1 COL2
----------- ----------
5 01/01/2021
1 record(s) selected.
・IBM Docs:CREATE TABLE ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-create-table
・IBM Docs:INSERT ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-insert
③ アタッチ
ALTER TABLEコマンドで、
パーティション表TBL1に 表TBL1_NEW をアタッチします。
また アタッチしたパーティションの範囲(開始値・終了値)を、’2021-01-01’~*’2021-03-31’*に設定します。
コマンドは以下の通りです。
ALTER TABLE TBL1 ATTACH PARTITION STARTING ('2021-01-01') ENDING('2021-03-31') FROM TBL1_NEW
実行例は以下の通りです。
$ db2 "ALTER TABLE TBL1 ATTACH PARTITION STARTING ('2021-01-01') ENDING('2021-03-31') FROM TBL1_NEW"
SQL3601W The statement caused one or more tables to automatically be placed
in the Set Integrity Pending state. SQLSTATE=01586
SQLメッセージ SQL3601W が返されており、
アタッチによって、テーブルが SET INTEGRITY ペンディング状態になったことがわかります。
ペンディングを解除するために、この後 SET INTEGRITY コマンドを実行します。
・IBM Docs:ALTER TABLE ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-alter-table
・IBM Docs:SQL3500 - SQL3749
https://www.ibm.com/docs/ja/db2/11.5?topic=SSEPGG_11.5.0/com.ibm.db2.luw.messages.sql.doc/sql3500-sql3749.html#sql3601w
④ 確認
DESCRIBEコマンドで、アタッチした表 TBL1を確認します。
コマンドは以下の通りです。
DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
実行例は以下の通りです。
$ db2 DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
PartitionId PartitionName TableSpId PartObjId IndexTblSpId LongTblSpId AccessMode
Status
----------- ------------------------------- ----------- ----------- ------------ ----------- - ------
0 PART0 3 4 3 3 F
1 PART1 4 4 4 4 F
2 PART2 5 4 5 5 F
3 PART3 6 4 6 6 F
4 PART4 7 4 7 7 N A
5 record(s) selected.
PartitionId Inclusive (y/n) Inclusive (y/n)
Low Value High Value
----------- - ------------------------------- - -------------------------------
0 Y '2020-01-01' Y '2020-03-31'
1 N '2020-03-31' Y '2020-06-30'
2 N '2020-06-30' Y '2020-09-30'
3 N '2020-09-30' Y '2020-12-31'
4 Y '2021-01-01' Y '2021-03-31'
5 record(s) selected.
新たに アタッチした パーティション PART4が 表示されています。
また、パーティション PART4の AccessMode Statusが 'N A' であることから、
アタッチによって、アクセス不可になっていることがわかります。
・IBM Docs:DESCRIBE コマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-describe
・IBM Docs:SYSCAT.DATAPARTITIONS カタログ・ビュー
https://www.ibm.com/docs/ja/db2/11.5?topic=views-syscatdatapartitions
⑤ ペンディング 解除
SET INTEGRITYコマンドで 新しくアタッチしたパーティションの値の範囲を検査し、
表TBL1のペンディングを解除します。
コマンドは以下の通りです。
SET INTEGRITY FOR TBL1 IMMEDIATE CHECKED
実行例は以下の通りです。
$ db2 SET INTEGRITY FOR TBL1 IMMEDIATE CHECKED
DB20000I The SQL command completed successfully.
・IBM Docs:SET INTEGRITY ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-set-integrity
⑥ 確認
DESCRIBEコマンドで、アタッチした表 TBL1を確認します。
コマンドは以下の通りです。
DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
実行例は以下の通りです。
$ db2 DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
PartitionId PartitionName TableSpId PartObjId IndexTblSpId LongTblSpId AccessMode
Status
----------- ------------------------------- ----------- ----------- ------------ ----------- - ------
0 PART0 3 4 3 3 F
1 PART1 4 4 4 4 F
2 PART2 5 4 5 5 F
3 PART3 6 4 6 6 F
4 PART4 7 4 7 7 F
5 record(s) selected.
PartitionId Inclusive (y/n) Inclusive (y/n)
Low Value High Value
----------- - ------------------------------- - -------------------------------
0 Y '2020-01-01' Y '2020-03-31'
1 N '2020-03-31' Y '2020-06-30'
2 N '2020-06-30' Y '2020-09-30'
3 N '2020-09-30' Y '2020-12-31'
4 Y '2021-01-01' Y '2021-03-31'
5 record(s) selected.
アタッチしたパーティション PART4の AccessMode Statusが、'F' になっていることから、
ペンディングが解除され、アクセス可能になったことがわかります。
・IBM Docs:DESCRIBE コマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-describe
パーティション表TBL1 の中身を確認します。
$ db2 "SELECT * FROM TBL1"
COL1 COL2
----------- ----------
1 01/01/2020
2 04/01/2020
3 07/01/2020
4 10/01/2020
5 01/01/2021
5 record(s) selected.
値 (5,’2021-01-01’)があることから、
無事 アタッチされたことがわかりました。
5. パーティション追加
5-1. 概要
パーティション表では、
新しい空のパーティションを テーブルに追加することができます。
次項目 5-2では、
DATE型の列 COL2を パーティション・キーとして 2020-01-01~2020-12-31 の1年間を 3ヶ月ごとに分割し、
4つのパーティションを持つ パーティション表 TBL1 に、
2021-01-01~2021-03-31 を範囲とする 空のパーティションを追加してみます。
図に示すと、以下の通りになります。
・IBM Docs:パーティション表へのデータ・パーティションの追加
https://www.ibm.com/docs/ja/db2/11.5?topic=ranges-adding-data-partitions
5-2. 操作
① パーティション表 準備
CREATE TABLEコマンドで、パーティション表 TBL1 を作成します。
コマンドは以下の通りです。
CREATE TABLE TBL1(COL1 INT, COL2 DATE)
IN TS1, TS2, TS3, TS4
PARTITION BY RANGE(COL2)
( STARTING '2020-01-01'
ENDING '2020-03-31',
ENDING '2020-06-30',
ENDING '2020-09-30',
ENDING '2020-12-31'
)
実行例は以下の通りです。
$ db2 "
> CREATE TABLE TBL1(COL1 INT, COL2 DATE)
> IN TS1, TS2, TS3, TS4
> PARTITION BY RANGE(COL2)
> ( STARTING '2020-01-01'
> ENDING '2020-03-31',
> ENDING '2020-06-30',
> ENDING '2020-09-30',
> ENDING '2020-12-31'
> )
> "
DB20000I The SQL command completed successfully.
パーティション表TBL1が作成できました。
・IBM Docs:CREATE TABLE ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-create-table
INSERTコマンドで、試しにパーティション表TBL1に 値(1, ’2021-01-01’)を挿入すると、
パーティションの範囲外のため 挿入ができないことがわかります。
$ db2 "INSERT INTO TBL1 VALUES(1, '2021-01-01')"
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0327N The row cannot be inserted into table "DB2INST1.TBL1" because it is
outside the bounds of the defined data partition ranges. SQLSTATE=22525
・IBM Docs:DB20000 - DB29999
https://www.ibm.com/docs/ja/db2/11.5?topic=SSEPGG_11.5.0/com.ibm.db2.luw.messages.db2.doc/db20000-db29999.html
・IBM Docs:SQL0250 - SQL0499
https://www.ibm.com/docs/ja/db2/11.5?topic=SSEPGG_11.5.0/com.ibm.db2.luw.messages.sql.doc/sql0250-sql0499.html
② 確認
DESCRIBEコマンドで、作成した表 TBL1を確認します。
コマンドは以下の通りです。
DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
実行例は以下の通りです。
$ db2 DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
PartitionId PartitionName TableSpId PartObjId IndexTblSpId LongTblSpId AccessMode
Status
----------- ------------------------------- ----------- ----------- ------------ ----------- - ------
0 PART0 3 4 3 3 F
1 PART1 4 4 4 4 F
2 PART2 5 4 5 5 F
3 PART3 6 4 6 6 F
4 record(s) selected.
PartitionId Inclusive (y/n) Inclusive (y/n)
Low Value High Value
----------- - ------------------------------- - -------------------------------
0 Y '2020-01-01' Y '2020-03-31'
1 N '2020-03-31' Y '2020-06-30'
2 N '2020-06-30' Y '2020-09-30'
3 N '2020-09-30' Y '2020-12-31'
4 record(s) selected.
・IBM Docs:DESCRIBE コマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-describe
③ パーティション追加
ALTER TABLEコマンドで、範囲が2021-01-01~2021-03-31の パーティションを追加します。
コマンドは以下の通りです。
ALTER TABLE TBL1 ADD PARTITION
STARTING '2021-01-01'
ENDING '2021-03-31' IN TS5
実行例は以下の通りです。
$ db2 "
> ALTER TABLE TBL1 ADD PARTITION
> STARTING '2021-01-01'
> ENDING '2021-03-31' IN TS5
> "
DB20000I The SQL command completed successfully.
パーティション追加ができました。
・IBM Docs:ALTER TABLE ステートメント
https://www.ibm.com/docs/ja/db2/11.5?topic=statements-alter-table
④ 確認
DESCRIBEコマンドで、パーティションを追加した 表 TBL1を確認します。
コマンドは以下の通りです。
DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
実行例は以下の通りです。
$ db2 DESCRIBE DATA PARTITIONS FOR TABLE TBL1 SHOW DETAIL
PartitionId PartitionName TableSpId PartObjId IndexTblSpId LongTblSpId AccessMode
Status
----------- ------------------------------- ----------- ----------- ------------ ----------- - ------
0 PART0 3 4 3 3 F
1 PART1 4 4 4 4 F
2 PART2 5 4 5 5 F
3 PART3 6 4 6 6 F
4 PART4 7 4 7 7 F
5 record(s) selected.
PartitionId Inclusive (y/n) Inclusive (y/n)
Low Value High Value
----------- - ------------------------------- - -------------------------------
0 Y '2020-01-01' Y '2020-03-31'
1 N '2020-03-31' Y '2020-06-30'
2 N '2020-06-30' Y '2020-09-30'
3 N '2020-09-30' Y '2020-12-31'
4 Y '2021-01-01' Y '2021-03-31'
5 record(s) selected.
2021-01-01~2021-03-31を範囲とする パーティション PART4 が追加されていることがわかります。
・IBM Docs:DESCRIBE コマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-describe
試しに、INSERTコマンドで、パーティション表TBL1に 値(1, ’2021-01-01’)を挿入すると、
パーティションの範囲内のため 挿入ができることがわかります。
$ db2 "INSERT INTO TBL1 VALUES(1, '2021-01-01')"
DB20000I The SQL command completed successfully.
$ db2 "SELECT * FROM TBL1"
COL1 COL2
----------- ----------
1 01/01/2021
1 record(s) selected.
6. おわりに
今回は、パーティション表における デタッチ・アタッチ、パーティション追加 操作を確認しました。
パーティション表の デタッチ・アタッチの処理では、データの移動が発生しないので、
高速にデータを 追加・削除したい時に 活用することができます。
参考情報
・IBM Docs:パーティション表
https://www.ibm.com/docs/ja/db2/11.5?topic=schemes-partitioned-tables
・[ThinkIT] 第2回:大規模データベースでも威力発揮!
https://thinkit.co.jp/free/article/0707/19/2/