付録C.9 アクセス権の移行

uCosminexus Portal Framework 06-11以降,従来のバージョンとアクセス権の考え方が変更されています。このため,Cosminexus Portal Framework 06-10以前のバージョンからバージョンアップする場合で,Collaboration - Online Community Management連携を使用するときは,アクセス権を移行する必要があります。ここでは,アクセス権の移行手順について説明します。

なお,変更後のアクセス権の考え方については,「付録D Collaboration - Online Community Managementを使用する場合の設定」を参照してください。

<この項の構成>
(1) 前提条件
(2) アクセス権の移行手順
(3) 障害発生時の対応

(1) 前提条件

アクセス権の移行作業で,前提となるプログラムプロダクトは次のとおりです。

なお,移行前のDBは,Cosminexus Portal Framework 06-00またはCosminexus Portal Framework 06-10環境で作成され,ポータル管理グループ情報が設定済みであることを前提とします。

(2) アクセス権の移行手順

手順を次に示します。

  1. 移行の対象となるテーブルのバックアップを取得します。
    移行の対象となるテーブルは次のとおりです。
    • PORTAL_GROUP
    • PORTAL_PORTLET
  2. 移行の対象となるHiRDBのRDエリアのバックアップを取得します。
    バックアップ対象となるRDエリア名称は,create.sqlに定義されています。
    create.sqlの格納ディレクトリを次に示します。
    格納ディレクトリ
    {uCosminexus Portal Frameworkインストールディレクトリ}¥samples¥config¥empowermentdb
     
    なお,{uCosminexus Portal Frameworkインストールディレクトリ}はuCosminexus Portal Framework 07-00以降のインストールディレクトリを表します。
    create.sqlの内容を次に示します。なお,太字部分がバックアップ対象となるRD名称です。

    CREATE TABLE PORTAL_GROUP
    (
       PORTALGROUPNAME VARCHAR (20) PRIMARY KEY,
       LOCATION VARCHAR(20),
       COMMUNITYID VARCHAR(40),
       PORTALGROUPTITLE MVARCHAR(256) NOT NULL,
       PORTALGROUPDESC MVARCHAR(600),
       PORTALGROUPTITLES BLOB(12000) IN LOBPORTAL1,
       ALLOWLISTCONTROL BLOB(64000) IN LOBPORTAL2,
       ALLOWLISTUSE BLOB(64000) IN LOBPORTAL3,
       GROUPUPDATECD VARCHAR(20),
       DELETEFLG VARCHAR(1)
    ) IN RDPORTAL;

    CREATE TABLE PORTAL_LAYOUT
    (
       PORTALGROUPNAME VARCHAR(20) NOT NULL,
       ENTRYID VARCHAR(20) PRIMARY KEY,
       LOCATION VARCHAR(20) NOT NULL,
       ENTRYTYPE VARCHAR(20),
       ENTRYNAME VARCHAR(80) NOT NULL,
       ENTRYTITLE MVARCHAR(256),
       ENTRYPARENT VARCHAR(80),
       ENTRYDESC MVARCHAR(600),
       ENTRYPARAMETER BLOB(64000) IN LOBPORTAL4,
       ENTRYTITLES BLOB(12000) IN LOBPORTAL5,
       ENTRYUPDATECD VARCHAR(20),
       INSTANCETYPE VARCHAR(20),
       DELETEFLG VARCHAR(1)
    ) IN RDPORTAL;

    CREATE TABLE PORTAL_PORTLET
    (
       PORTALGROUPNAME VARCHAR(20) NOT NULL,
       ENTRYID VARCHAR(20) PRIMARY KEY,
       LOCATION VARCHAR(20) NOT NULL,
       ENTRYTYPE VARCHAR(20),
       ENTRYNAME VARCHAR(80) NOT NULL,
       ENTRYTITLE MVARCHAR(256),
       ENTRYPARENT VARCHAR(80),
       ENTRYDESC MVARCHAR(600),
       ENTRYPARAMETER BLOB(64000) IN LOBPORTAL6,
       ENTRYTITLES BLOB(12000) IN LOBPORTAL7,
       ENTRYUPDATECD VARCHAR(20),
       INSTANCETYPE VARCHAR(20),
       DELETEFLG VARCHAR(1)
    ) IN RDPORTAL;

             :

  3. アクセス権を移行するための実行定義ファイルを変更します。
    アクセス権を移行する前に,各環境に合わせて実行定義ファイル(dbconvfrom0610.properties)を変更します。
    dbconvfrom0610.propertiesファイルは次のディレクトリに格納されています。
    格納ディレクトリ
    {uCosminexus Portal Frameworkインストールディレクトリ}¥samples¥config¥empowermentdb
     
    dbconvfrom0610.propertiesファイルの定義例を次に示します。なお,太字の部分は編集が必要な個所です。
    dbconvfrom0610.propertiesファイルの定義例

    empowermentdb.add.portlet.tool.driver=JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDriver
    empowermentdb.add.portlet.tool.jdbcurl=jdbc:hitachi:dbplib://DB=HIRDB,DBID=22200※1,DBHOST=localhost※2,ENCODELANG=UTF-8
    empowermentdb.add.portlet.tool.groupname=CollaborationHome※3
    empowermentdb.add.portlet.tool.commit.count=1000※4

    empowermentdb.add.portlet.tool.portal_group.select_community.sql=SELECT PORTALGROUPNAME FROM PORTAL_GROUP WHERE DELETEFLG <> '1' AND COMMUNITYID IS NOT NULL WITHOUT LOCK NOWAIT

    注※1 DBIDの部分にDBのポート番号を指定します。
    注※2 DBHOSTの部分にDBのIPアドレスを指定します。
    注※3 新規追加する全ユーザ所属グループのグループ名称を指定します。省略した場合は「CollaborationHome」となります。
    注※4 一度のトランザクションで追加する最大レコード数(1~2,147,483,647)を指定します。この指定は省略できます。
  4. アクセス権移行ツールの実行環境を定義します。
    アクセス権移行ツールを実行する前に,実行環境を設定します。
    次の環境変数に正しい値を定義してください。
    • JAVA_HOME
      JDKのインストールディレクトリです。JAVA_HOMEには""を付与しないでください。
      次のとおり定義します。

    {uCosminexusインストールディレクトリ}¥jdk

    • COSMINEXUS_PORTAL_CLASSPATH
      ツール起動時のクラスパスです。uCosminexus Portal Frameworkをインストールしたときに,自動的に環境変数へ登録されます。
      {uCosminexus Portal Frameworkインストールディレクトリ}¥lib配下の各種jarファイルにパスが設定されている事を確認してください。ただし,portletwebsso.jar,およびportletwebssolib.jarは設定されません。なお,値には""を付与しないでください。
    • CLASSPATH
      JDBCドライバのクラスパスを追加します。クラスパスには""を付与しないでください。
      定義例を次に示します。

    {uCosminexusインストールディレクトリ}¥DABJ¥JdbcDbpsv.jar

  5. アクセス権移行ツールを実行します。
    APサーバでアクセス権移行ツール(DBConvertFrom0610.bat)を実行し,Cosminexus Portal Framework 06-00またはCosminexus Portal Framework 06-10のDB構成から,uCosminexus Portal Framework 07-00以降のDB構成に移行します。
    DBConvertFrom0610.batファイルは次のディレクトリに格納されています。なお,実行する際はこのディレクトリをカレントディレクトリとして実行してください。
    格納ディレクトリ
    {uCosminexus Portal Frameworkインストールディレクトリ}¥samples¥config¥empowermentdb
     
    アクセス権移行ツールの実行例を次に示します。

    DBConvertFrom0610.bat ¥“root¥” ¥“root¥”

    DBConvertFrom0610.batの引数には次の値を指定します。
    第1引数
    移行処理を行なうDBのユーザ名。「"」や「'」がある場合は「¥"」「¥'」に置き換えてください。
    第2引数
    第1引数に指定したユーザ名に対応するパスワード。「"」や「'」がある場合は「¥"」「¥'」に置き換えてください。
    実行結果はログファイル(dbconvfrom0610.log)としてカレントディレクトリに出力されます。
    なお,同名ファイルがある場合は上書きされます。アクセス権移行ツールを複数回実行する場合は,必ずdbconvfrom0610.logファイルのバックアップを取得してください。
    以上で,アクセス権の移行は終了です。続いて,移行結果を確認します。
  6. コマンドを実行し,HiRDBへログインするための環境変数を設定します。
    実行するコマンドを次に示します。なお,ユーザ名,パスワードには,それぞれHiRDBのログインユーザ名,パスワードを指定します。

    set pduser={ユーザ名}/{パスワード}

  7. 確認作業用SQLを実行します。SQL文は2種類実行されます。
    確認作業用SQL(dbconvfrom0610check.sql)は次のディレクトリに格納されています。
    格納ディレクトリ
    {uCosminexus Portal Frameworkインストールディレクトリ}¥samples¥config¥empowermentdb
     
    実行するコマンドを次に示します。

    pdsql -h DBのホスト名またはIPアドレス -n ポート番号 < dbconvfrom0610check.sql

    画面上に出力されたSQL実行結果と,手順5.で出力されたdbconvfrom0610.logファイルの内容を確認します。最初に実行されたSQL文の実行結果を「SQL文実行結果1」として,2番目に実行されたSQL文の実行結果を「SQL文実行結果2」とします。

    図C-4 SQL文実行結果例

    [図データ]

    次の2点を確認します。
    • Collaboration - Online Community Management連携で作成したグループのポートレット利用権限が削除されていること
      SQL文実行結果1で,「KFPA12100-I No rows satisfying search condition」が出力されていることを確認します。1レコードも検索されていなければ成功です。
      1レコード以上検索された場合には,ログファイルのバックアップを取得し,再度アクセス権移行ツールを実行してください。
    • 新規グループ"CollaborationHome"にポートレットが追加されていること
      ログファイルをテキストエディタなどで開き,内容を確認します。アクセス権移行ツールの初回実行時にエラーが発生し,再度実行した場合には,初回実行時のログファイルを確認してください。
      「portlets are …」と記述されている行の下のリストとSQL文実行結果2を比較し,含まれるポートレット名が同じであれば成功です。なお,ポートレット名の記述順は関係ありません。

      図C-5 移行の確認内容

      [図データ]

      なお,ポートレット名が一致しない場合は,次のように対処してください。
       
      SQL文の実行結果に含まれないポートレットがログに出力されたポートレット名のリストに含まれている場合
      ログファイルのバックアップを取得し,再度アクセス権移行ツールを実行してください。
       
      上記以外の場合
      今回のアクセス権移行ツールの実行以前に,アクセス権移行ツールが実行されている可能性があります。バックアップデータをリストアした後,すでに「CollaborationHome」,または対応するグループが存在するかどうかを,運用管理ポートレットで確認してください。なお,「CollaborationHome」は,実行定義ファイル(dbconvfrom0610.properties)で,名称が変更されていることがあります。実行定義ファイルの「empowermentdb.add.portlet.tool.groupname」に指定されている名称のグループが存在するかどうかも確認してください。
      存在する場合:すでに移行後のデータ構成になっています。
      存在しない場合:バックアップデータをリストア後,再度移行ツールを実行してください。

(3) 障害発生時の対応

アクセス権移行ツールの実行中にエラーが発生した場合,次の2点を確認してください。

誤りがあった場合,誤りを訂正したあと,アクセス権移行ツールを再実行してください。

また,一度のトランザクションで追加するポートレットの最大レコード数(empowermentdb.add.portlet.tool.commit.count)が多過ぎる場合があります。この場合は実行定義ファイル(dbconvfrom0610.properties)で最大レコード数を小さい値に変更してください。

設定値を修正したあと,アクセス権移行ツールを再実行してください。

定義に誤りがないのに再度エラーが起きる場合や,エラー後にアクセス権移行ツールが起動しなくなった場合は,事前にバックアップしたDBをリストアしたあと,もう一度「(2) アクセス権の移行手順」に従って,アクセス権の移行を実施してください。