2.4 Installieren einer Datenbank

Die Benutzeranwendung verwendet eine Datenbank für eine Reihe bestimmter Aufgaben, z. B. zum Speichern von Konfigurationsdaten und von Daten aus Workflow-Aktivitäten. Bevor Sie das rollenbasierte Bereitstellungsmodul und die Benutzeranwendung installieren können, müssen Sie eine der unterstützten Datenbanken für Ihre Plattform installiert und konfiguriert haben. Dies beinhaltet:

HINWEIS:Wenn Sie auf eine neue Version des rollenbasierten Bereitstellungsmoduls migrieren, müssen Sie die gleiche Benutzeranwendungsdatenbank verwenden, die Sie für die vorherige Installation verwendet haben (d. h. die Installation, von der aus Sie migrieren.)

2.4.1 Hinweise zum Konfigurieren einer MySQL-Datenbank

Die Benutzeranwendung erfordert einige Konfigurationsoptionen für MySQL. Wenn Sie selbst MySQL installieren, konfigurieren Sie diese Einstellungen. Wenn Sie MySQL mithilfe des JBossMysql-Dienstprogramms installieren, nimmt das Dienstprogramm die richtigen Einstellungen vor. Sie benötigen diese Werte allerdings für die folgenden Elemente:

INNODB-Storage-Engine und Tabellentypen

Die Benutzeranwendung verwendet die INNODB-Storage-Engine, sodass Sie INNODB-Tabellentypen für MySQL auswählen können. Wenn Sie eine MySQL-Tabelle erstellen, ohne den Tabellentyp anzugeben, wird der Tabelle standardmäßig der Tabellentyp „MyISAM“ zugeordnet. Wenn Sie MySQL während der Installation von Identity Manager installieren, wird für MySQL der Tabellentyp „INNODB“ festgelegt. Sie können sicherstellen, dass Ihr MySQL-Server INNODB verwendet, indem Sie überprüfen, ob my.cnf (Linux oder Solaris) oder my.ini (Windows) die folgende Option enthält:

default-table-type=innodb

Die Option skip-innodb darf nicht enthalten sein.

Alternativ zum Festlegen der Option default-table-type=innodb können Sie die Option ENGINE=InnoDB an die "Create Table"-Anweisungen im SQL-Skript für Ihre Datenbank anhängen.

Zeichensatz

Legen Sie UTF-8 als Zeichensatz für den gesamten Server oder nur für eine Datenbank fest. Legen Sie UTF-8 serverübergreifend fest, indem Sie die folgende Option in my.cnf (Linux oder Solaris) oder my.ini (Windows) aufnehmen:

character_set_server=utf8

Sie können auch den Zeichensatz für eine Datenbank bei ihrer Erstellung angeben, indem Sie den folgenden Befehl eingeben:

create database databasename character set utf8 collate utf8_bin;

Wenn Sie den Zeichensatz für die Datenbank festlegen, müssen Sie auch den Zeichensatz in der JDBC*-URL in der Datei IDM-ds.xml festlegen. Beispiel:

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

Beachtung der Groß- und Kleinschreibung

Stellen Sie sicher, dass die Beachtung der Groß- und Kleinschreibung server- bzw. plattformübergreifend einheitlich geregelt ist, falls Daten server- bzw. plattformübergreifend gesichert und wiederhergestellt werden. Sie können die Einheitlichkeit gewährleisten, indem Sie für lower_case_table_names in allen my.cnf-Dateien (Linux oder Solaris) oder my.ini-Dateien (Windows) denselben Wert angeben (0 oder 1), anstatt den vorgegebenen Wert zu übernehmen (die Windows-Vorgabe ist 0, die Linux-Vorgabe ist 1). Legen Sie diesen Wert fest, bevor Sie die Datenbank für die Identity Manager-Tabellen erstellen. Beispiel: Sie definieren

lower_case_table_names=1

in den my.cnf- und my.ini-Dateien für alle Plattformen, auf denen eine Datenbank gesichert und wiederhergestellt werden soll.

ANSI-Einstellung

