User Application 使用数据库来完成各项任务,如储存配置数据和任何工作流程活动的数据。安装Roles Based Provisioning Module和 User Application 前,必须已安装并配置在您的平台上受支持的数据库之一。其中包括:
安装数据库和数据库驱动程序。
创建数据库或数据库实例。
记录以下数据库参数,以便在 User Application 的安装过程中使用:
主机和端口
数据库名称、用户名和用户口令
创建指向该数据库的数据源文件。
方法因应用程序服务器而异。对于 JBoss,User Application 安装程序创建指向数据库的应用程序服务器数据源文件,并根据 Identity Manager Roles Based Provisioning Module WAR 文件的名称来命名文件。对于 WebSphere 和 WebLogic,请在安装前手动配置数据源。
对于 Unicode 编码,必须启用数据库。
User Application 要求数据库字符集使用 Unicode 编码。例如,UTF‑8 就是一种使用 Unicode 编码的字符集,而 Latin1 则不使用 Unicode 编码。在安装 User Application 之前,请校验您的数据库是否是用 Unicode 编码的字符集配置的。
注:如果正要迁移到Roles Based Provisioning Module的新版本,则必须使用之前安装(即要迁移的源安装版本)所用的同一 User Application 数据库。
User Application 对于 MySQL 需要特定的配置选项,如下所述:
User Application 使用了 INNODB 储存引擎,通过它可以选择为 MySQL 指定 INNODB 表类型。如果创建 MySQL 表时没有指定表类型,默认情况下,该表采用 MyISAM 表类型。为确保 MySQL 服务器使用 INNODB,请校验 my.cnf(Linux 或 Solaris)或 my.ini (Windows) 中包含以下选项:
default-table-type=innodb
它不应包含 skip-innodb 选项。
设置 default-table-type=innodb 选项的备选方法是,可以将 ENGINE=InnoDB 选项追加到数据库的 SQL 脚本中的 Create Table 语句。
将整个服务器或仅仅某个数据库的字符集指定为 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>
如果计划跨服务器或平台备份或恢复数据,请确保所有服务器或平台上的大小写保持一致。要确保该一致性,请为所有 my.cnf(Linux 或 Solaris)或 my.ini (Windows) 文件中的 lower_case_table_names 指定相同的值(0 或 1),而不是接受默认值(Windows 默认为 0,而 Linux 默认为 1。) 请在创建数据库保存 Identity Manager 表之前指定该值。例如,对于所有计划备份和恢复数据库的平台,可以指定
lower_case_table_names=1
(在 my.cnf 和 my.ini 文件中)。
需要将 ansi 条目添加到 my.cnf(在 Linux 上)或 my.ini 文件(在 Windows 上)中。如果不添加此项,则将创建 RBPM 表,但不会执行此表的初始数据加载,并且可能显示找不到 Guest 容器页面定义
错误讯息。
添加 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)
在安装过程中所用的用户帐户必须具有对 User Application 将要使用的数据库的完全访问权限(即是此数据库的拥有者)。此外,此帐户还需要对系统中的表的访问权限。根据环境的不同,表可能有所不同。
创建用户以登录 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 Server 数据库:
安装 MS SQL Server。
连接服务器并打开创建数据库和数据库用户的应用程序(通常是 SQL Server Management Studio 应用程序)。
创建一个数据库。SQL Server 不允许用户选择数据库的字符集。 User Application 以支持 UTF‑8 的 NCHAR 列类型储存 SQL Server 字符数据。
创建登录。
作为数据库用户添加登录。
将以下特权授予登录:CREATE TABLE、CREATE INDEX、SELECT、INSERT、UPDATE 和 DELETE。
User Application 要求使用 Microsoft SQL Server 2008 JDBC 驱动程序版本 3.0.3.0.1119.0。 请注意,此 JDBC 驱动程序仅官方支持 Sun Solaris、Red Hat Linux 和 Windows 2000 或更高版本的操作系统。
本节提供有关 DB2 配置的说明。
安装过程中,需要在
屏幕上选定数据库驱动程序 JAR 文件。但 字段的浏览按钮仅允许您选择一个 (1) JAR。对于 DB2,必须提供两个 (2) JAR:db2jcc.jar
db2jcc_license_cu.jar
因此,如果正在运行针对 WebSphere(DB2 唯一支持的应用程序服务器)的安装程序,可以选择一个 JAR,但应使用对于正在运行安装程序的操作系统而言正确的文件分隔符手动输入第二个 JAR。或者,可以手动输入上述两项。
例如,在 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,为加快事务处理进行优化。
将所有 User Application 表变为 VOLATILE,向优化程序指示表的基数将有显著变化。例如,要使 AFACTIVITY 表变为 VOLATILE,可发出命令:ALTER TABLE AFACTIVITY VOLATILE
User Application 启动一次并且创建数据库表之后,必须运行 ALTER TABLE 命令。有关该语句的更多信息,请参见 ALTER TABLE 文档。以下是适用于所有 User Application 表的 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