^DATABASE データベース・ユーティリティ・メニュー

%SYSネームスペースでのみ動作します。

^DATABASEユーティリティは、データベース関連ユーティリティのメニュー画面です。

動作例

 USER>zn "%SYS"
 
%SYS>Do ^DATABASE
 
 1) Create a database
 2) Edit a database
 3) List databases
 4) Delete a database
 5) Mount a database
 6) Dismount a database
 7) Compact globals in a database
 8) Show free space for a database
 9) Show details for a database
10) Recreate a database
11) Manage database encryption
12) Return unused space for a database
 
Option?  // 1から12の数値を入力
 Option? と表示されたら、一覧で表示された項目の先頭の番号を入力してEnterを押します。
入力した数値に対応するユーティリティが呼び出されます。
各ユーティリティの説明は、以下のリンクから参照して下さい。

1Create a databaseデータベースの新規作成
2Edit a databaseデータベースの編集
3List databasesデータベース情報の表示
4Delete a databaseデータベースの削除
5Mount a database データベースのマウント
6Dismount a databaseデータベースのマウント解除
7Compact globals in a databaseグローバルの圧縮
8Show free space for a databaseデータベース空き容量の表示
9Show details for a databaseデータベース詳細の表示
10Recreate a databaseデータベースの再作成
11Manage database encryptionデータベース暗号化設定
12Return unused space for a database未使用領域の返還
13Compact freespace in a database未使用ブロックを末尾に集約
14Defragment globals in a databaseデータベースのフラグメントを解消する


Option? で何も入力せずにEnterを押した場合は、ユーティリティが終了します。

1). データベース新規作成

データベースを新規に作成します。
Option? 1
Database directory? /datastore/db4
    // データベースファイルを作成するファイルシステム上の場所を指定
Change default database properties? No => Yes    // 詳細な設定を行う場合はYes

1)* Directory: /datastore/db4
2)* Block size (bytes): 8192
3)* Mirror DB Name:
4)* Mirror Set Name:
5) Current Size (MB): 1
6) Max size (MB), 0=Unlimited: 0
7) Expansion size (MB), 0=Default: 0
8) Resource name: %DB_%DEFAULT
9) Preserve global attributes: No
10) Global journal state: Yes
11) New global collation: Cache standard
12) New global growth block: 50
13) New global pointer block: 16
14)* Read Only: No
15) Encrypted: No

Field number to change? 7    // 7 を指定してデータベース拡張サイズを設定する
Expansion size (MB), 0=Default? 0 => 32
   
// ここではLVMのPEsizeに合わせて32MBにしました

Field number to change? 12    // 12 を指定してグローバルデータの開始位置を設定する
New global growth block? 50 => 4000
    // ここではINTEGの結果のTotal Pointer blocksから(今後のデータ増加も見込んで)
    // 更に増やした値を設定しました


Field number to change?
    // 空入力で次に進む

Dataset name of this database in the configuration: DB4
    // このデータベースの名前を指定

Mount DB4 Required At Startup? No => No
    // このデータベースがマウントできなくてもCache'を起動させたいのでNo

Confirm creation of database in /datastore/db4 ? Yes => Yes
    // データベース作成を実行して良いならばYes

Formatting...
Database in /datastore/db4 created
Dataset DB4 added to the current configuration.

Database directory?
    // 空入力でメニューに戻る

指定されたディレクトリに既にCACHE.DATファイルがある場合は、次のような動きになります。
/tmp/CACHE.DATをTMPDBとして作成しています。
Option? 1
Database directory? /tmp
DB File CACHE.DAT already exists in this directory, use it? No => Y
Change default database properties? No =>
Dataset name of this database in the configuration: TMPDB
Mount TMPDB Required At Startup? No =>
Confirm creation of database in /tmp/? Yes =>
Dataset TMPDB added to the current configuration.
Database directory?
 

3). データベースの一覧表示

データベースを一覧表示します。
Option? 3
Database directories? ?     // ? を入力して使い方を表示

 1) /Cache/mgr/                 2) /Cache/mgr/cache/
 3) /Cache/mgr/cacheaudit/      4) /Cache/mgr/cachelib/
 5) /Cache/mgr/docbook/         6) /Cache/mgr/samples/
 7) /Cache/mgr/user/            8) /Cache/query/cli/
 9) /Cache/query/dic/          10) /Cache/query/tstb/
11) /Cache/query/wrk/          12) /tmp/ *Dismounted
13) /tmp/cachetemp/
(Multiple selections allowed: * for all, or list such as 1,4,7-10)

Database directories? *    // * を入力して全データベースを表示
Device:
Right margin: 80 =>


Directory                 MaxSize  Size   Status
/Cache/mgr/               無制限   170    マウント/RW
/Cache/mgr/cache/         無制限   11     マウント/RW
/Cache/mgr/cacheaudit/    無制限   1      マウント/RW
/Cache/mgr/cachelib/      無制限   450    マウント/R
/Cache/mgr/docbook/       無制限   138    マウント/RW
/Cache/mgr/samples/       無制限   114    マウント/RW
/Cache/mgr/user/          無制限   1      マウント/RW
/Cache/query/cli/         無制限   45     マウント/RW
/Cache/query/dic/         無制限   17     マウント/RW
/Cache/query/tstb/        無制限   11     マウント/RW
/Cache/query/wrk/         無制限   770    マウント/RW
/tmp/                     無制限   654    ディスマウントされました
/tmp/cachetemp/           無制限   31     マウント/RW

