付録C.9 システム表の検索
SELECT文でシステム表を検索できます。システム表を検索することで,コスト情報およびチャンクの情報を確認できます。システム表の認可識別子はMASTERです。
なお,システム表を検索したら,すぐにCOMMIT文を実行してトランザクションを終了させてください。COMMIT文を実行しないと,システム表の排他が解放されません。ただし,システム表を検索したあとで,adbsqlコマンドを終了する場合,システム表の排他は解放されるため,COMMIT文の実行は不要です。
また,システム表を検索するときに,REPEATABLE READのトランザクションからシステム表を検索すると,更新前の古いシステム表の情報を参照するおそれがあります。そのため,次のどちらかの方法で検索してください。
-
READ COMMITTEDのトランザクションからシステム表を検索する
adbsqlサブコマンドの#SET TRAN_ISOLVでREAD_COMMITTEDを指定したあとで,システム表を検索してください。
-
検索の直前にCOMMIT文を実行する
REPEATABLE READのトランザクションからシステム表を検索する場合は,COMMIT文を実行したあとで,システム表を検索してください。
システム表を検索するHADBユーザがDBA権限を持っているかどうかによって,検索できる情報が異なります。詳細については,「付録C.1 システム表の概要」の「(3) HADBユーザが参照できるシステム表の範囲」を参照してください。
システム表を検索するSELECT文の指定例を次に示します。
- 〈この項の構成〉
(1) コスト情報を収集した全実表の表名と収集日時を調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME","COLLECT_TIME" FROM "MASTER"."STATUS_TABLES"
(2) コスト情報を収集した全インデクスのインデクス名と収集日時を調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","INDEX_NAME","COLLECT_TIME" FROM "MASTER"."STATUS_INDEXES"
(3) 表名から表内の全チャンクの情報を調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID","CHUNK_COMMENT","CHUNK_STATUS","CREATE_TIME","SWAP_TIME" FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(4) チャンクIDからチャンクの情報を調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT * FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CHUNK_ID"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を,3番目の入力要求にはチャンクIDを入力してください。
(5) 指定した期間に作成されたチャンクを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT * FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CREATE_TIME" BETWEEN ? AND ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を,3番目の入力要求には期間の開始日時を,4番目の入力要求には期間の終了日時を入力してください。
上記のSELECT文では,次のチャンクが検索対象となります。
-
指定した期間に作成されたチャンク
-
バックグラウンドインポートで待機状態のチャンクとして作成されたあとで,指定した期間にadbchgchunkstatusコマンドでチャンクの状態を通常状態に変更されたチャンク
ただし,次のチャンクは検索対象外です。
-
指定した期間にバックグラウンドインポートで待機状態のチャンクとして作成されたチャンク
(6) チャンクの作成日時から最新のチャンクIDを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CREATE_TIME"=(SELECT MAX("CREATE_TIME") FROM "MASTER"."STATUS_CHUNKS" WHERE TC."TABLE_SCHEMA"="TABLE_SCHEMA" AND TC."TABLE_NAME"="TABLE_NAME")
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
上記のSELECT文では,次の日時のうち,最も新しい日時のチャンクが検索対象となります。
-
チャンクが作成された日時
-
バックグラウンドインポートで待機状態のチャンクとして作成されたあとで,adbchgchunkstatusコマンドで通常状態のチャンクに変更されたときの日時
ただし,次のチャンクは検索対象外です。
-
過去に通常状態になったことがない待機状態のチャンク
(7) チャンクの作成日時から最古のチャンクIDを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CREATE_TIME"=(SELECT MIN("CREATE_TIME") FROM "MASTER"."STATUS_CHUNKS" WHERE TC."TABLE_SCHEMA"="TABLE_SCHEMA" AND TC."TABLE_NAME"="TABLE_NAME")
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
上記のSELECT文では,次の日時のうち,最も古い日時のチャンクが検索対象となります。
-
チャンクが作成された日時
-
バックグラウンドインポートで待機状態のチャンクとして作成されたあとで,adbchgchunkstatusコマンドで通常状態のチャンクに変更されたときの日時
ただし,次のチャンクは検索対象外です。
-
過去に通常状態になったことがない待機状態のチャンク
(8) 指定した期間内に作成されたチャンクやカレントチャンクから切り替わったチャンクのチャンクIDを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND (("CREATE_TIME" BETWEEN ? AND ?) OR ("SWAP_TIME" BETWEEN ? AND ?))
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を,3番目の入力要求にはチャンクの作成日時の開始日時を,4番目の入力要求にはチャンクの作成日時の終了日時を,5番目の入力要求にはカレントチャンクが切り替わった日時の開始日時を,6番目の入力要求にはカレントチャンクが切り替わった日時の終了日時を入力してください。
上記のSELECT文では,次のチャンクが対象となります。
-
指定した期間内に作成されたチャンク
-
指定した期間内にカレントチャンクから切り替わったチャンク
-
バックグラウンドインポートで待機状態のチャンクとして作成されたあとで,指定した期間内にadbchgchunkstatusコマンドでチャンクの状態が通常状態に変更されたチャンク
ただし,次のチャンクは検索対象外です。
-
過去に通常状態になったことがない待機状態のチャンク
(9) 指定した日時にデータが格納された可能性があるチャンクを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CREATE_TIME" <= ? AND ("SWAP_TIME" IS NULL OR "SWAP_TIME" >= ?)
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を,3番目と4番目の入力要求には指定の日時を入力してください。
上記のSELECT文では,次のチャンクが対象となります。
-
指定した日時以前に作成されたカレントチャンク
-
指定した日時以前に作成されて,かつ指定した日時以降にカレントチャンクから切り替わったチャンク
-
バックグラウンドインポートで待機状態のチャンクとして作成されたあとで,指定した日時にadbchgchunkstatusコマンドでチャンクの状態が通常状態に変更されたチャンク
ただし,次のチャンクは検索対象外です。
-
過去に通常状態になったことがない待機状態のチャンク
(10) 作成されたチャンクの数を調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT COUNT(*) FROM MASTER.STATUS_CHUNKS WHERE "SCHEMA_NAME" = ? AND "TABLE_NAME" = ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(11) 指定したコメントが含まれているチャンクを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID","CHUNK_COMMENT" FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"= ? AND "TABLE_NAME"= ? AND "CHUNK_COMMENT" LIKE ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を,3番目の入力要求にはチャンクに指定したコメントを入力してください。
(12) 削除仕掛中のチャンクを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CHUNK_STATUS"='Pending Delete'
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(13) 通常状態のチャンクを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CHUNK_STATUS"='Normal'
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(14) 待機状態のチャンクを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CHUNK_STATUS"='Wait'
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(15) チャンクがアーカイブ状態かどうかを調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT "ARCHIVE_STATUS" FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CHUNK_ID"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を,3番目の入力要求にはチャンクIDを入力してください。
SELECT文の実行結果にArchiveが出力された場合は,チャンクがアーカイブ状態であることを意味しています。
(16) カレントチャンクの情報を調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT * FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CREATE_TIME" IS NOT NULL AND "SWAP_TIME" IS NULL
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(17) すべての同義語辞書に関する情報を調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT * FROM "MASTER"."STATUS_SYNONYM_DICTIONARIES"
- 検索結果の例
-
説明のない出力項目については,「付録C.6 STATUS_SYNONYM_DICTIONARIESの内容」で説明されているSTATUS_SYNONYM_DICTIONARIESの列情報の説明を参照してください。
上記の検索結果の表示形式は,実際に出力される表示形式とは異なるところがあります。
(18) 特定の同義語辞書に関する情報を調べる場合
次に示すSELECT文でシステム表を検索してください。
- 指定例
-
SELECT * FROM "MASTER"."STATUS_SYNONYM_DICTIONARIES" WHERE "SYNONYM_DICTIONARY_NAME"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。同義語辞書名を入力してください。
- 検索結果の例
-
説明のない出力項目については,「付録C.6 STATUS_SYNONYM_DICTIONARIESの内容」で説明されているSTATUS_SYNONYM_DICTIONARIESの列情報の説明を参照してください。
上記の検索結果の表示形式は,実際に出力される表示形式とは異なるところがあります。