Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


付録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) スキーマ名から定義された全表の表名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "TABLE_SCHEMA","TABLE_NAME","TABLE_TYPE"
  FROM "MASTER"."SQL_TABLES"
    WHERE "TABLE_SCHEMA"=?

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。スキーマ名を入力してください。

なお,TABLE_TYPE'R'の場合は実表を,'V'の場合はビュー表を意味しています。

(11) スキーマ名から定義された全インデクスのインデクス名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "TABLE_SCHEMA","INDEX_NAME","INDEX_TYPE"
  FROM "MASTER"."SQL_INDEXES"
    WHERE "TABLE_SCHEMA"=?

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。スキーマ名を入力してください。

なお,INDEX_TYPE'B'の場合はB-treeインデクスを,'T'の場合はテキストインデクスを,'R'の場合はレンジインデクスを意味しています。

(12) インデクス名からインデクスが格納されている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番目の入力要求にはインデクス識別子を入力してください。

(13) 全マルチチャンク表に作成されるチャンク数の最大値を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "TABLE_NAME","N_CHUNK_RESERVED"
  FROM "MASTER"."SQL_TABLES"
    WHERE "IS_CHUNK" = 'Y'
      ORDER BY "TABLE_NAME"

(14) 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エリア名を入力してください。

(15) 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エリア名を入力してください。

(16) ビュー表の更新可否を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "IS_UPDATABLE" FROM "MASTER"."SQL_VIEWS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求にはビュー表の表識別子を入力してください。

検索結果が'Y'の場合は,更新可能ビュー表であるため更新できます。'N'の場合は,読み取り専用ビュー表であるため更新できません。

(17) 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'の場合は,対象のユーザ権限およびスキーマ操作権限情報を持っていません。

(18) 主キーに対応するインデクスのインデクス名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_INDEXES"
  WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ? AND "IS_PRIMARY_KEY" = 'Y'

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。

(19) チャンクのスキップができるレンジインデクスかどうかを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "IS_CHUNK_SKIP" FROM "MASTER"."SQL_INDEXES"
  WHERE "TABLE_SCHEMA" = ? AND "INDEX_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求にはインデクス識別子を入力してください。

検索結果が'Y'の場合は,チャンクのスキップができるレンジインデクスです。ナル値の場合は,チャンクのスキップができないレンジインデクス,またはレンジインデクス以外のインデクスです。

(20) 主キーと外部キーを構成する列名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "COLUMN_NAME"
  FROM "MASTER"."SQL_KEY_COLUMN_USAGE"
    WHERE "CONSTRAINT_SCHEMA" = ? AND "CONSTRAINT_NAME" = ?
      ORDER BY "COLUMN_ORDER" ASC

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求には制約を含むスキーマ名を,2番目の入力要求には制約名を入力してください。

(21) 主キーを参照する外部キーを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "CONSTRAINT_SCHEMA","CONSTRAINT_NAME"
  FROM "MASTER"."SQL_REFERENTIAL_CONSTRAINTS"
    WHERE "PRIMARY_CONSTRAINT_SCHEMA" = ?
      AND "PRIMARY_CONSTRAINT_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求には制約を含むスキーマ名を,2番目の入力要求には制約名を入力してください。

(22) ビュー表が無効化されているかどうかを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "IS_INVALID" FROM "MASTER"."SQL_VIEWS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはビュー表のスキーマ名を,2番目の入力要求にはビュー表の表識別子を入力してください。

検索結果が'Y'の場合,ビュー表は無効化されています。ナル値の場合,ビュー表は無効化されていません。

(23) 表に対するアクセス権限を調べる場合

次に示す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'の場合は,該当の表に対するアクセス権限を持っていません。

(24) 実表の種類(マルチチャンク表,アーカイブマルチチャンク表,カラムストア表かどうか)を調べる場合

指定例に示す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は,レギュラーマルチチャンク表かつカラムストア表であることがわかります。

(25) アーカイブマルチチャンク表のアーカイブディレクトリを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "ARCHIVE_DIRECTORY_PATH" FROM "MASTER"."SQL_TABLES"
  WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。

