2.4 データベースのインストール

ユーザアプリケーションは、環境設定データの保存や、ワークフローアクティビティのデータの保存など、さまざまなタスクにデータベースを使用します。Roles Based Provisioning Moduleおよびユーザアプリケーションをインストールする前に、インストールして設定されているプラットフォームに対してサポートされているデータベースが1つ存在する必要があります。以下のような機能があります。

メモ:新しいバージョンのRoles Based Provisioning Moduleへマイグレートする場合は、古いインストール(マイグレート元のインストール)で使用していたものと同じユーザアプリケーションデータベースを使用する必要があります。

2.4.1 MySQLデータベース設定上の注意事項

ユーザアプリケーションには、次に説明するようにMySQL向けの特定の環境設定オプションが必要です。

INNODBストレージエンジンとテーブルタイプ

ユーザアプリケーションはINNODBストレージエンジンを使用します。これにより、MySQLのINNODBテーブルタイプを選択できます。テーブルタイプを指定せずにMySQLテーブルを作成した場合、テーブルはデフォルトでMyISAMテーブルタイプを受け付けます。MySQLサーバが確実にINNODBを使用するようにするには、my.cnf (LinuxまたはSolarisの場合)またはmy.ini (Windowsの場合)に次のオプションが含まれていることを確認します。

default-table-type=innodb

このファイルにはskip-innodbオプションが含まれていてはなりません。

データベースのSQLスクリプトのCreate Table文にdefault-table-type=innodbオプションを設定する代わりとしてENGINE=InnoDBオプションを付加できます。

文字セット

サーバ全体またはデータベースのみに対し、文字セットとしてUTF-8を指定します。サーバ全体にUTF-8を指定するには、my.cnf (LinuxまたはSolaris)またはmy.ini (Windows)に以下のオプションを含めます。

character_set_server=utf8

次のコマンドを使用して、データベースの作成時にデータベースの文字セットを指定することもできます。

create database databasename character set utf8 collate utf8_bin;

データベースに文字セットを指定した場合、次の例のように、IDM-ds.xmlファイルのJDBC URLにも文字セットを指定する必要があります。

<connection-url>jdbc:mysql://localhost:3306/databasename?useUnicode=true&amp;characterEncoding=utf8&amp;connectionCollation=utf8_bin</connection-url>

大文字と小文字の区別

サーバまたはプラットフォーム全体でデータをバックアップおよびリストアする計画の場合は、大文字と小文字の区別がサーバまたはプラットフォーム全体で統一されていることを確認します。統一されているかどうかを確認するには、デフォルトをそのまま使用するのではなく(Windowsではデフォルトで0に、Linuxではデフォルトで1に設定されます)、すべてのmy.cnfファイル(LinuxまたはSolarisの場合)またはmy.iniファイル(Windowsの場合)のlower_case_table_namesに同じ値 (0または1)を指定します。データベースを作成してIdentity Managerのテーブルを作成する前に、この値を指定します。たとえば、次のように指定します。

lower_case_table_names=1

これは、データベースのバックアップおよびリストアを計画しているすべてのプラットフォームのmy.cnfおよびmy.iniファイルに指定します。

Ansi設定

my.cnfファイル(Linuxの場合)またはmy.iniファイル(Windowsの場合) に、ansiエントリを追加する必要があります。このエントリを追加しないと、RBPMテーブルは作成されますがテーブルの初期データロードが実行されず、ゲストコンテナページの定義が見つかりませんというエラーメッセージが表示されます。

ansiエントリの追加後に、my.cnf (またはmy.ini)ファイルがどのように見えるかここで示します。

# These variables are required for IDM User Application
character_set_server=utf8
default-table-type=innodb

# Put the server in ANSI SQL mode.
#See http://www.mysql.com/doc/en/ANSI_mode.html
ansi

ansiモードを使用する変更が有効になったことを確認するには、MySQLサーバで次のSQLを実行します。

mysql> select @@global.sql_mode;
+-------------------------------------------------------------+
| @@global.sql_mode                                           |
+-------------------------------------------------------------+
| REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

ユーザアカウント要件

インストールプロセス時に使用するユーザアカウントはユーザアプリケーションによって使用されるデータベース(の所有者となる)への完全なアクセス権を持っている必要があります。また、このアカウントではシステムのテーブルのへのアクセスが必要です。環境に応じてテーブルは異なります。

MySQLサーバにログインするユーザを作成し、そのユーザに権限を与えます。たとえば次のようにします。

GRANT ALL PRIVILEGES ON <dbname.>* TO <username>@ <host> IDENTIFIED BY ‘ password’

最小の権限のセットは、CREATE、INDEX、INSERT、UPDATE、DELETE、およびLOCK TABLESです。GRANTコマンドのマニュアルについては、http://www.mysql.org/doc/refman/5.0/en/grant.htmlを参照してください。

