Hitachi

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


13.9.1 データ用DBエリア以外のDBエリアを暗号化している場合

データ用DBエリア以外のDBエリアを暗号化している場合にデータ暗号鍵を更新するには,adbinitコマンドでデータベースを初期設定し直す必要があります。そのため,DBエリア,表,インデクスの再定義や,表へのデータの再インポートなどをする必要があります。手順を以降で説明します。

〈この項の構成〉

(1) データベースのバックアップを取得する

データ暗号鍵の更新手順を間違えると,データベースの状態がデータ暗号鍵の更新前とは異なってしまうおそれがあります。そのため,データ暗号鍵を更新する前にデータベースのバックアップを取得してください。バックアップの取得方法については,「13.6 バックアップを取得する場合」を参照してください。

データ暗号鍵の更新手順を間違えた場合,バックアップからデータベースを回復し,データ暗号鍵を再度更新してください。

(2) 全HADBユーザの情報を取得する

DBA権限を持っているHADBユーザでディクショナリ表を検索し,全HADBユーザの情報を取得してください。

SELECT "USER_NAME","DBA_PRIVILEGE","CONNECT_PRIVILEGE","SCHEMA_PRIVILEGE",
       "AUDIT_ADMIN_PRIVILEGE","AUDIT_VIEWER_PRIVILEGE",
       "CRYPTO_ADMIN_PRIVILEGE","AUTHENTICATION_TYPE"
    FROM "MASTER"."SQL_USERS"

上記のSELECT文を実行すると,全HADBユーザの認可識別子とそのHADBユーザが持っている権限の一覧が出力されます。

メモ

ここで取得した情報は,後ほどの作業で使用します。

上記のSELECT文の実行結果の各列に出力される情報を説明します。

(3) adbinitコマンドの初期設定オプションファイルを作成する

adbinitコマンドでデータベースを初期設定し直す必要があるため,現状のDBエリアの構成を反映した初期設定オプションファイル(adbinit.optファイル)を次の手順で作成してください。

メモ
  • 現状のDBエリアの構成を反映した初期設定オプションファイルがある場合は,ここで説明する作業を実施する必要はありません。

  • ここで作成した初期設定オプションファイルは,後ほどの作業で使用します。

手順

