ユーザアプリケーションは、環境設定データの保存や、ワークフローアクティビティのデータの保存など、さまざまなタスクにデータベースを使用します。Roles Based Provisioning Moduleおよびユーザアプリケーションをインストールする前に、インストールして設定されているプラットフォームに対してサポートされているデータベースが1つ存在する必要があります。以下のような機能があります。
データベースおよびデータベースドライバのインストール
データベースまたはデータベースインスタンスの作成
ユーザアプリケーションのインストール手順で使用する次のデータベースパラメータを記録する
ホストおよびポート
データベース名、ユーザ名、およびユーザパスワード
データベースをポイントするデータソースファイルの作成
方法はアプリケーションサーバに応じて変わります。JBossの場合は、ユーザアプリケーションインストールプログラムが、データベースを指すアプリケーションサーバのデータソースファイルを作成し、Identity Manager Roles Based Provisioning Module WARファイルの名前に基づいてファイルに名前を付けます。WebSphereおよびWebLogicの場合は、インストール前に手動でデータソースを設定します。
データベースでUnicodeエンコードが有効である必要があります。
ユーザアプリケーションには、Unicodeエンコード方式を使用するデータベース文字セットが必要です。たとえば、UTF-8はUnicodeエンコード方式を使用する文字セットですが、Latin1はUnicodeエンコード方式を使用しません。ユーザアプリケーションをインストールする前に、データベースがUnicodeエンコード方式がある文字セットで設定されていることを確認してください。
メモ:新しいバージョンのRoles Based Provisioning Moduleへマイグレートする場合は、古いインストール(マイグレート元のインストール)で使用していたものと同じユーザアプリケーションデータベースを使用する必要があります。
ユーザアプリケーションには、次に説明するようにMySQL向けの特定の環境設定オプションが必要です。
ユーザアプリケーションは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&characterEncoding=utf8&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ファイルに指定します。
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>;
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
MS SQLサーバデータベースを次のように設定します。
MS SQL Serverをインストールします。
サーバに接続し、データベースとデータベースユーザを作成するアプリケーションを開きます(通常は、SQL Server Management Studioアプリケーション)。
データベースを作成します。SQL Serverでは、データベースの文字セットの選択はできません。ユーザアプリケーションはSQLサーバの文字データをNCHARカラムタイプ(UTF-8をサポート)で保存します。
ログインを作成します。
ログインをデータベースのユーザとして追加します。
ログインに次の権限を与えます。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ドライバで公式にサポートされています。
このセクションでは、DB2設定についての注意事項について説明します。
データベースドライバ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調整ヒントはいくつかあります。
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