重要:ユーザアカウントはmysql.userテーブルへの選択権を持つ必要があります。ここに、適切な権利を付与するために必要なSQL構文を示します。

USE mysql;
GRANT SELECT ON mysql.user TO <username>@<host>;

2.4.2 Oracleデータベース設定上の注意事項

Oracleデータベースを作成する場合、必ずAL32UTF8を使用してUnicodeエンコードの文字セットを指定する必要があります。(AL32UTF8を参照してください)。

Oracleデータベースのユーザを作成する場合、SQL Plusユーティリティを使用して次の文を発行する必要があります。これらのステートメントにより、ユーザが作成され、ユーザの権限が設定されます。ユーザにCONNECTおよびRESOURCE権限を与えます。次を参照してください。

CREATE USER idmuser IDENTIFIED BY password

GRANT CONNECT, RESOURCE to idmuser

Oracle 11gの場合のUTF-8: Oracle 11gの場合、UTF-8が有効であることを確認するには次のコマンドを発行します。

select * from nls_database_parameters;

UTF-8が設定されていない場合、このデータが返されます。

NLS_CHARACTERSET
WE8MSWIN1252

UTF-8が設定されている場合、このデータが返されます。

NLS_CHARACTERSET
AL32UTF8

2.4.3 MS SQLサーバデータベース設定の注意事項

MS SQLサーバデータベースを次のように設定します。

  1. MS SQL Serverをインストールします。

  2. サーバに接続し、データベースとデータベースユーザを作成するアプリケーションを開きます(通常は、SQL Server Management Studioアプリケーション)。

  3. データベースを作成します。SQL Serverでは、データベースの文字セットの選択はできません。ユーザアプリケーションはSQLサーバの文字データをNCHARカラムタイプ(UTF-8をサポート)で保存します。

  4. ログインを作成します。

  5. ログインをデータベースのユーザとして追加します。

  6. ログインに次の権限を与えます。CREATE TABLE、CREATE INDEX、SELECT、INSERT、UPDATE、およびDELETE。

ユーザアプリケーションには、Microsoft SQL Server 2008 JDBCドライバのバージョン3.0.3.0.1119.0が必要です。Sun Solaris、Red Hat Linux、およびWindows 2000以降のオペレーティングシステムのみが、このJDBCドライバで公式にサポートされています。

2.4.4 DB2データベース設定の注意事項

このセクションでは、DB2設定についての注意事項について説明します。

データベースドライバJARの準備

データベースドライバJARファイルは、[データベースユーザ名およびパスワード]画面でインストールプロセス時に選択する必要があります。ただし、[データベースドライバJARファイル]フィールドのブラウズボタンによってのみ、1つのjarを選択できます。DB2の場合、2つのjarを指定する必要があります。

  • db2jcc.jar

  • db2jcc_license_cu.jar

したがって、WebSphere (DB2でサポートされる唯一のアプリケーションサーバ)に対してインストールプログラムを実行する場合、1つのjarを選択できますが、インストールプログラムが実行中のオペレーティングシステムの正しいファイル区切り文字を使用して2番目のものを手動で入力する必要があります。または、両方のエントリを手動で入力することもできます。

Windowsの場合の例:

c:\db2jars\db2jcc.jar;c:\db2jars\db2jcc_license_cu.jar

SolarisおよびLinuxの場合の例:

/home/lab/db2jars/db2jcc.jar:/home/lab/db2jcc_license_cu.jar

デッドロックおよびタイムアウトを防ぐためのDB2データベースの調整

DB2を使用する際、デッドロックまたはタイムアウトにより、現在のトランザクションがロールバックされたという内容のエラーが発生した場合、高いレベルのユーザおよびデータベースの同時並行性によって問題が発生している可能性があります。

DB2は、コストベースのオプティマイザの調整を含む、ロック競合を解決するための多くの技術を提供しています。DB2管理マニュアルに含まれている『パフォーマンスガイド』は、調整に関する多くの情報が記載されている優れたソースです。