Wenn Sie Ihr eigenes Installationsprogramm für MySQL 5.1 verwenden, müssen Sie den ansi-Eintrag zur Datei „my.cnf“ (Linux) bzw. „my.ini“ (Windows) hinzufügen. Wenn Sie diesen Eintrag nicht hinzufügen, werden die RBPM-Tabellen erstellt, aber die anfänglichen Daten werden nicht geladen und möglicherweise wird die Fehlermeldung Definition der Gast-Containerseite wurde nicht gefunden angezeigt.

Die Datei „my.cnf“ (bzw. „my.ini“) sollte folgendermaßen aussehen, nachdem Sie den ansi-Eintrag hinzugefügt haben:

# 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

Führen Sie zum Bestätigen, dass die Änderung auf Verwendung des ANSI-Modus wirksam wurde, die folgenden SQL-Anweisungen auf dem MySQL-Server aus:

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)

Benutzerkontoanforderungen

Das während der Installation verwendete Benutzerkonto muss Besitzer der Datenbank sein, die von der Benutzeranwendung verwendet wird. Zudem benötigt dieses Benutzerkonto Zugriff auf die Tabellen im System. Je nach Umgebung können die Tabellen unterschiedlich sein.

Erstellen Sie einen Benutzer zur Anmeldung beim MySQL-Server und gewähren Sie ihm Rechte. Beispiel:

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

Die mindestens erforderlichen Rechte sind: CREATE, INDEX, INSERT, UPDATE, DELETE und LOCK TABLES. Die Dokumentation zum GRANT-Befehl finden Sie unter http://www.mysql.org/doc/refman/5.0/en/grant.html.

WICHTIG:Das Benutzerkonto muss auch über „select“-Rechte für die mysql-Benutzertabelle verfügen. Die SQL-Syntax zum Gewähren der geeigneten Rechte:

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

2.4.2 Hinweise zum Konfigurieren einer Oracle-Datenbank

Stellen Sie beim Erstellen einer Oracle-Datenbank sicher, dass Sie „AL32UTF8“ zum Angeben eines Unicode-kodierten Zeichensatzes verwenden. (Siehe AL32UTF8 .)

Sie müssen beim Erstellen eines Benutzers für die Oracle-Datenbank die folgenden Anweisungen mithilfe des SQL Plus-Dienstprogramms ausführen. Diese Befehle erstellen den Benutzer und legen die Rechte des Benutzers fest. Erteilen Sie dem Benutzer CONNECT- und RESOURCE-Rechte, z. B.:

CREATE USER idm-Benutzer IDENTIFIED BY Passwort

GRANT CONNECT, RESOURCE to IDM-Benutzer

UTF-8 unter Oracle 11g Sie können unter Oracle 11g den folgenden Befehl ausführen, um zu bestätigen, dass UTF-8 aktiviert ist:

select * from nls_database_parameters;

Falls UTF-8 nicht eingerichtet ist, werden folgende Daten zurückgegeben:

NLS_CHARACTERSET
WE8MSWIN1252

Wenn UTF-8 eingerichtet ist, werden folgende Daten zurückgegeben:

NLS_CHARACTERSET
AL32UTF8

2.4.3 Hinweise zum Konfigurieren einer MS SQL Server-Datenbank

Richten Sie die MS SQL Server-Datenbank wie folgt ein:

  1. Installieren Sie den MS SQL-Server.

  2. Stellen Sie eine Verbindung zum Server her und öffnen Sie eine Anwendung zur Erstellung der Datenbank und des Datenbankbenutzers (üblicherweise die Anwendung "SQL Server Management Studio").

  3. Erstellen Sie eine Datenbank. SQL Server erlaubt es Benutzern nicht, den Zeichensatz für Datenbanken auszuwählen. Die IDM-Benutzeranwendung speichert SQL Server-Zeichendaten in einem NCHAR-Spaltentyp, der UTF-8 unterstützt.

  4. Erstellen Sie eine Anmeldung.

  5. Fügen Sie die Anmeldeinformationen für einen Benutzer der Datenbank hinzu.

  6. Erteilen Sie der Anmeldung die folgenden Rechte: CREATE TABLE, CREATE INDEX, SELECT, INSERT, UPDATE und DELETE.