(26) アーカイブマルチチャンク表のアーカイブレンジ列の列名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "COLUMN_NAME" FROM "MASTER"."SQL_COLUMNS"
  WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ? AND "IS_ARCHIVE_RANGE_COLUMN" = 'Y'

adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を,2番目の入力要求には表識別子を入力してください。

(27) アーカイブマルチチャンク表のアーカイブレンジ列に定義されたレンジインデクスを調べる場合

次に示す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番目の入力要求には表識別子を入力してください。

(28) 実表の定義情報を調べる場合

実表を再定義する際に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番目の入力要求には表識別子を入力してください。

(29) インデクスの定義情報を調べる場合

インデクスを再定義する際にCREATE INDEX文の指定内容がわからない場合は,次に示すSELECT文でディクショナリ表を検索してください。

なお,SELECT文をadbsqlコマンドで実行する場合は,-sオプションを指定してください。SELECT文の検索結果を,標準出力にCSV形式で出力できます。

メモ

adbsqlコマンドについては,マニュアルHADB コマンドリファレンスadbsql(SQLの実行)を参照してください。

指定例
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番目の入力要求には表識別子を入力してください。

(30) アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる場合

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文を実行した場合,?パラメタに対する入力データの入力要求があります。

(31) ビュー表の定義情報を調べる場合

ビュー表を再定義する際に,CREATE VIEW文の指定内容がわからない場合は,次に示すSELECT文でディクショナリ表を検索してください。

なお,SELECT文をadbsqlコマンドで実行する場合は,-sオプションを指定してください。SELECT文の検索結果を,標準出力にCSV形式で出力できます。

メモ

adbsqlコマンドについては,マニュアルHADB コマンドリファレンスadbsql(SQLの実行)を参照してください。

指定例
SELECT "MV"."TABLE_SCHEMA"         AS "スキーマ名"
      ,"MV"."TABLE_NAME"           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文でディクショナリ表を検索したあとで,ビュー表を再定義する場合の注意事項を次に示します。

(32) 依存するビュー表の一覧,およびそれらのビュー表の定義情報を調べる場合

依存するビュー表の一覧と,それらのビュー表の定義情報を調べる場合は,次に示す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番目の入力要求には表の表識別子を入力してください。

指定した表に依存するビュー表の一覧と,それらのビュー表の定義情報が表示されます。

検索結果の例

[図データ]

上記のビュー表(V12V11V3)が,?パラメタで指定した表に依存するビュー表です。

ビュー定義文に表示されている内容が,各ビュー表のCREATE VIEW文の指定内容です。

上記のSELECT文でディクショナリ表を検索したあとで,ビュー表を再定義する場合の注意事項を次に示します。

(33) 依存するビュー表の一覧を調べる場合

依存するビュー表の一覧を調べる場合は,次に示す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番目の入力要求には表の表識別子を入力してください。

指定した表に依存するビュー表の一覧が表示されます。

検索結果の例

[図データ]

上記のビュー表(V12V3V11)が,?パラメタで指定した表に依存するビュー表です。

(34) テキストインデクスに指定したインデクスオプションを調べる場合

テキストインデクスに指定したインデクスオプションを調べる場合は,次に示す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番目の入力要求にはインデクス識別子を入力してください。

(35) ビュー表の基表である実表とビュー表を調べる場合

ビュー表の基表である実表とビュー表を調べる場合は,次に示す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番目の入力要求にはビュー表の表識別子を入力してください。

(36) 監査人の認可識別子と監査人が持っている監査権限を調べる方法

次に示す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'の場合は,その監査人は監査参照権限を持っています。

(37) adbinitコマンド実行時に指定した作業表用DBエリアのページサイズを調べる方法

次に示すSELECT文でディクショナリ表を検索してください。

指定例
SELECT "PAGE_SIZE"
  FROM "MASTER"."SQL_DBAREAS"
    WHERE "DBAREA_NAME"='ADBWRK'

adbinitコマンド実行時に指定した作業表用DBエリアのページサイズが,PAGE_SIZE列にバイト単位で出力されます。

(38) 更新行のカラム化機能の対象となる表を調べる方法(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インデクスを定義していないカラムストア表)の一覧が表示されます。