Database directories?

4). データベースの削除

データベースを削除します。
Option? 4
Database directory? /tmp
Directory /tmp/ is referenced in the configuration file by
Dataset: TMPDB
which will be removed as well.
Confirm deletion of database and CACHE.DAT file in directory /tmp/?
No => Y
Database in /tmp/ deleted
Dataset TMPDB removed from configuration.
Database directory?    // 空入力でメニューに戻る

5). データベースのマウント

データベースをマウントします。
Option? 5
Database directory to mount? /tmp

Databases Selected
------------------
/tmp/
Confirm mount of databases? Yes =>
Mount Read Only? No => Y        // 読み取り専用にするならY(es)
Database /tmp/ mounted.
Database directory to mount?    // 空入力でメニューに戻る

6). データベースのマウント解除

データベースのマウントを解除し、アンマウント状態にします。
Option? 6
Database directory to dismount? c:\intersystems\cache\mgr\comp\
    // データベースディレクトリを指定
Databases Selected
------------------
c:\intersystems\cache\mgr\comp\

Confirm dismount of databases? Yes => Yes
    // アンマウントの最終確認
Database c:\intersystems\cache\mgr\comp\ dismounted

Database directory to dismount?
    // 空入力でメニューに戻る

7). データベース内のグローバル圧縮

Option? 7
Database directories to compact? c:\intersystems\cache\mgr\comp\
    // データベースディレクトリを指定

Databases Selected
------------------
c:\intersystems\cache\mgr\comp\

All Globals? Yes => Yes
    // データベース内蔵グローバルを圧縮する場合はYes
How full do you want the database blocks? 90 =>
    // 圧縮時のブロック充填率を指定。デフォルト90%
Display compacted globals? No => Yes
    // 圧縮状況を出力するかどうか
Device:
Right margin: 80 =>
    // 空入力でターミナルに出力

Confirm compaction of databases? Yes => Yes
    // 本当に圧縮するかどうかの最終確認
                           Cache Database Compaction
                              Jan 29 2013  5:32 PM

Database c:\intersystems\cache\mgr\comp\
Global                   MB Processed   MB Compressed To    Completed
------                   ------------   ----------------    ---------
^ROUTINE                            0                  0      5:32 PM
^oddBIND                            0                  0      5:33 PM
^oddCOM                             0                  0      5:33 PM
   (中略)
^rMACSAVE                           0                  0      5:33 PM
^rMAP                               0                  0      5:33 PM
^rOBJ                               0                  0      5:33 PM
 
Database directories to compact?

// 空入力でメニューに戻る

10). データベースの再作成

データベースの再作成を行います。データベースのすべての情報は失われ、再作成前のサイズのデータベースファイルが作成されます。
この機能の使い道として何があるのかよく分かりません。
Option? 10
Database directory? c:\intersystems\cache\mgr\comp\
    // データベースディレクトリを指定
WARNING! Recreating the database will delete all the data in the database.
Confirm recreation of database in c:\intersystems\cache\mgr\comp\?
No => y
    // 再作成の最終確認
Deleting...
Formatting...
Database in c:\intersystems\cache\mgr\comp\ recreated.

Database directory?
    // 空入力でメニューに戻る

12). 未使用領域の返還

管理ポータルの未使用領域削除と同一の機能です。
Option? 12
Database directory? c:\intersystems\cache\mgr\comp\
    // データベースディレクトリを指定
Current size 1119MB

Specify a desired file size (in MB), or 0 to return all: 0
    // 目標サイズを指定。できるだけ小さくしたいので0を指定する
Returning space...
Database c:\intersystems\cache\mgr\comp\ file size is now 1119MB

Database directory?
    // 空入力でメニューに戻る

13). 未使用ブロックを末尾に集約

データベースの全ての未使用ブロックをCACHE.DATファイルの末尾に移動させます。
これを行った後に、12).未使用領域の返還を行うと、CACHE.DATファイルを小さくすることが出来ます。
Option? 13
Database directory? ?         // ? でデータベースの一覧表示

1) /Cache/database/qm/
2) /Cache/mgr/
3) /Cache/mgr/cache/
4) /Cache/mgr/cachetemp/
5) /Cache/mgr/user/

Database directory? 1 /Cache/database/qm/
Current Size: 410MB
Total freespace: 28MB
Freespace at end of file: 27MB

Target freespace at end of file, in MB (27-28): 28
Compacting freespace...
Database /Cache/database/qx/ returnable freespace: 27 MB

14). データベースのフラグメントを解消する

動作としては7).データベース内のグローバル圧縮13).未使用ブロックを末尾に集約を連続して行ったのと同じようなイメージになります。
これを行った後では、CACHE.DATのサイズが2倍弱に肥大化してしまうので、必ず12).未使用領域の返還を行って下さい。
Option? 14
Database directory? ?          // ? でデータベースの一覧表示

1) /Cache/database/qm/
2) /Cache/mgr/
3) /Cache/mgr/cache/
4) /Cache/mgr/cachetemp/
5) /Cache/mgr/user/

Database directory? 1 /Cache/database/qm/

There are 3164MB of data to be processed.

There are 220MB of freespace at the end of the database, which is
insufficient for defragmentation to operate.

You can continue, in which case the database may expand to accomodate up to
2944MB of additional space needed for defragmentation to operate.
Continue? Yes            // Yes または No を入力。Enter押しても画面はそのままなので、completeと表示されるまで待つ。
Defragmentation complete

その他

Update