次のすべての操作は,HADB管理者で実行してください。

  1. 初期設定オプションファイルの基となるファイルを作成する

    echo "set adb_init_mst_blk_path = \"$(ls -l $DBDIR/ADBMST \
    | awk '{print $NF}')\"" >adbinit.opt
    echo "set adb_init_wrk_blk_path = \"$(ls -l $DBDIR/ADBWRK \
    | awk '{print $NF}')\"" >>adbinit.opt

    上記のコマンドを実行すると,カレントディレクトリにadbinit.optファイル(初期設定オプションファイルの基となるファイル)が作成されます。

    なお,$DBDIRの部分(下線部分)は,DBディレクトリのパスを指定してください。

  2. adbdbstatusコマンドを実行する

    adbdbstatusコマンドを実行して,データ用DBエリアなどを構成するDBエリアファイルの情報を抽出し,adbinit.optファイルに追加します。

    adbdbstatus -d used | grep -E "^Used" | awk -F',' '{print $3, $9}' | awk '!a[$0]++' \
    | sed -e '1i set adb_init_dbarea_initialize = Y' \
          -e 's/"ADBDIC"/set adb_init_dic_blk_path =/g' \
          -e 's/"ADBSTBL"/set adb_init_stbl_blk_path =/g' \
    | sed -r 's/^"(.*)" "(.*)"/adbinitdbarea -n \\"\1\\" -i 0K,x -v "\2",\\/g' \
    >>adbinit.opt

    上記のコマンドを実行すると,adbinit.optファイルの内容は次のようになります。

    <作成されるadbinit.optファイルの例>

    set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60...93bc"
    set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
    set adb_init_dbarea_initialize = Y
    set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60...e259"
    set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60...311b"
    adbinitdbarea -n \"DBAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0000",\
    adbinitdbarea -n \"DBAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0001",\
    adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0400",\
    adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0401",\
    adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0402",\
  3. adbinit.optファイルを修正する(その1)

    adbinit.optファイルをエディタで開き,初期設定オプションの構文に合わせて内容を修正してください。初期設定オプションについては,マニュアルHADB コマンドリファレンス初期設定オプションの形式を参照してください。

    また,次のことを確認して修正してください。

    • 次のオペランドにブロックスペシャルファイルが指定されていない場合は,次のオペランドを削除してください。

      • adb_init_wrk_blk_path

      • adb_init_mst_blk_path

      • adb_init_dic_blk_path

      • adb_init_stbl_blk_path

    • -vオプションにブロックスペシャルファイルが指定されていない場合は,次の修正をしてください。

      • -vオプションに指定されているDBエリアファイルがDBディレクトリ直下にある場合

        <修正例>

        adbinitdbarea -n \"ADBUTBL01\" -i 0K,x -v "$DBDIR/ADBUTBL01",\
           ↓下記のように修正する。
        adbinitdbarea -n \"ADBUTBL01\" -i 0K,1

        $DBDIRの部分は,DBディレクトリのパスが表示されます。上記の例の場合,DBディレクトリの直下にDBエリアファイルADBUTBL01があります。

        この場合,次の修正をしてください。

        -vオプション以降の指定を削除する。

        -iオプションに指定している作成ファイル数を1に変更する。

      • -vオプションに指定されているDBエリアファイルがDBディレクトリ直下にない場合

        <修正例>

        adbinitdbarea -n \"ADBUTBL01\" -i 0K,x -v "$DBDIR/AREAS/ADBUTBL01",\
           ↓下記のように修正する。
        adbinitdbarea -n \"ADBUTBL01\" -i 0K,1 -f \"AREAS/\"

        $DBDIRの部分は,DBディレクトリのパスが表示されます。上記の例の場合,「DBディレクトリ/AREAS」下にDBエリアファイルADBUTBL01があります。

        この場合,次の修正をしてください。

        -iオプションに指定している作成ファイル数を1に変更する。

        -v-fに変更する。

        ・「"$DBDIR/AREAS/ADBUTBL01"」を「\"AREAS/\"」に変更する。

        ・末尾の「,\」を削除する。

    • -nオプションに指定しているDBエリア名の重複行がある場合,すべての重複行で次の修正をしてください。重複行がない場合は,その行だけ次の修正をしてください。

      • 先頭行の-iオプションに指定しているファイル数を,重複行数と同じ数に変更してください。

      • 2行目以降については,ブロックスペシャルファイルより前の記述を削除してください。

      • 最終行の末尾の「,\」を削除してください。

    <修正後のadbinit.optファイルの例>

    set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60...93bc"
    set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
    set adb_init_dbarea_initialize = Y
    set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60...e259"
    set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60...311b"
    adbinitdbarea -n \"DBAREA1\" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60...0000",\
                                            "/dev/disk/by-id/wwn-0x60...0001"
    adbinitdbarea -n \"NEWAREA1\" -i 0K,3 -v "/dev/disk/by-id/wwn-0x60...0400",\
                                             "/dev/disk/by-id/wwn-0x60...0401",\
                                             "/dev/disk/by-id/wwn-0x60...0402"
  4. adbinit.optファイルを修正する(その2)

    データ用DBエリアファイルのシンボリックリンクをDBディレクトリ下のサブディレクトリに配置している場合,そのデータ用DBエリアを定義しているadbinitdbareaオペランドに,-fオプションを指定する必要があります。4.では,adbinitdbareaオペランドに-fオプションを指定する必要があるかどうかと,-fオプションに指定するパスを調査します。

    なお,3.で-fオプションを指定したadbinitdbareaオペランドについては,4.の作業は不要です。

    手順

    メモ

    手順の各操作にある$DBDIRにはDBディレクトリ名を入力してください。また,実行結果にある$DBDIRにはDBディレクトリ名が表示されます。

    1. DBディレクトリ直下のファイルの一覧を表示する

      ls $DBDIR

      上記のコマンドを実行すると,DBディレクトリ直下のファイルの一覧が表示されます。

      lsコマンドの実行結果の例>

      ADBDIC ADBMST ADBSTBL ADBSYS ADBWORK ADBWRK AREAS DBAREA1 DBAREA1.00001 SPOOL

      上記の実行結果に,3.の「<修正後のadbinit.optファイルの例>」に指定しているデータ用DBエリア名と同名のファイルがあるかどうかを確認してください。この例の場合,同名のファイルとしてDBAREA1はありますが,NEWAREA1はありません。したがって,データ用DBエリアファイルのシンボリックリンクDBAREA1はDBディレクトリ直下に配置されていますが,シンボリックリンクNEWAREA1はDBディレクトリ直下に配置されていません。シンボリックリンクNEWAREA1は,DBディレクトリ下のサブディレクトリに配置されています。

    2. シンボリックリンクNEWAREA1の配置場所を調査する

      findコマンドを実行して,a.の実行結果に表示されていないシンボリックリンクNEWAREA1が,DBディレクトリ内のどこに配置されているかを調査してください。

      find $DBDIR -name NEWAREA1 2>/dev/null

      上記のコマンドを実行すると,DBディレクトリ内に存在するファイル名がNEWAREA1であるファイルの一覧が表示されます。

      findコマンドの実行結果の例>

      $DBDIR/AREAS/OLD/NEWAREA1
      $DBDIR/AREAS/NEW/NEWAREA1

      上記の実行結果のように,異なるパスの同名ファイルが複数表示された場合は,次の手順に進んでください。

      パスが1つしか表示されない場合は,d.に進んでください。

    3. $DBDIR/AREAS/OLD/NEWAREA1のリンク先を調査する

      ls -lコマンドを実行して,b.の実行結果に表示された$DBDIR/AREAS/OLD/NEWAREA1のリンク先を表示してください。

      ls -l $DBDIR/AREAS/OLD/NEWAREA1* | sed -e 's/.* -> //g'

      lsコマンドの実行結果の例>

      /dev/disk/by-id/wwn-0x60...a000

      上記の実行結果と,3.の「<修正後のadbinit.optファイルの例>」に指定しているデータ用DBエリアNEWAREA1の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。

      この例の場合,上記の実行結果とブロックスペシャルファイルのパスが一致していないため,該当するファイルではありません。

    4. $DBDIR/AREAS/NEW/NEWAREA1のリンク先を調査する

      ls -lコマンドを実行して,b.の実行結果に表示された$DBDIR/AREAS/NEW/NEWAREA1のリンク先を表示してください。

      ls -l $DBDIR/AREAS/NEW/NEWAREA1* | sed -e 's/.* -> //g'

      lsコマンドの実行結果の例>

      /dev/disk/by-id/wwn-0x60...0400
      /dev/disk/by-id/wwn-0x60...0401
      /dev/disk/by-id/wwn-0x60...0402

      上記の実行結果と,3.の「<修正後のadbinit.optファイルの例>」に指定しているデータ用DBエリアNEWAREA1の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。

      この例の場合,上記の実行結果とブロックスペシャルファイルのパスが一致しています。したがって,$DBDIR/AREAS/NEW/NEWAREA1が,該当するファイルとなります。$DBDIR/AREAS/NEW/NEWAREA1の下線部分を,データ用DBエリアNEWAREA1adbinitdbareaオペランドの-fオプションに指定してください。

      <修正後のadbinit.optファイルの例>

      set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60...93bc"
      set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
      set adb_init_dbarea_initialize = Y
      set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60...e259"
      set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60...311b"
      adbinitdbarea -n \"DBAREA1\" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60...0000",\
                                              "/dev/disk/by-id/wwn-0x60...0001"
      adbinitdbarea -n \"NEWAREA1\" -f \"AREAS/NEW/\" -i 0K,3 \
                    -v "/dev/disk/by-id/wwn-0x60...0400",\
                       "/dev/disk/by-id/wwn-0x60...0401",\
                       "/dev/disk/by-id/wwn-0x60...0402"

      下線部分の-fオプションを追加します。

  5. adbinit.optファイルを修正する(その3)

    暗号化対象のDBエリアを確認し,初期設定オプションにDBエリアを暗号化するオプションを指定してください。

    DBA権限を持っているHADBユーザで,「付録B.22 ディクショナリ表の検索」の「(41) 暗号化対象のDBエリアの一覧を表示する方法」で説明している作業を実施してください。暗号化対象のDBエリアの一覧表示されます

    実行結果の例>

     DBAREA_ID    DBAREA_TYPE DBAREA_NAME
     ------------ ----------- -------------------------------------------
                2        DICT ADBDIC 
                3        WORK ADBWRK 
                4        STBL ADBSTBL 
               11        DATA NEWAREA1 
    KFAA96404-I 4 rows were selected.

    上記の実行結果から,DICT(ディクショナリ用DBエリア),WORK(作業表用DBエリア),STBL(システム表用DBエリア),DATA(データ用DBエリアNEWAREA1)が暗号化対象のDBエリアであることがわかります。

    <修正後のadbinit.optファイルの例>

    set adb_init_dic_encrypt = Y                        ...[a]
    set adb_init_wrk_encrypt = Y                        ...[b]
    set adb_init_stbl_encrypt = Y                       ...[c]
    set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey   ...[d]
          :
    adbinitdbarea -e -n \"NEWAREA1\" -f \"AREAS/NEW/\" -i 0K,3 \    ...[e]
                  -v "/dev/disk/by-id/wwn-0x60...0400",\
                     "/dev/disk/by-id/wwn-0x60...0401",\
                     "/dev/disk/by-id/wwn-0x60...0402"

    [説明]

    1. ディクショナリ用DBエリアを暗号化するときに指定するオペランドを追加します。

    2. 作業表用DBエリアを暗号化するときに指定するオペランドを追加します。

    3. システム表用DBエリアを暗号化するときに指定するオペランドを追加します。

    4. HADB暗号鍵の出力先ファイル名を指定するオペランドを追加します。

    5. データ用DBエリアNEWAREA1を暗号化するときに指定する-eオプション(下線部分)を追加します。

  6. adbinit.optファイルを保存する