Die Benutzeranwendung benötigt Version 1.0.809.102 des JDBC-Treibers für Microsoft SQL Server 2005. Beachten Sie, dass nur die Betriebssysteme Sun Solaris, Red Hat Linux und Windows 2000 oder höher mit diesem JDBC-Treiber offiziell unterstützt werden.

2.4.4 Hinweise zum Konfigurieren einer DB2-Datenbank

In diesem Abschnitt finden Sie Hinweise zum Konfigurieren von DB2.

Bereitstellen der Datenbanktreiber-JAR-Dateien

Die Datenbanktreiber-JAR-Dateien müssen während der Installation im Bildschirm Datenbankbenutzername und Passwort ausgewählt werden. Allerdings können Sie mithilfe der Schaltfläche „Durchsuchen“ des Felds Datenbanktreiber-JAR-Datei nur eine (1) JAR-Datei auswählen. Sie müssen für DB2 zwei (2) JAR-Dateien angeben:

  • db2jcc.jar

  • db2jcc_license_cu.jar

Wenn Sie also das Installationsprogramm mit WebSphere (dem einzigen Anwendungsserver, der für DB2 unterstützt wird) ausführen, können Sie nur eine JAR-Datei auswählen. Daher müssen Sie die zweite Datei manuell eingeben und dabei das richtige Dateitrennzeichen für das Betriebssystem verwenden, auf dem das Installationsprogramm ausgeführt wird. Alternativ können Sie beide Dateinamen manuell eingeben.

Zum Beispiel unter Windows:

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

Beispielsweise unter Solaris und Linux:

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

DB2-Datenbanken optimieren, um Deadlocks und Zeitüberschreitungen zu verhindern

Wenn Sie bei der Verwendung von DB2 eine Fehlermeldung erhalten, die besagt, dass aufgrund eines Deadlocks oder einer Zeitüberschreitung die aktuelle Transaktion rückabgewickelt wurde, kann dies auf eine hohe gleichzeitige Datenbanknutzung zurückzuführen sein.

DB2 stellt viele Techniken zum Auflösen von Sperrkonflikten bereit, darunter das Optimieren des kostenbasierten Optimierungsprogramms. Das Leistungshandbuch, das Bestandteil der DB2-Administratordokumentation ist, ist eine hervorragende Quelle mit vielen Optimierungstipps.

Es gibt keine vorgeschriebenen Optimierungswerte, die für alle Installationen verwendet werden können, da sich das Ausmaß des gemeinsamen Zugriffs und der Umfang der Daten unterscheiden können. Nichtsdestotrotz finden Sie hier einige DB2-Optimierungstipps, die für Ihre Installation von Belang sein könnten:

  • Der Befehl reorgchk update statistics aktualisiert die vom Optimierungsprogramm verwendeten Statistiken. Allein das regelmäßige Aktualisieren dieser Statistiken könnte genügen, um das Problem zu beheben.

  • Durch die Verwendung des DB2-Registrierungsparameters DB2_RR_TO_RS könnte der gemeinsame Zugriff verbessert werden, indem der nächste Schlüssel der Zeile, die eingefügt oder aktualisiert wurde, nicht gesperrt wird.

  • Erhöhen Sie die Werte für MAXLOCKS und LOCKLIST für die Datenbank.

  • Erhöhen Sie den Wert der currentLockTimeout-Eigenschaft für den Datenbank-Verbindungspool.

  • Verwenden Sie den Database Configuration Advisor und optimieren Sie für schnellere Transaktionen.

  • Ändern Sie alle Tabellen der Benutzeranwendung auf VOLATILE, damit das Optimierungsprogramm weiß, dass die Kardinalität der Tabelle deutlich abweichen kann. Beispielsweise können Sie die AFACTIVITY-Tabelle VOLATILE machen, indem Sie folgenden Befehl ausführen: ALTER TABLE AFACTIVITY VOLATILE

    Die ALTER TABLE-Befehle müssen ausgeführt werden, nachdem die Benutzeranwendung einmal gestartet wurde und die Datenbanktabellen erstellt wurden. Weitere Informationen zu dieser Anweisung finden Sie in der Dokumentation zu ALTER TABLE. Nachfolgend stehen die SQL-Anweisungen für alle Benutzeranwendungstabellen:

    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