同時並行性のレベルおよびデータのサイズは異なるため、すべてのインストールに対して使用できる、事前に設定された調整値はありません。ただし、インストールに関連するDB2調整ヒントはいくつかあります。

  • reorgchk update statisticsコマンドは、オプティマイザによって使用される統計を更新します。これらの統計の周期的な更新により問題を緩和できます。

  • DB2レジストリパラメータDB2_RR_TO_RSを使用すると、挿入または更新された行の次のキーをロックしないことによって、同時並行性が向上します。

  • データベースのMAXLOCKSパラメータおよびLOCKLISTパラメータを増加します。

  • データベース接続プールのcurrentLockTimeoutプロパティを増加します。

  • Database Configuration Advisorを使用して、トランザクションの速度を上げるために最適化します。

  • すべてのユーザアプリケーションテーブルをVOLATILEに変更して、テーブルの重要性が大幅に異なることをオプティマイザに示します。たとえば、AFACTIVITYテーブルをVOLATILEにするには、ALTER TABLE AFACTIVITY VOLATILEのコマンドを発行します。

    ALTER TABLEコマンドは、ユーザアプリケーションが一度開始されてデータベーステーブルが作成された後で実行する必要があります。このステートメントの詳細については、ALTER TABLEマニュアルを参照してください。すべてのユーザアプリケーションテーブルに対するSQLステートメントを示します。

    ALTER TABLE AFACTIVITY VOLATILE
    ALTER TABLE AFACTIVITYTIMERTASKS VOLATILE
    ALTER TABLE AFBRANCH VOLATILE
    ALTER TABLE AFCOMMENT VOLATILE
    ALTER TABLE AFDOCUMENT VOLATILE
    ALTER TABLE AFENGINE VOLATILE
    ALTER TABLE AFENGINESTATE VOLATILE
    ALTER TABLE AFMODEL VOLATILE
    ALTER TABLE AFPROCESS VOLATILE
    ALTER TABLE AFPROVISIONINGSTATUS VOLATILE
    ALTER TABLE AFQUORUM VOLATILE
    ALTER TABLE AFRESOURCEREQUESTINFO VOLATILE
    ALTER TABLE AFWORKTASK VOLATILE
    ALTER TABLE AF_ROLE_REQUEST_STATUS VOLATILE
    ALTER TABLE ATTESTATION_ATTESTER VOLATILE
    ALTER TABLE ATTESTATION_ATTRIBUTE VOLATILE
    ALTER TABLE ATTESTATION_QUESTION VOLATILE
    ALTER TABLE ATTESTATION_REPORT VOLATILE
    ALTER TABLE ATTESTATION_REQUEST VOLATILE
    ALTER TABLE ATTESTATION_RESPONSE VOLATILE
    ALTER TABLE ATTESTATION_SURVEY_QUESTION VOLATILE
    ALTER TABLE ATTESTATION_TARGET VOLATILE
    ALTER TABLE AUTHPROPS VOLATILE
    ALTER TABLE DATABASECHANGELOG VOLATILE
    ALTER TABLE DATABASECHANGELOGLOCK VOLATILE
    ALTER TABLE DSS_APPLET_BROWSER_TYPES VOLATILE
    ALTER TABLE DSS_APPLET_CFG VOLATILE
    ALTER TABLE DSS_APPLET_CFG_MAP VOLATILE
    ALTER TABLE DSS_BROWSER_TYPE VOLATILE
    ALTER TABLE DSS_CONFIG VOLATILE
    ALTER TABLE DSS_EXT_KEY_USAGE_RESTRICTION VOLATILE
    ALTER TABLE DSS_USR_POLICY_SET VOLATILE
    ALTER TABLE JBM_COUNTER VOLATILE
    ALTER TABLE JBM_DUAL VOLATILE
    ALTER TABLE JBM_ID_CACHE VOLATILE
    ALTER TABLE JBM_MSG VOLATILE
    ALTER TABLE JBM_MSG_REF VOLATILE
    ALTER TABLE JBM_POSTOFFICE VOLATILE
    ALTER TABLE JBM_ROLE VOLATILE
    ALTER TABLE JBM_TX VOLATILE
    ALTER TABLE JBM_USER VOLATILE
    ALTER TABLE PORTALCATEGORY VOLATILE
    ALTER TABLE PORTALPORTLETHANDLES VOLATILE
    ALTER TABLE PORTALPORTLETSETTINGS VOLATILE
    ALTER TABLE PORTALPRODUCERREGISTRY VOLATILE
    ALTER TABLE PORTALPRODUCERS VOLATILE
    ALTER TABLE PORTALREGISTRY VOLATILE
    ALTER TABLE PROFILEGROUPPREFERENCES VOLATILE
    ALTER TABLE PROFILEUSERPREFERENCES VOLATILE
    ALTER TABLE PROVISIONING_CODE_MAP VOLATILE
    ALTER TABLE PROVISIONING_CODE_MAP_LABEL VOLATILE
    ALTER TABLE PROVISIONING_VIEW_VALUE VOLATILE
    ALTER TABLE PROVISIONING_VIEW_VALUE_LABEL VOLATILE
    ALTER TABLE SECURITYACCESSRIGHTS VOLATILE
    ALTER TABLE SECURITYPERMISSIONMETA VOLATILE
    ALTER TABLE SECURITYPERMISSIONS VOLATILE
    ALTER TABLE SEC_DELPROXY_CFG VOLATILE
    ALTER TABLE SEC_DELPROXY_SRV_CFG VOLATILE
    ALTER TABLE SEC_SYNC_CLEANUP_QUEUE VOLATILE