マルチノード機能を使用している場合

上記の手順で作成したadbinit.optファイルは,プライマリノードで使用するadbinit.optファイルです。

セカンダリノードまたはワーカーノードで使用するadbinit.optファイルは次の手順で作成してください。

手順

  1. 全セカンダリノードおよび全ワーカーノードに,上記の手順で作成したadbinit.optファイルを配布する

  2. セカンダリノードまたはワーカーノードで,1.で配布したadbinit.optファイルをエディタで開く

  3. 次のコマンドを実行する

    echo "\"$(ls -l $DBDIR/ADBWRK | awk '{print $NF}')\""

    $DBDIRの部分(下線部分)は,DBディレクトリのパスを指定してください。

  4. adb_init_wrk_blk_pathオペランドの指定を修正する

    3.のコマンドの実行結果がブロックスペシャルファイルの場合は,実行結果に出力されたファイル名をadb_init_wrk_blk_pathオペランドに指定してください。

    ブロックスペシャルファイルではない場合は,adb_init_wrk_blk_pathオペランドを削除してください。

  5. adb_init_dbarea_initializeオペランドの指定値をYからNに変更する

  6. adbinit.optファイルを保存する

  7. 全セカンダリノードおよび全ワーカーノードで,2.~6.を実施する

(4) 表およびインデクスの定義情報を取得する

