付録B.22 ディクショナリ表の検索
SELECT文でディクショナリ表を検索できます。ディクショナリ表の認可識別子はMASTERです。
なお,ディクショナリ表を検索したら,すぐにCOMMIT文を実行してトランザクションを終了させてください。COMMIT文を実行しないと,ディクショナリ表の排他が解放されません。ただし,ディクショナリ表を検索したあとで,adbsqlコマンドを終了する場合,ディクショナリ表の排他は解放されるため,COMMIT文の実行は不要です。
また,ディクショナリ表を検索するHADBユーザがDBA権限を持っているかどうかによって,検索できる情報が異なります。詳細については,「付録B.1 ディクショナリ表の概要」の「(3) HADBユーザが参照できるディクショナリ表の範囲」を参照してください。
ディクショナリ表を検索するSELECT文の指定例を次に示します。
(1) 表IDから表の表名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME" FROM "MASTER"."SQL_TABLES" WHERE "TABLE_ID"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。表IDを入力してください。
(2) ローストア表の一覧を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA", "TABLE_NAME" FROM "MASTER"."SQL_TABLES" WHERE "STORAGE_FORMAT" = 'ROW'
(3) カラムストア表の一覧を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA", "TABLE_NAME" FROM "MASTER"."SQL_TABLES" WHERE "STORAGE_FORMAT" = 'COLUMN'
(4) インデクスIDからインデクスのインデクス名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_INDEXES" WHERE "INDEX_ID"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。インデクスIDを入力してください。
(5) インデクスIDからインデクスが定義された表の表名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME" FROM "MASTER"."SQL_INDEXES" WHERE "INDEX_ID"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。インデクスIDを入力してください。
(6) インデクスIDからインデクスが定義された列の列名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME","COLUMN_NAME" FROM "MASTER"."SQL_INDEX_COLINF" WHERE "INDEX_ID" = ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。インデクスIDを入力してください。
(7) 全レンジインデクスのインデクス名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_INDEXES" WHERE "INDEX_TYPE"='R'
(8) 表名から表に定義された全インデクス名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_INDEXES" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(9) 表名から表を使用する全ビュー表のビュー表名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "VIEW_SCHEMA","VIEW_NAME" FROM "MASTER"."SQL_VIEW_TABLE_USAGE" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(10) 表名から表が格納されているDBエリア名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "MASTER"."SQL_DBAREAS"."DBAREA_NAME" FROM "MASTER"."SQL_DBAREAS","MASTER"."SQL_DIV_TABLE" WHERE "MASTER"."SQL_DIV_TABLE"."TABLE_SCHEMA" = ? AND "MASTER"."SQL_DIV_TABLE"."TABLE_NAME" = ? AND "MASTER"."SQL_DBAREAS"."DBAREA_ID"="MASTER"."SQL_DIV_TABLE"."DBAREA_ID"
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(11) スキーマ名から定義された全表の表名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME","TABLE_TYPE" FROM "MASTER"."SQL_TABLES" WHERE "TABLE_SCHEMA"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。スキーマ名を入力してください。
なお,TABLE_TYPEが'R'の場合は実表を,'V'の場合はビュー表を意味しています。
(12) スキーマ名から定義された全インデクスのインデクス名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","INDEX_NAME","INDEX_TYPE" FROM "MASTER"."SQL_INDEXES" WHERE "TABLE_SCHEMA"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。スキーマ名を入力してください。
なお,INDEX_TYPEが'B'の場合はB-treeインデクスを,'T'の場合はテキストインデクスを,'R'の場合はレンジインデクスを意味しています。
(13) インデクス名からインデクスが格納されているDBエリア名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "MASTER"."SQL_DBAREAS"."DBAREA_NAME" FROM "MASTER"."SQL_DBAREAS","MASTER"."SQL_DIV_INDEX" WHERE "MASTER"."SQL_DIV_INDEX"."TABLE_SCHEMA"=? AND "MASTER"."SQL_DIV_INDEX"."INDEX_NAME"=? AND "MASTER"."SQL_DBAREAS"."DBAREA_ID"="MASTER"."SQL_DIV_INDEX"."DBAREA_ID"
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求にはインデクス識別子を入力してください。
(14) 全マルチチャンク表に作成されるチャンク数の最大値を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_NAME","N_CHUNK_RESERVED" FROM "MASTER"."SQL_TABLES" WHERE "IS_CHUNK" = 'Y' ORDER BY "TABLE_NAME"
(15) DBエリアに格納されている表の表名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME" FROM "MASTER"."SQL_DIV_TABLE" WHERE "DBAREA_ID"= (SELECT "DBAREA_ID" FROM "MASTER"."SQL_DBAREAS" WHERE "DBAREA_NAME"=?)
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。入力要求にはDBエリア名を入力してください。
(16) DBエリアに格納されているインデクスのインデクス名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_DIV_INDEX" WHERE "DBAREA_ID"= (SELECT "DBAREA_ID" FROM "MASTER"."SQL_DBAREAS" WHERE "DBAREA_NAME"=?)
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。入力要求にはDBエリア名を入力してください。
(17) ビュー表の更新可否を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "IS_UPDATABLE" FROM "MASTER"."SQL_VIEWS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求にはビュー表の表識別子を入力してください。
検索結果が'Y'の場合は,更新可能ビュー表であるため更新できます。'N'の場合は,読み取り専用ビュー表であるため更新できません。
(18) HADBユーザが持っているユーザ権限とスキーマ操作権限を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
なお,DBA権限を持っているHADBユーザは,すべてのHADBユーザが持っているユーザ権限情報,およびスキーマ操作権限情報を調べられます。DBA権限を持っていないHADBユーザは,自分(HADBサーバに接続中の認可識別子のHADBユーザ)が持っているユーザ権限情報,およびスキーマ操作権限情報を調べられます。
- 指定例
-
SELECT "DBA_PRIVILEGE","CONNECT_PRIVILEGE","SCHEMA_PRIVILEGE" FROM "MASTER"."SQL_USERS" WHERE "USER_NAME"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。入力要求には,HADBユーザの認可識別子を入力してください。
検索結果の各列の値が'Y'の場合は,対象のユーザ権限およびスキーマ操作権限情報を持っています。'N'の場合は,対象のユーザ権限およびスキーマ操作権限情報を持っていません。
(19) 主キーに対応するインデクスのインデクス名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_INDEXES" WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ? AND "IS_PRIMARY_KEY" = 'Y'
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(20) チャンクのスキップができるレンジインデクスかどうかを調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "IS_CHUNK_SKIP" FROM "MASTER"."SQL_INDEXES" WHERE "TABLE_SCHEMA" = ? AND "INDEX_NAME" = ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求にはインデクス識別子を入力してください。
検索結果が'Y'の場合は,チャンクのスキップができるレンジインデクスです。ナル値の場合は,チャンクのスキップができないレンジインデクス,またはレンジインデクス以外のインデクスです。
(21) 主キーと外部キーを構成する列名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "COLUMN_NAME" FROM "MASTER"."SQL_KEY_COLUMN_USAGE" WHERE "CONSTRAINT_SCHEMA" = ? AND "CONSTRAINT_NAME" = ? ORDER BY "COLUMN_ORDER" ASC
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求には制約を含むスキーマ名を,2番目の入力要求には制約名を入力してください。
(22) 主キーを参照する外部キーを調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "CONSTRAINT_SCHEMA","CONSTRAINT_NAME" FROM "MASTER"."SQL_REFERENTIAL_CONSTRAINTS" WHERE "PRIMARY_CONSTRAINT_SCHEMA" = ? AND "PRIMARY_CONSTRAINT_NAME" = ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求には制約を含むスキーマ名を,2番目の入力要求には制約名を入力してください。
(23) ビュー表が無効化されているかどうかを調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "IS_INVALID" FROM "MASTER"."SQL_VIEWS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはビュー表のスキーマ名を,2番目の入力要求にはビュー表の表識別子を入力してください。
検索結果が'Y'の場合,ビュー表は無効化されています。ナル値の場合,ビュー表は無効化されていません。
(24) 表に対するアクセス権限を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "GRANTOR", "SELECT_PRIVILEGE","INSERT_PRIVILEGE","UPDATE_PRIVILEGE", "DELETE_PRIVILEGE","TRUNCATE_PRIVILEGE", "REFERENCES_PRIVILEGE","IMPORT_TABLE_PRIVILEGE", "REBUILD_INDEX_PRIVILEGE","GET_COSTINFO_PRIVILEGE", "EXPORT_TABLE_PRIVILEGE","MERGE_CHUNK_PRIVILEGE", "CHANGE_CHUNK_COMMENT_PRIVILEGE","CHANGE_CHUNK_STATUS_PRIVILEGE", "ARCHIVE_CHUNK_PRIVILEGE","UNARCHIVE_CHUNK_PRIVILEGE" FROM "MASTER"."SQL_TABLE_PRIVILEGES" WHERE "GRANTEE" IN ('PUBLIC', ?) AND "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはアクセス権限が付与されたHADBユーザの認可識別子を,2番目の入力要求には表のスキーマ名を,3番目の入力要求には表の表識別子を入力してください。
GRANTOR列には,アクセス権限を付与したHADBユーザの認可識別子が出力されます。
そのほかの列には,各アクセス権限を持っているかどうかが出力されます。検索結果が'G'の場合は,該当の表に対するアクセス権限を付与権付きで持っています。'Y'の場合は,該当の表に対するアクセス権限(付与権なし)を持っています。'N'の場合は,該当の表に対するアクセス権限を持っていません。
(25) 実表の種類(マルチチャンク表,アーカイブマルチチャンク表,カラムストア表かどうか)を調べる場合
指定例に示すSELECT文でディクショナリ表を検索すると,次のことを確認できます。
-
実表がシングルチャンク表なのか,それともマルチチャンク表なのか
-
実表がレギュラーマルチチャンク表なのか,それともアーカイブマルチチャンク表なのか
-
実表がローストア表なのか,それともカラムストア表なのか
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME","IS_CHUNK","IS_ARCHIVABLE","STORAGE_FORMAT" FROM "MASTER"."SQL_TABLES" WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
- 検索結果の例
-
TABLE_SCHEMA TABLE_NAME IS_CHUNK IS_ARCHIVABLE STORAGE_FORMAT ------------ ---------- -------- ------------- -------------- ADBUSER01 T1 Y * COLUMN
この例では,実表"ADBUSER01"."T1"(以降,表T1と表記)の種類が表示されています。
-
IS_CHUNK列には,表T1がマルチチャンク表かどうかが表示されます。'Y'が表示された場合,表T1はマルチチャンク表です。'N'が表示された場合,表T1はシングルチャンク表です。
-
IS_ARCHIVABLE列には,表T1がアーカイブマルチチャンク表かどうかが表示されます。'Y'が表示された場合,表T1はアーカイブマルチチャンク表です。ナル値が表示された場合,表T1はアーカイブマルチチャンク表ではありません。この例の*は,ナル値を意味しています。
-
STORAGE_FORMAT列には,表T1がローストア表なのか,カラムストア表なのかが表示されます。'COLUMN'が表示された場合,表T1はカラムストア表です。'ROW'が表示された場合,表T1はローストア表です。
この例の場合,表T1は,レギュラーマルチチャンク表かつカラムストア表であることがわかります。
-
(26) アーカイブマルチチャンク表のアーカイブディレクトリを調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "ARCHIVE_DIRECTORY_PATH" FROM "MASTER"."SQL_TABLES" WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(27) アーカイブマルチチャンク表のアーカイブレンジ列の列名を調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "COLUMN_NAME" FROM "MASTER"."SQL_COLUMNS" WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ? AND "IS_ARCHIVE_RANGE_COLUMN" = 'Y'
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(28) アーカイブマルチチャンク表のアーカイブレンジ列に定義されたレンジインデクスを調べる場合
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "IX"."TABLE_SCHEMA","IX"."INDEX_NAME" FROM "MASTER"."SQL_INDEXES" "IX" ,"MASTER"."SQL_INDEX_COLINF" "IC" ,"MASTER"."SQL_COLUMNS" "CL" WHERE "IX"."TABLE_SCHEMA" = ? AND "IX"."TABLE_NAME" = ? AND "IX"."INDEX_TYPE" = 'R' AND "IX"."INDEX_ID" = "IC"."INDEX_ID" AND "IC"."TABLE_SCHEMA" = "CL"."TABLE_SCHEMA" AND "IC"."TABLE_NAME" = "CL"."TABLE_NAME" AND "IC"."COLUMN_NAME" = "CL"."COLUMN_NAME" AND "CL"."IS_ARCHIVE_RANGE_COLUMN" = 'Y'
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(29) 実表の定義情報を調べる場合
実表を再定義する際にCREATE TABLE文の指定内容がわからない場合は,指定例1および指定例2のSELECT文をそれぞれ実行し,ディクショナリ表を検索してください。
なお,SELECT文をadbsqlコマンドで実行する場合は,-sオプションを指定してください。SELECT文の検索結果を,標準出力にCSV形式で出力できます。
- メモ
-
adbsqlコマンドについては,マニュアルHADB コマンドリファレンスのadbsql(SQLの実行)を参照してください。
- 指定例1
-
SELECT "MT"."TABLE_SCHEMA" AS "スキーマ名" ,"MT"."TABLE_NAME" AS "表識別子" ,"MT"."FREE_AREA" AS "表未使用領域指定" ,"MT"."FIX_TABLE" AS "FIX指定" ,"MT"."IS_BRANCH_ALL" AS "BRANCH ALL指定" ,"MT"."IS_CHUNK" AS "チャンク指定" ,"MT"."N_CHUNK_RESERVED" AS "チャンクの最大値" ,"MT"."IS_ARCHIVABLE" AS "チャンクアーカイブ指定" ,"MT"."ARCHIVE_DIRECTORY_PATH" AS "アーカイブディレクトリ" ,"MT"."STORAGE_FORMAT" AS "表データの格納形式" ,"MR"."DBAREA_NAME" AS "表格納DBエリア名" ,"MC"."COLUMN_ID" AS "列ID" ,"MC"."COLUMN_NAME" AS "列名" ,CONVERT("MC"."DATA_TYPE_CODE", CHAR(9), '0XXXXXXX') AS "データ型コード" ,CONVERT("MC"."DATA_LENGTH", CHAR(9), '0XXXXXXX') AS "データ長" ,"MC"."IS_NULLABLE" AS "ナル値可否" ,"MC"."BRANCH" AS "ブランチ指定" ,"MC"."DEFAULT_VALUE" AS "既定値" ,"MC"."IS_DEFAULT_COLUMN" AS "DEFAULT句指定" ,"MC"."PRIMARY_KEY_COLUMN_SEQUENCE_NUMBER" AS "主キー構成順序" ,"MC"."IS_ARCHIVE_RANGE_COLUMN" AS "アーカイブレンジ列指定" ,"MC"."COMPRESSION_TYPE" AS "列データの圧縮方式" FROM "MASTER"."SQL_TABLES" "MT" ,"MASTER"."SQL_DIV_TABLE" "MD" ,"MASTER"."SQL_DBAREAS" "MR" ,"MASTER"."SQL_COLUMNS" "MC" WHERE "MT"."TABLE_SCHEMA" = ? AND "MT"."TABLE_NAME" = ? AND "MT"."TABLE_TYPE" = 'R' AND "MT"."TABLE_ID" = "MD"."TABLE_ID" AND "MD"."DBAREA_ID" = "MR"."DBAREA_ID" AND "MT"."TABLE_SCHEMA" = "MC"."TABLE_SCHEMA" AND "MT"."TABLE_NAME" = "MC"."TABLE_NAME" ORDER BY "MT"."TABLE_SCHEMA" ASC ,"MT"."TABLE_NAME" ASC ,"MC"."COLUMN_ID" ASC
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
- 指定例2
-
SELECT "MT"."TABLE_SCHEMA" AS "スキーマ名" ,"MT"."TABLE_NAME" AS "表識別子" ,"MT"."CONSTRAINT_SCHEMA" AS "制約を含むスキーマ名" ,"MT"."CONSTRAINT_NAME" AS "制約名" ,"MT"."CONSTRAINT_TYPE" AS "制約の種別" ,"MC"."COLUMN_NAME" AS "列名" ,"MC"."COLUMN_ORDER" AS "定義順序" ,"MR"."REFERENCED_TABLE_SCHEMA" AS "被参照表のスキーマ名" ,"MR"."REFERENCED_TABLE_NAME" AS "被参照表の表識別子" ,"MR"."IS_DISABLE" AS "参照制約チェック抑止指定" FROM "MASTER"."SQL_TABLE_CONSTRAINTS" "MT" INNER JOIN "MASTER"."SQL_KEY_COLUMN_USAGE" "MC" ON "MT"."CONSTRAINT_SCHEMA" = "MC"."CONSTRAINT_SCHEMA" AND "MT"."CONSTRAINT_NAME" = "MC"."CONSTRAINT_NAME" LEFT OUTER JOIN "MASTER"."SQL_REFERENTIAL_CONSTRAINTS" "MR" ON "MT"."CONSTRAINT_SCHEMA" = "MR"."CONSTRAINT_SCHEMA" AND "MT"."CONSTRAINT_NAME" = "MR"."CONSTRAINT_NAME" WHERE "MT"."TABLE_SCHEMA" = ? AND "MT"."TABLE_NAME" = ? ORDER BY "MT"."TABLE_SCHEMA" ASC ,"MT"."TABLE_NAME" ASC ,"MT"."CONSTRAINT_SCHEMA" ASC ,"MT"."CONSTRAINT_NAME" ASC ,"MC"."COLUMN_ORDER" ASC
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
(30) インデクスの定義情報を調べる場合
インデクスを再定義する際にCREATE INDEX文の指定内容がわからない場合は,指定例1または指定例2のSELECT文でディクショナリ表を検索してください。
なお,SELECT文をadbsqlコマンドで実行する場合は,-sオプションを指定してください。SELECT文の検索結果を,標準出力にCSV形式で出力できます。
- メモ
-
adbsqlコマンドについては,マニュアルHADB コマンドリファレンスのadbsql(SQLの実行)を参照してください。
- 指定例1(表名を入力してその表に定義されている全インデクスの定義情報を調べる場合)
-
SELECT "MI"."TABLE_SCHEMA" AS "スキーマ名" ,"MI"."TABLE_NAME" AS "表識別子" ,"MI"."INDEX_NAME" AS "インデクス識別子" ,"MC"."INDEX_ORDER" AS "インデクス構成列順序" ,"MC"."COLUMN_NAME" AS "列名" ,"MC"."ASC_DESC" AS "昇順・降順" ,"MI"."UNIQUE_TYPE" AS "UNIQUE" ,"MI"."FREE_AREA" AS "インデクス未使用領域指定" ,"MI"."INDEX_TYPE" AS "インデクスタイプ指定" ,"MI"."IS_EXCLUDE_NULL_VALUES" AS "ナル値除外指定" ,"MI"."IS_TEXT_CORRECTION_RULE" AS "テキストインデクス表記ゆれ補正指定" ,"MI"."IS_TEXT_WORDCONTEXT" AS "テキストインデクスワード検索指定" ,"MI"."TEXT_DELIMITER_TYPE" AS "テキストインデクス区切り文字指定" ,"MR"."DBAREA_NAME" AS "インデクス格納DBエリア名" FROM "MASTER"."SQL_INDEXES" "MI" ,"MASTER"."SQL_DIV_INDEX" "MD" ,"MASTER"."SQL_DBAREAS" "MR" ,"MASTER"."SQL_INDEX_COLINF" "MC" WHERE "MI"."TABLE_SCHEMA" = ? AND "MI"."TABLE_NAME" = ? AND "MI"."INDEX_ID" = "MD"."INDEX_ID" AND "MI"."INDEX_ID" = "MC"."INDEX_ID" AND "MD"."DBAREA_ID" = "MR"."DBAREA_ID" ORDER BY "MI"."TABLE_SCHEMA" ASC ,"MI"."TABLE_NAME" ASC ,"MI"."INDEX_NAME" ASC ,"MC"."INDEX_ORDER" ASC
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。
- 指定例2(インデクス名を入力してそのインデクスの定義情報を調べる場合)
-
SELECT "MI"."TABLE_SCHEMA" AS "スキーマ名" ,"MI"."TABLE_NAME" AS "表識別子" ,"MI"."INDEX_NAME" AS "インデクス識別子" ,"MC"."INDEX_ORDER" AS "インデクス構成列順序" ,"MC"."COLUMN_NAME" AS "列名" ,"MC"."ASC_DESC" AS "昇順・降順" ,"MI"."UNIQUE_TYPE" AS "UNIQUE" ,"MI"."FREE_AREA" AS "インデクス未使用領域指定" ,"MI"."INDEX_TYPE" AS "インデクスタイプ指定" ,"MI"."IS_EXCLUDE_NULL_VALUES" AS "NULL値除外指定" ,"MI"."IS_TEXT_CORRECTION_RULE" AS "テキストインデクス表記ゆれ補正指定" ,"MI"."IS_TEXT_WORDCONTEXT" AS "テキストインデクスワード検索指定" ,"MI"."TEXT_DELIMITER_TYPE" AS "テキストインデクス区切り文字指定" ,"MR"."DBAREA_NAME" AS "インデクス格納DBエリア名" FROM "MASTER"."SQL_INDEXES" "MI" ,"MASTER"."SQL_DIV_INDEX" "MD" ,"MASTER"."SQL_DBAREAS" "MR" ,"MASTER"."SQL_INDEX_COLINF" "MC" WHERE "MI"."TABLE_SCHEMA" = ? AND "MI"."INDEX_NAME" = ? AND "MI"."INDEX_ID" = "MD"."INDEX_ID" AND "MI"."INDEX_ID" = "MC"."INDEX_ID" AND "MD"."DBAREA_ID" = "MR"."DBAREA_ID"
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求にはインデクス識別子を入力してください。
(31) アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる場合
ALTER TABLE文で,レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する際,アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる必要があります。
アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる場合は,次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_INDEXES" "IX" WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ? AND "INDEX_TYPE" = 'R' AND EXISTS(SELECT * FROM "MASTER"."SQL_INDEX_COLINF" "IC" WHERE "IX"."TABLE_SCHEMA" = "IC"."TABLE_SCHEMA" AND "IX"."INDEX_NAME" = "IC"."INDEX_NAME" AND "IC"."COLUMN_NAME" = ?)
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。
-
最初の入力要求には,レギュラーマルチチャンク表のスキーマ名を入力してください。
-
2番目の入力要求には,レギュラーマルチチャンク表の表識別子を入力してください。
-
3番目の入力要求には,アーカイブレンジ列として指定する列の列名を入力してください。
(32) ビュー表の定義情報を調べる場合
ビュー表を再定義する際に,CREATE VIEW文の指定内容がわからない場合は,次に示すSELECT文でディクショナリ表を検索してください。
なお,SELECT文をadbsqlコマンドで実行する場合は,-sオプションを指定してください。SELECT文の検索結果を,標準出力にCSV形式で出力できます。
- メモ
-
adbsqlコマンドについては,マニュアルHADB コマンドリファレンスのadbsql(SQLの実行)を参照してください。
- 指定例
-
SELECT "MV"."TABLE_SCHEMA" AS "スキーマ名" ,"MV"."TABLE_NAME" AS "表識別子" ,"MV"."VIEW_LEVEL" AS "ビューレベル" ,"MS"."DEFINE_SOURCE" AS "ビュー定義文" ,"ME"."DELETE_RESERVED_WORD" AS "削除予約語" ,"ME"."DEFINE_VR" AS "定義バージョン" FROM "MASTER"."SQL_VIEWS" "MV" ,"MASTER"."SQL_DEFINE_SOURCE" "MS" ,"MASTER"."SQL_DEFINE_ENVIRONMENT" "ME" WHERE "MV"."TABLE_SCHEMA" = ? AND "MV"."TABLE_NAME" = ? AND "MV"."DEFINE_SOURCE_ID" = "MS"."SOURCE_ID" AND "MV"."VIEW_ID" = "ME"."RESOURCE_ID"
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはビュー表のスキーマ名を,2番目の入力要求にはビュー表の表識別子を入力してください。
- 検索結果の例
-
ビュー定義文に表示されている内容が,ビュー表V11(スキーマ名ADBUSER01)のCREATE VIEW文の指定内容です。
上記のSELECT文でディクショナリ表を検索したあとで,ビュー表を再定義する場合の注意事項を次に示します。
-
SELECT文の検索結果のうち,「"削除予約語"」がナル値ではない場合は,ビュー表を前回定義したときと同じ予約語削除の指定が,ビュー表の再定義時に必要になることがあります。
-
ALTER TABLE文による列名変更の影響で,ビュー表の無効化を解除する場合は,SELECT文の検索結果を基に作成する定義系SQLについて,列名の修正が必要になることがあります。
-
ALTER TABLE文による表名変更の影響で,ビュー表の無効化を解除する場合は,SELECT文の検索結果を基に作成する定義系SQLについて,表識別子の修正が必要になることがあります。
(33) 依存するビュー表の一覧,およびそれらのビュー表の定義情報を調べる場合
依存するビュー表の一覧と,それらのビュー表の定義情報を調べる場合は,次に示すSELECT文でディクショナリ表を検索してください。
なお,SELECT文をadbsqlコマンドで実行する場合は,-sオプションを指定してください。SELECT文の検索結果を,標準出力にCSV形式で出力できます。
- メモ
-
adbsqlコマンドについては,マニュアルHADB コマンドリファレンスのadbsql(SQLの実行)を参照してください。
- 指定例
-
SELECT "MV"."TABLE_SCHEMA" AS "スキーマ名" ,"MV"."TABLE_NAME" AS "表識別子" ,"MV"."IS_INVALID" AS "無効状態" ,"MV"."VIEW_LEVEL" AS "ビューレベル" ,"MS"."DEFINE_SOURCE" AS "ビュー定義文" ,"ME"."DELETE_RESERVED_WORD" AS "削除予約語" ,"ME"."DEFINE_VR" AS "定義バージョン" FROM "MASTER"."SQL_VIEW_TABLE_USAGE" "MVU" ,"MASTER"."SQL_VIEWS" "MV" ,"MASTER"."SQL_DEFINE_SOURCE" "MS" ,"MASTER"."SQL_DEFINE_ENVIRONMENT" "ME" WHERE "MVU"."TABLE_SCHEMA"=? AND "MVU"."TABLE_NAME" = ? AND "MV"."TABLE_SCHEMA" = "MVU"."VIEW_SCHEMA" AND "MV"."TABLE_NAME" = "MVU"."VIEW_NAME" AND "MV"."DEFINE_SOURCE_ID" = "MS"."SOURCE_ID" AND "ME"."RESOURCE_TYPE" = 'V' AND "MV"."VIEW_ID" = "ME"."RESOURCE_ID" ORDER BY "ビューレベル" ASC
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求には表のスキーマ名を,2番目の入力要求には表の表識別子を入力してください。
指定した表に依存するビュー表の一覧と,それらのビュー表の定義情報が表示されます。
- 検索結果の例
-
上記のビュー表(V12,V11,V3)が,?パラメタで指定した表に依存するビュー表です。
ビュー定義文に表示されている内容が,各ビュー表のCREATE VIEW文の指定内容です。
上記のSELECT文でディクショナリ表を検索したあとで,ビュー表を再定義する場合の注意事項を次に示します。
-
SELECT文の検索結果のうち,「"削除予約語"」がナル値ではない場合は,ビュー表を前回定義したときと同じ予約語削除の指定が,ビュー表の再定義時に必要になることがあります。
-
ALTER TABLE文による列名変更の影響で,ビュー表の無効化を解除する場合は,SELECT文の検索結果を基に作成する定義系SQLについて,列名の修正が必要になることがあります。
-
ALTER TABLE文による表名変更の影響で,ビュー表の無効化を解除する場合は,SELECT文の検索結果を基に作成する定義系SQLについて,表識別子の修正が必要になることがあります。
(34) 依存するビュー表の一覧を調べる場合
依存するビュー表の一覧を調べる場合は,次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "MV"."TABLE_SCHEMA" AS "スキーマ名" ,"MV"."TABLE_NAME" AS "表識別子" ,"MV"."IS_INVALID" AS "無効状態" FROM "MASTER"."SQL_VIEW_TABLE_USAGE" "MVU" ,"MASTER"."SQL_VIEWS" "MV" WHERE "MVU"."TABLE_SCHEMA"=? AND "MVU"."TABLE_NAME" = ? AND "MV"."TABLE_SCHEMA" = "MVU"."VIEW_SCHEMA" AND "MV"."TABLE_NAME" = "MVU"."VIEW_NAME"
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求には表のスキーマ名を,2番目の入力要求には表の表識別子を入力してください。
指定した表に依存するビュー表の一覧が表示されます。
- 検索結果の例
-
上記のビュー表(V12,V3,V11)が,?パラメタで指定した表に依存するビュー表です。
(35) テキストインデクスに指定したインデクスオプションを調べる場合
テキストインデクスに指定したインデクスオプションを調べる場合は,次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA" ,"INDEX_NAME" ,"INDEX_TYPE" ,"IS_TEXT_CORRECTION_RULE" ,"IS_TEXT_WORDCONTEXT" ,"TEXT_DELIMITER_TYPE" FROM "MASTER"."SQL_INDEXES" WHERE "TABLE_SCHEMA" = ? AND "INDEX_NAME" = ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求にはインデクス識別子を入力してください。
(36) ビュー表の基表である実表とビュー表を調べる場合
ビュー表の基表である実表とビュー表を調べる場合は,次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME" FROM "MASTER"."SQL_VIEW_TABLE_USAGE" WHERE "VIEW_SCHEMA"=? AND "VIEW_NAME"=? AND "IS_DIRECT"='Y'
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはビュー表のスキーマ名を,2番目の入力要求にはビュー表の表識別子を入力してください。
(37) 監査人の認可識別子と監査人が持っている監査権限を調べる方法
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "USER_NAME","AUDIT_ADMIN_PRIVILEGE","AUDIT_VIEWER_PRIVILEGE" FROM "MASTER"."SQL_USERS" WHERE "AUDIT_ADMIN_PRIVILEGE"='Y' OR "AUDIT_VIEWER_PRIVILEGE"='Y'
- 検索結果の例
-
USER_NAME AUDIT_ADMIN_PRIVILEGE AUDIT_VIEWER_PRIVILEGE ------------- --------------------- ---------------------- ADBAUDITADMIN Y N ADBAUDITOR N Y
監査人の一覧が表示されます。
USER_NAME列には,監査人の認可識別子が表示されます。
AUDIT_ADMIN_PRIVILEGE列が'Y'の場合は,その監査人は監査管理権限を持っています。
AUDIT_VIEWER_PRIVILEGE列が'Y'の場合は,その監査人は監査参照権限を持っています。
(38) adbinitコマンド実行時に指定した作業表用DBエリアのページサイズを調べる方法
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "PAGE_SIZE" FROM "MASTER"."SQL_DBAREAS" WHERE "DBAREA_NAME"='ADBWRK'
adbinitコマンド実行時に指定した作業表用DBエリアのページサイズが,PAGE_SIZE列にバイト単位で出力されます。
(39) 更新行のカラム化機能の対象となる表を調べる方法(B-treeインデクスを定義していないカラムストア表を調べる方法)
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "TABLE_SCHEMA","TABLE_NAME" FROM "MASTER"."SQL_TABLES" WHERE "STORAGE_FORMAT" = 'COLUMN' AND "TABLE_ID" NOT IN ( SELECT "TABLE_ID" FROM "MASTER"."SQL_INDEXES" WHERE "INDEX_TYPE" = 'B' )
更新行のカラム化機能の対象となる表(B-treeインデクスを定義していないカラムストア表)の一覧が表示されます。
(40) HADBユーザのユーザ認証方式を調べる方法
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "AUTHENTICATION_TYPE" FROM "MASTER"."SQL_USERS" WHERE "USER_NAME" = ?
adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。ユーザ認証方式を知りたいHADBユーザの認可識別子を入力してください。
検索結果が'DB'の場合は,データベース認証が使用されています。検索結果が'PAM'の場合は,PAM認証が使用されています。
(41) 暗号化対象のDBエリアの一覧を表示する方法
次に示すSELECT文でディクショナリ表を検索してください。
- 指定例
-
SELECT "DBAREA_ID","DBAREA_TYPE","DBAREA_NAME" FROM "MASTER"."SQL_DBAREAS" WHERE "IS_ENCRYPTED" = 'Y' ORDER BY "DBAREA_ID" ASC
上記のSELECT文を実行すると,暗号化対象のDBエリアの一覧(DBエリアID,DBエリアの種類,およびDBエリア名)が表示されます。