Content Platform Engine, FileNet P8 Content Search Engine Version 5.2.1   Datenbank:  Oracle          

Oracle-Datentyp DATE in Datentyp TIMESTAMP konvertieren (Upgrade von Version 4.5.1)

Wenn Sie ein Upgrade für Oracle-basierte Content Engine-Daten als Teil eines Upgrades für FileNet P8 von Version 4.5.1 durchführen, konvertiert das automatische Upgrade die Content Engine-Eigenschaftsspalten 'DateTime' des Oracle-Datentyps DATE in den Oracle-Datentyp TIMESTAMP. Bei einem funktionsbasierten Index mit einbezogenem Datentyp DATE kann diese Konvertierung während des automatischen Upgrades allerdings nicht vorgenommen werden. In diesem Fall müssen Sie den Index löschen, den Datentyp DATE manuell in den Datentyp TIMESTAMP konvertieren und anschließend den Originalindex in der Oracle-Datenbank neu erstellen.

Informationen zu diesem Vorgang

Versionen von Oracle-basierten Content Engine-Daten vor 5.0.0 verwenden die Oracle-Eigenschaft DATE für die Content Engine-Eigenschaft DateTime. Ab Version 5.0.0 wird die Oracle-Eigenschaft DATE durch die Eigenschaft TIMESTAMP ersetzt.

Die über die Eigenschaft DATE definierten Tabellenspalten werden im Rahmen des automatischen Upgrades von Content Engine-Daten automatisch in die Eigenschaft TIMESTAMP konvertiert, auch wenn ein Index für die Eigenschaft DATE vorhanden ist. Diese Konvertierung schlägt allerdings für funktionsbasierte Indizes fehl, wie z. B. beim Schlüsselwort DESC (absteigend), das die Eigenschaft DATE verwendet.

Da eine Auflösung dieses Konvertierungsfehlers innerhalb des automatischen Upgrades nicht durchführbar ist, können Spalten des Typs DATE mit funktionsbasierten Indizes nur manuell in Spalten des Typs TIMESTAMP konvertiert werden.

Trifft eine der folgenden Bedingungen zu, muss Ihr Datenbankadministrator diese Prozedur manuell ausführen:

  • Sie verwenden die Protokollierungsfunktion von Content Engine und die Tabelle 'Event' umfasst mehr als 500.000 Zeilen.

    Wenn Sie die manuelle Konvertierung nicht ausführen, funktioniert der Systemindex I_EVENT48 für die Spalte create_date in der Tabelle 'Event' zwar weiterhin, Ihre Konfiguration wird aber erst nach dem Konvertieren der Spalte wieder unterstützt.

    Das folgende Beispiel zeigt eine Nachricht aus dem P8-Systemfehlerprotokoll, die auf einen Überlauf der Ereignistabelle hinweist:
    2012-05-31T01:49:43.005Z 7F227F22 ENG FNRCE0000E - ERROR 
    ObjectStoreUpgrade(My451ObjectStore) DBA should manually drop
    indices I_Event48 and I_Event83, convert date column to timestamp
    and re-create them on Event table.
    Obwohl sich die Fehlernachricht sowohl auf I_EVENT48 als auch auf I_EVENT83 bezieht, muss nur I_EVENT48 gelöscht und erneut erstellt werden. Die entsprechende Vorgehensweise wird im Folgenden beschrieben.
  • Sie haben eine kundendefinierte Eigenschaft DATE, die Teil eines funktionsbasierten Index ist.

    Wenn Sie die manuelle Konvertierung nicht ausführen, weist das System, für das das Upgrade durchgeführt wurde, den vollen Funktionsumfang auf. Datumseigenschaften und Abfragen funktionieren wie vorher, allerdings mit einer Ausnahme: Ein funktionsbasierter, kundendefinierter Index, bei dem die Datumsspalte der erste Schlüssel ist (z. B. ein vom Datenbankadministrator erstellter Index für uxy_shipmentDate DESC), kann nicht verwendet werden und eine Indexsuchfunktion in einem Abfrageplan ist erst wieder enthalten, wenn Sie die kundendefinierte Eigenschaft konvertiert haben.

Durch eine Prüfung der P8-Systemfehlerprotokolle auf Fehler bei der Datentypkonvertierung können Sie feststellen, ob eine manuelle Konvertierung erforderlich ist. Unabhängig von den Bedingungen ist es ein bewährtes Verfahren, die Protokolle nach Abschluss des automatischen Updates zu prüfen. Das folgende Beispiel zeigt eine Nachricht aus dem P8-Systemfehlerprotokoll, die darauf hinweist, dass eine manuelle Konvertierung erforderlich ist:

"2010-07-13T00:29:43.787Z 68416841 ENG  FNRCE0000E - ERROR ObjectStoreUpgrade
(DaphneStore) Date to Timestamp column conversion failed for column modify_date on 
table DocVersion. The most likely reason is oracle error 30556: functional index is 
defined on the column to be modified, in which case DBA should manually drop index, 
convert date column to timestamp and re-create index."

Vorgehensweise

So konvertieren Sie den Datentyp DATE manuell in den Datentyp TIMESTAMP:

  1. Sofern noch nicht geschehen, entfernen Sie die Fehlerumgehung mit dem JVM-Switch 'V8Compatibility'. Falls Ihr System Oracle 11g verwendet und Sie für die Fehlerumgehung einen Rollback auf den Oracle 10g JDBC-Treiber durchführen mussten, entfernen Sie auch diese Fehlerumgehung, bei der ein Downgrade des JDBC-Treibers durchgeführt wurde. Verwenden Sie die im Techdoc Enabling Oracle Date Index Use in the FileNet Content Engine (Techdoc 1397282) beschriebenen Vorgehensweisen.
  2. Führen Sie die folgenden SQL-Befehle aus, um den Datentyp DATE in der Tabelle 'Event' in den Datentyp TIMESTAMP zu konvertieren: Beachten Sie dabei, dass eine Indexerstellung lange dauern kann, wenn sich in der Ereignistabelle 'Event' mehrere Millionen Einträge befinden. Wie bereits erwähnt, muss nur I_EVENT48 gelöscht und erneut erstellt werden.
    DROP INDEX I_Event48
    ALTER TABLE Event MODIFY create_date TIMESTAMP
    CREATE INDEX I_Event48 ON Event (source_object_id, create_date DESC) 
  3. Führen Sie zum Konvertieren von kundendefinierten Tabellenspalten des Datentyps DATE in den Datentyp TIMESTAMP die folgenden SQL-Befehle für jeden funktionsbasierten Index aus: Eine Indexerstellung kann lange dauern, wenn sich in der Tabelle mit dem Datentyp DATE mehrere Millionen Einträge befinden.
    DROP INDEX <Indexname>
    ALTER TABLE <Tabellenname> MODIFY <Spaltenname> TIMESTAMP
    CREATE INDEX <Indexname> ON <Tabellenname>(<Spaltennamen> <Modifikatoren>)


Letzte Aktualisierung: Oktober 2015
p8pup557.htm

© Copyright IBM Corp. 2013, 2015.