データベースの初期設定後に表やインデクスを再定義するため,表およびインデクスの定義情報と,表に対するアクセス権限の情報を次の手順で取得してください。

メモ

ここで取得した情報は,後ほどの作業で使用します。

手順

  1. 各データ用DBエリアに格納されている表およびインデクスの一覧を取得する

    DBA権限を持っているHADBユーザで,「付録B.22 ディクショナリ表の検索」の「(15) DBエリアに格納されている表の表名を調べる場合」および「(16) DBエリアに格納されているインデクスのインデクス名を調べる場合」で説明している作業を実施してください。

    すべてのデータ用DBエリアに対してこの作業を実施してください。

  2. 全ビュー表のビュー表名を取得する

    DBA権限を持っているHADBユーザでディクショナリ表を検索してください。

    SELECT "TABLE_SCHEMA","TABLE_NAME"
        FROM "MASTER"."SQL_VIEWS"
          WHERE "TABLE_SCHEMA" != 'MASTER'

    上記のSELECT文を実行すると,全ビュー表のビュー表名の一覧が取得できます。

  3. 表に対するアクセス権限の情報を取得する

    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"
        FROM "MASTER"."SQL_TABLE_PRIVILEGES"
          WHERE "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'が出力されている場合は,そのアクセス権限を持っていません。

  4. 表およびインデクスの定義情報を取得する

    DBA権限を持っているHADBユーザで,「付録B.22 ディクショナリ表の検索」の「(29) 実表の定義情報を調べる場合」および「(30) インデクスの定義情報を調べる場合」で説明している作業を実施してください。

    すべての表,およびすべてのインデクスに対してこの作業を実施してください。

    メモ
    • HADBでは,表およびインデクスの定義情報を出力する機能を提供していません。そのため,ディクショナリ表を検索して,表およびインデクスの定義情報を取得しておき,データベースの初期設定後に表およびインデクスを再定義できるようにしておく必要があります。

    • 表およびインデクスを定義したときの定義情報がある場合は,この作業を実施する必要はありません。

  5. ビュー表の定義情報を取得する

    DBA権限を持っているHADBユーザでディクショナリ表を検索してください。

    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"."DEFINE_SOURCE_ID" = "MS"."SOURCE_ID"
            AND "MV"."VIEW_ID" = "ME"."RESOURCE_ID"
          ORDER BY "MV"."VIEW_LEVEL"

    上記のSELECT文を実行すると,全ビュー表の定義時に必要な情報が出力されます。

  6. コスト情報を収集している表の一覧を取得する

    DBA権限を持っているHADBユーザで,「付録C.9 システム表の検索」の「(1) コスト情報を収集した全実表の表名と収集日時を調べる場合」で説明している作業を実施してください。

