Content Platform Engine, FileNet P8 Content Search Engine, Versión 5.2.1   Base de datos:  Oracle          

Conversión del tipo de datos DATE de Oracle al tipo de datos TIMESTAMP (actualización de la versión 4.5.1)

Si está actualizando datos de Content Engine basados en Oracle como parte de una actualización de FileNet P8 de la versión 4.5.1, la actualización automática convierte las columnas de propiedad DateTime de Content Engine del tipo de datos DATE de Oracle al tipo de datos TIMESTAMP de Oracle. Sin embargo, si existe un índice basado en función que implica al tipo de datos DATE, la actualización automática no podrá realizar esta conversión. En este caso, debe descartar el índice, convertir manualmente el tipo de datos DATE al tipo de datos TIMESTAMP y, a continuación, volver a crear el índice original en la base de datos Oracle.

Acerca de esta tarea

Las versiones de datos de Content Engine basadas en Oracle anteriores a la versión 5.0.0 utilizan la propiedad DATE de Oracle para la propiedad DateTime de Content Engine. A partir de la versión 5.0.0, la propiedad TIMESTAMP de Oracle sustituye a la propiedad DATE.

Como parte de la actualización automática de los datos de Content Engine, las columnas de tabla definidas por la propiedad DATE se convierten automáticamente a la propiedad TIMESTAMP, aunque exista un índice en la propiedad DATE. Sin embargo, la conversión falla en índices basados en función, como por ejemplo la palabra clave descendente (DESC), que implican a la propiedad DATE.

Dado que no es factible resolver esta anomalía de conversión dentro de la infraestructura de actualización automática, sólo un procedimiento manual puede convertir columnas DATE con índices basados en función a columnas TIMESTAMP.

Si se cumple alguna de las condiciones siguientes, el administrador de base de datos deberá realizar el procedimiento manual:

  • Utiliza la característica de auditoría de Content Engine y la tabla de sucesos contiene más de 500.000 filas.

    Si no realiza el procedimiento manual, el índice del sistema I_EVENT48 de la columna create_date de la tabla de sucesos seguirá funcionando; sin embargo, la configuración quedará sin soporte hasta que convierta manualmente la columna.

    El ejemplo siguiente muestra un mensaje del registro de errores del sistema P8 que indica el desbordamiento de la tabla Suceso:
    2012-05-31T01:49:43.005Z 7F227F22 ENG FNRCE0000E - ERROR 
    ObjectStoreUpgrade(My451ObjectStore) DBA debe eliminar manualmente
    los índices I_Event48 y I_Event83, convertir la columna DATE en TIMESTAMP
    y volver a crearlos en la tabla de sucesos.
    Aunque el mensaje de error hace referencia tanto a I_EVENT48 como a I_EVENT83, sólo se debe descartar y volver a crear I_EVENT48; a continuación se proporciona un procedimiento.
  • Existe una propiedad DATE definida por el cliente que forma parte de un índice basado en función.

    Si no realiza el procedimiento manual, el sistema actualizado será plenamente funcional. Las propiedades Date y las consultas funcionarán igual que antes, con una excepción: no podrá utilizarse un índice basado en función y definido por el cliente para el que la columna Date sea la primera clave (por ejemplo, un índice creado por el administrador de base de datos en DESC uxy_shipmentDate), y no se conservará una búsqueda de índice en un plan de consultas hasta que convierta manualmente la propiedad definida por el cliente.

Una comprobación del registro de errores del sistema P8 con respecto a los errores de conversión de tipo de datos confirmará la necesidad de realizar el procedimiento manual. En todas las condiciones, es aconsejable revisar el registro una vez finalizada la actualización automática. El ejemplo siguiente muestra un mensaje del registro de errores del sistema P8 que indica la necesidad de realizar el procedimiento manual:

"2010-07-13T00:29:43.787Z 68416841 ENG
FNRCE0000E - ERROR ObjectStoreUpgrade
(DaphneStore) La conversión de columna Date a Timestamp ha fallado para la columna
modify_date en 
la tabla DocVersion. La razón más probable es el error de
Oracle 30556: el índice funcional está 
definido en la columna que debe modificarse, en cuyo caso el administrador de base de
datos debe eliminar el índice manualmente, 
convertir la columna de fecha en indicación de fecha y hora y volver a crear el índice."

Procedimiento

Para convertir manualmente el tipo de datos DATE al tipo de datos TIMESTAMP:

  1. Si no lo ha hecho aún, elimine el método alternativo de conmutación de JVM V8Compatibility. Si el sistema utiliza Oracle 11g y ha tenido que retrotraerse al controlador JDBC de Oracle 10g para el método alternativo, elimine también el método alternativo del procedimiento de categoría inferior del controlador JDBC. Utilice los procedimientos del documento técnico Habilitación de la utilización de índices Date de Oracle en FileNet Content Engine (Documento técnico 1397282).
  2. Para convertir el tipo de datos DATE al tipo de datos TIMESTAMP en la tabla de sucesos, ejecute los siguientes mandatos SQL. Tenga en cuenta que la creación de un índice puede tardar mucho tiempo si existen millones de entradas en la tabla de sucesos.Como se ha mencionado anteriormente, sólo I_EVENT48 se debe descartar y volver a crear.
    DROP INDEX I_Event48
    ALTER TABLE Event MODIFY create_date TIMESTAMP
    CREATE INDEX I_Event48 ON Event (source_object_id, create_date DESC) 
  3. Para convertir columnas de tabla DATE definidas por el cliente al tipo de datos TIMESTAMP, ejecute los siguientes mandatos SQL para cada índice basado en función. La creación de un índice puede tardar mucho tiempo si existen millones de entradas en la tabla que contienen la columna DATE.
    DROP INDEX <nombre_índice>
    ALTER TABLE <nombre_tabla> MODIFY <nombre_columna> TIMESTAMP
    CREATE INDEX <nombre_índice> ON <nombre_tabla>(nombres_columna>
    <modificadores>)


Última actualización: Marzo de 2016
p8pup557.htm

© Copyright IBM Corp. 2013, 2016.