Content Platform Engine, FileNet P8 Content Search Engine, Versão 5.2.1   Banco de Dados:  Oracle          

Convertendo o tipo de dado DATE do Oracle no tipo de dado TIMESTAMP (atualizando a partir da versão 4.5.1)

Se você estiver fazendo upgrade de dados do Content Engine baseados em Oracle como parte de um upgrade do FileNet P8 a partir da versão 4.5.1, o upgrade automático converterá as colunas da propriedade DateTime do Content Engine do tipo de dado DATE do Oracle no tipo de dado TIMESTAMP do Oracle. Porém, se existir um índice baseado em função que envolva o tipo de dado DATE, então o upgrade automático não conseguirá executar essa conversão. Nesse caso, deve-se descartar o índice, converter manualmente o tipo de dado DATE no tipo de dado TIMESTAMP e, em seguida, recriar o índice original no banco de dados Oracle.

Sobre Esta Tarefa

Versões de dados do Content Engine baseadas em Oracle anteriores à 5.0.0 usam a propriedade DATE do Oracle para a propriedade DateTime do Content Engine. A partir da versão 5.0.0, a propriedade TIMESTAMP do Oracle substitui a propriedade DATE.

Como parte do upgrade automático dos dados do Content Engine, as colunas da tabela definidas pela propriedade DATE serão automaticamente convertidas na propriedade TIMESTAMP, mesmo se houver um índice na propriedade DATE. Porém, a conversão falha em índices baseados em função, como a palavra-chave descendente (DESC), que envolve a propriedade DATE.

Como não é factível resolver essa falha de conversão dentro da estrutura do upgrade automático, somente um procedimento manual pode converter colunas DATE com índices baseados em função em colunas TIMESTAMP.

Se qualquer uma das seguintes condições se aplicar, o administrador do seu banco de dados precisa concluir o procedimento manual:

  • Você usa o recurso de auditoria do Content Engine, e o tabela de Eventos contém mais de 500.000 linhas.

    Se você não concluir o procedimento manual, I_EVENT48 na coluna create_date na tabela de Eventos continuará a funcionar; porém, a sua configuração não será suportada até que você converta manualmente a coluna.

    O exemplo a seguir mostra uma mensagem do log de erro de sistema P8 que indica o estouro da Tabela de eventos:
    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.
    Embora a mensagem de erro se refira a ambos I_EVENT48 e I_EVENT83, apenas I_EVENT48 deve ser descartado e recriado; um procedimento é fornecido abaixo.
  • Você possui uma propriedade DATE definida pelo cliente que faz parte de um índice baseado em função.

    Se você não concluir o procedimento manual, o sistema que passou por upgrade estará totalmente funcional. As propriedades de data funcionam como antes, e as consultas operam como antes, com uma exceção: Um índice definido pelo cliente e baseado em função para qual a coluna Data é a primeira chave (por exemplo, um índice criado por DBA em uxy_shipmentDate DESC) é inutilizável, e uma consulta de índice em um plano de consulta não é retida até que você converta manualmente a propriedade definida pelo cliente.

Uma verificação dos logs de erro de sistema do P8 para os erros de conversão de tipo de dado confirmará a necessidade de concluir o procedimento manual. Em todas as condições, a melhor prática é revisar os logs após a conclusão do upgrade automático. O exemplo a seguir mostra uma mensagem do log de erro de sistema do P8 que indica a necessidade de concluir o procedimento manual:

"2010-07-13T00:29:43.787Z 68416841 ENG  FNRCE0000E - ERRO ObjectStoreUpgrade
(DaphneStore) Conversão de coluna Date para Timestamp falhou para a coluna modify_date na 
tabela DocVersion. A razão mais provável é o erro 30556 do Oracle: índice funcional está 
definido na coluna a se modificada e, nesse caso, o DBA deve descartar manualmente o índice, 
convert date column to timestamp and re-create index."

Procedimento

Para converter manualmente o tipo de dado DATE para o tipo de dado TIMESTAMP:

  1. Se ainda não tiver feito isso, remova a solução alternativa do comutador V8Compatibility JVM. Se o seu sistema usar o Oracle 11g e você tiver de efetuar rollback para o driver JDBC do Oracle 10g para a solução alternativa, também remova a solução alternativa do procedimento de downgrade do driver JDBC. Use os procedimentos no techdoc Ativando o Uso do Índice de Data do Oracle no FileNet Content Engine (Techdoc 1397282).
  2. Para converter o tipo de dado DATE para o tipo de dado TIMESTAMP na tabela de Eventos, execute os seguintes comandos SQL. Note que criar um índice pode levar bastante tempo se houver milhões de entradas na tabela de Eventos. Conforme mencionado acima, somente I_EVENT48 deve ser descartado e recriado.
    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 converter as colunas da tabela DATE definidas pelo cliente para o tipo de dado TIMESTAMP, execute os seguintes comandos SQL para cada índice baseado em função. Criar um índice pode levar bastante tempo se houver milhões de entradas na tabela que contém a coluna de DATAS.
    DROP INDEX <index name>
    ALTER TABLE <table name> MODIFY <column name> TIMESTAMP
    CREATE INDEX <index name> ON <table name>(column names> <modifiers>)


Última atualização: Outubro de 2015
p8pup557.htm

© Copyright IBM Corporation 2013, 2015.