(5) 表のデータをエクスポートする

すべての表のデータをエクスポートしてください。表がマルチチャンク表かどうかで手順が異なります。

重要
  • 次の手順の操作は,表の所有者が実行してください。

  • エクスポートした表のデータはデータベース管理の担当者が回収してください。

  • 情報漏えいのリスクを低減するために,表の所有者は,作業の完了後にエクスポートした表のデータを削除してください。

(6) 監査証跡機能,同義語検索に関する情報を取得する

メモ

ここで取得した情報は,後ほどの作業で必要になります。

(7) データベースを初期設定する

次の手順でデータベースを初期設定してください。

手順

  1. adbstopコマンドでHADBサーバを終了する

    マルチノード機能を使用している場合は,マルチノード構成のHADBサーバを終了してください。終了方法については,「17.5.2 マルチノード構成のHADBサーバの終了方法」を参照してください。

  2. データベースを初期設定する

    HADB管理者でadbinitコマンドを実行し,データベースを初期設定してください。

    (3) adbinitコマンドの初期設定オプションファイルを作成する」で作成した初期設定オプションファイルを使用してください。

    マルチノード機能を使用している場合は,2.の作業を全ノードで実施してください。実施後,プライマリノードで作成されたHADB暗号鍵ファイルを全ノードに配布してください。配布方法については,「17.30.1 DBエリア暗号化機能の環境設定をする場合」のHADB暗号鍵ファイルの配布を参照してください。

  3. サーバ定義を変更する

    (3) adbinitコマンドの初期設定オプションファイルを作成する」で作成した初期設定オプションファイルにadb_init_dmkey_pathオペランドを指定した場合,サーバ定義のadb_crypto_dmkey_pathオペランドにadb_init_dmkey_pathオペランドに指定したHADB暗号鍵の出力先ファイル名(HADB暗号鍵ファイル名)の絶対パスを指定してください。

    初期設定オプションファイルにadb_init_dmkey_pathオペランドを指定していない場合は,サーバ定義のadb_crypto_dmkey_pathオペランドを削除してください。

    マルチノード機能を使用している場合は,3.の作業を全ノードで実施してください。サーバ定義のadb_crypto_dmkey_pathオペランドを指定する場合は,各ノードに配布したHADB暗号鍵ファイルの絶対パスを指定してください。

  4. adbstartコマンドでHADBサーバを開始する

    マルチノード構成のHADBサーバを開始する場合は,各ノードでのadbstartコマンドの入力後にHADB暗号鍵利用パスワードの入力要求メッセージ(KFAA90013-Q)が出力されます。詳細については,「17.30.2 マルチノード構成のHADBサーバを開始する場合」を参照してください。

(8) HADBユーザを作成して権限を付与する

CREATE USER文でHADBユーザを作成して,作成したHADBユーザにGRANT文で権限を付与してください。

(2) 全HADBユーザの情報を取得する」で取得した全HADBユーザの情報を使用して,HADBユーザを作成して権限を付与します。

重要
  • DBA権限を持っているHADBユーザで,HADBユーザを作成します。このとき,データベース認証を使用するHADBユーザとして作成してください。PAM認証を使用するHADBユーザは,「(11) HADBユーザのユーザ認証方式とパスワードを変更する」でユーザ認証方式をPAM認証に変更します。

  • 以降の作業で,データベース管理の担当者が,ここで作成した複数のHADBユーザを使用して行う作業があります。そのため,ここで作成するHADBユーザには,入力が容易なパスワードを設定することを推奨します。以降の作業がすべて完了したあとに,ここで作成したHADBユーザのパスワードをすぐに変更するように徹底してください。

HADBユーザの作成と権限を付与するSQL文の例を次に示します。

(例)

認可識別子がCADMINのHADBユーザを作成し,そのHADBユーザに暗号管理権限とCONNECT権限を付与します。

CREATE USER "CADMIN" IDENTIFIED BY 'Password01'
GRANT CRYPTO ADMIN,CONNECT TO "CADMIN"

(9) 表およびインデクスを再作成する

