17.2.4 表およびインデクスの定義情報の取得
データベースを再作成する際に表やインデクスを再定義するため,表およびインデクスの定義情報と,表に対するアクセス権限の情報を次の手順で取得しておいてください。
手順
-
各データ用DBエリアに格納されている表およびインデクスの一覧を取得する
DBA権限を持っているHADBユーザで,「付録B.26 ディクショナリ表の検索」の「(15) DBエリアに格納されている表の表名を調べる場合」および「(16) DBエリアに格納されているインデクスのインデクス名を調べる場合」で説明している作業を実施してください。
すべてのデータ用DBエリアに対してこの作業を実施してください。
-
全ビュー表のビュー表名を取得する
DBA権限を持っているHADBユーザでディクショナリ表を検索してください。
SELECT "TABLE_SCHEMA","TABLE_NAME" FROM "MASTER"."SQL_VIEWS" WHERE "TABLE_SCHEMA" != 'MASTER'上記のSELECT文を実行すると,全ビュー表のビュー表名の一覧が取得できます。
-
ロールに関する情報を取得する
ロールに関する次の情報を取得します。ロールを定義していない場合は,この操作は不要です。
-
ロールの定義情報
DBA権限を持っているHADBユーザでディクショナリ表を検索し,ロールの定義情報を取得してください。
SELECT "ROLE_NAME","ROLE_CREATOR","MAPPING_TARGET" FROM "MASTER"."SQL_ROLES"
上記のSELECT文を実行すると,次の情報が取得できます。
-
ROLE_NAME列
定義されているロールの名称が出力されます。
-
ROLE_CREATOR列
ロールを定義したHADBユーザの認可識別子が出力されます。
-
MAPPING_TARGET列
自動ロールマッピング機能専用のロールかどうかを識別する情報が出力されます。Keycloakが出力された場合は,Keycloak認証での自動ロールマッピング機能専用のロールです。
-
-
ロールに付与されているアクセス権限の情報
ロールに付与されているアクセス権限の情報を取得します。取得方法については,「付録B.26 ディクショナリ表の検索」の「(43) ロールに付与されているアクセス権限を調べる場合」を参照してください。
「ロールの定義情報」のROLE_NAME列に出力された全ロールに対して,アクセス権限の情報を取得してください。
-
ロール利用権限の付与に関する情報
DBA権限を持っているHADBユーザでディクショナリ表を検索し,ロール利用権限の付与に関する情報を取得してください。
SELECT "ROLE_NAME","GRANTOR","GRANTEE" FROM "MASTER"."SQL_ROLE_PRIVILEGES"上記のSELECT文を実行すると,次の情報が取得できます。
-
ROLE_NAME列
定義されているロールの名称が出力されます。
-
GRANTOR列
ロール利用権限を付与したHADBユーザの認可識別子が出力されます。
-
GRANTEE列
ロール利用権限が付与されたHADBユーザの認可識別子が出力されます。
-
-
-
表に対するアクセス権限の情報を取得する
HADBユーザがほかのHADBユーザにアクセス権限を付与している場合,この操作を実施してください。
DBA権限を持っているHADBユーザでディクショナリ表を検索してください。
SELECT "GRANTOR","GRANTEE","OWNER","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","COPY_PRIVILEGE" FROM "MASTER"."SQL_TABLE_PRIVILEGES" WHERE "GRANTEE_TYPE" = 'I' AND "TABLE_SCHEMA"=? AND "TABLE_NAME"=?adbsqlコマンドで上記のSELECT文を実行した場合,?パラメタに対する入力データの入力要求があります。最初の入力要求には表のスキーマ名を,2番目の要求には表の表識別子を入力してください。入力するスキーマ名と表識別子は,手順1.および2.の調査結果に出力されたTABLE_SCHEMA列とTABLE_NAME列のスキーマ名と表識別子を使用してください。
上記のSELECT文の実行結果の各列に出力される情報を説明します。
-
GRANTOR列
アクセス権限を付与したHADBユーザの認可識別子が出力されます。
-
GRANTEE列
アクセス権限を付与されたHADBユーザの認可識別子が出力されます。
-
OWNER列
表の所有者であるHADBユーザの認可識別子が出力されます。
-
上記以外の列
HADBユーザが各種のアクセス権限を持っているかどうかの情報が出力されます。'G'が出力されている場合は,そのアクセス権限を付与権付きで持っています。'Y'が出力されている場合は,そのアクセス権限を持っています。'N'が出力されている場合は,そのアクセス権限を持っていません。
-
-
表およびインデクスの定義情報を取得する
DBA権限を持っているHADBユーザで,「付録B.26 ディクショナリ表の検索」の「(29) 実表の定義情報を調べる場合」および「(30) インデクスの定義情報を調べる場合」で説明している作業を実施してください。
すべての表,およびすべてのインデクスに対してこの作業を実施してください。
- メモ
-
-
HADBでは,表およびインデクスの定義情報を出力する機能を提供していません。そのため,ディクショナリ表を検索して,表およびインデクスの定義情報を取得しておき,データベースの初期設定後に表およびインデクスを再定義できるようにしておく必要があります。
-
表およびインデクスを定義したときの定義情報がある場合は,この作業を実施する必要はありません。
-
-
ビュー表の定義情報を取得する
DBA権限を持っているHADBユーザで,「付録B.26 ディクショナリ表の検索」の「(32) ビュー表の定義情報を調べる場合」で説明している作業を実施してください。
すべてのビュー表に対してこの作業を実施してください。
-
コスト情報を収集している表の一覧を取得する
DBA権限を持っているHADBユーザで,「付録C.9 システム表の検索」の「(1) コスト情報を収集した全実表の表名と収集日時を調べる場合」で説明している作業を実施してください。