データベースの初期設定前に定義していた表およびインデクスを再定義し,表にデータをインポートしてください。また,表に対するアクセス権限も付与してください。手順を次に示します。

手順

  1. およびインデクスを再定義する

    データベースの初期設定前に定義していたおよびインデクスをCREATE TABLE文とCREATE INDEX文で再定義してください。

    (4) 表およびインデクスの定義情報を取得する」で取得した次の情報を使用しておよびインデクスを再定義します。

    • およびインデクスの定義情報

    • およびインデクスを格納しているデータ用DBエリアの情報

    メモ
    • この作業は,データベース管理の担当者が実施してください。定義する表またはインデクスのスキーマ名と同じ認可識別子のHADBユーザを使用して,表またはインデクスを定義してください。

    • データベース管理の担当者は,定義する表またはインデクスのスキーマ名に合わせて,使用するHADBユーザを変えて作業します。そのため,同じスキーマ名の表とインデクスをまとめて定義した方が,HADBユーザを変更する手間が少なくなります。

    スキーマが定義されていない場合は,CREATE SCHEMA文でスキーマを定義してください。

  2. ビュー表を再定義する

    データベースの初期設定前に定義していたビュー表をCREATE VIEW文で再定義してください。

    (4) 表およびインデクスの定義情報を取得する」で取得した,ビュー表の定義情報を使用してビュー表を再定義します。

    メモ
    • (4) 表およびインデクスの定義情報を取得する」で取得したビュー表の定義情報には,全ビュー表の定義情報が出力されています。出力されているビュー表順に(上から順に)ビュー表を定義してください。

    • この作業は,データベース管理の担当者が実施してください。定義するビュー表のスキーマ名と同じ認可識別子のHADBユーザを使用してビュー表を定義してください。

  3. 表に対するアクセス権限を付与する

    再定義した表に対するアクセス権限をGRANT文で付与してください。

    メモ

    この作業は,データベース管理の担当者が実施してください。使用するHADBユーザは次の手順の中で説明しています。

    (4) 表およびインデクスの定義情報を取得する」で取得した,表に対するアクセス権限の情報を使用して,次の手順でアクセス権限を付与します。

    1. GRANTOR列の値 = OWNER列の値」かつ「GRANTOR列の値≠GRANTEE列の値」の行がある場合,GRANTOR列に出力されているHADBユーザで,GRANTEE列に出力されているHADBユーザにアクセス権限を付与します。各種アクセス権限を持っているかどうかを示す列の値によって,付与するアクセス権限が異なります。'G'が出力されている場合は,付与権付きでアクセス権限を付与します。'Y'が出力されている場合は,アクセス権限を付与します。'N'が出力されている場合は,アクセス権限を付与しません。

    2. 「a.でアクセス権限を付与されたHADBユーザ = GRANTOR列の値」の行がある場合,GRANTOR列に出力されているHADBユーザで,GRANTEE列に出力されているHADBユーザにアクセス権限を付与します。各種アクセス権限を持っているかどうかを示す列の値によって,付与するアクセス権限が異なります。'G'が出力されている場合は,付与権付きでアクセス権限を付与します。'Y'が出力されている場合は,アクセス権限を付与します。'N'が出力されている場合は,アクセス権限を付与しません。

    3. b.の作業を「b.でアクセス権限を付与されたHADBユーザ = GRANTOR列の値」の行が出てこなくなるまで繰り返します。

    4. a.~c.の作業をすべての表に対して実行してください。

  4. 表にデータをインポートする

    adbimportコマンドを実行して,表にデータをインポートしてください。

    メモ

    この作業は,データベース管理の担当者が実施してください。表の所有者と同じ認可識別子のHADBユーザを使用してデータをインポートしてください。

  5. コスト情報を収集する

    adbgetcstコマンドを実行して,表のコスト情報を収集してください。

    (4) 表およびインデクスの定義情報を取得する」で取得した,コスト情報を収集している表の一覧を使用してください。一覧に表示されている表のコスト情報を収集します。

    メモ
    • この作業は,データベース管理の担当者が実施してください。コスト情報を収集する表のスキーマ名と同じ認可識別子のHADBユーザを使用してコスト情報を収集してください。

    • 収集したコスト情報は,データベースの初期設定前のコスト情報とは異なる可能性があります。そのため,データベースの初期設定前とはSQL文のアクセスパスが変わる可能性があります。

(10) 監査証跡機能,同義語検索の環境設定をする

(11) HADBユーザのユーザ認証方式とパスワードを変更する