更新开始FileNet P8 Content Engine, FileNet P8 Content Search Engine, 版本 5.0.+   数据库:  Oracle          

将 Oracle DATE 数据类型转换为 TIMESTAMP 数据类型

如果已升级的 Content Engine 数据基于 Oracle,那么在自动升级到 V5.0.0 时会将 Content Engine DateTime 属性列从 Oracle DATE 数据类型转换为 Oracle TIMESTAMP 数据类型。但是,如果有基于函数的索引涉及到 DATE 数据类型,那么自动升级时将无法执行此转换。在这种情况下,必须删除此索引,将 DATE 数据类型手动转换为 TIMESTAMP 数据类型,然后在 Oracle 数据库中重新创建原始索引。

在 V5.0.0 之前,各种版本的基于 Oracle 的 Content Engine 数据对 Content Engine DateTime 属性使用 Oracle DATE 属性。从 V5.0.0 开始,Oracle TIMESTAMP 属性将替换 DATE 属性。

在将 Content Engine 数据自动升级到 V5.0.0 的过程中,即使存在关于 DATE 属性的索引,也会将 DATE 属性所定义的表列自动转换为 TIMESTAMP 属性。但是,对于涉及到 DATE 属性的基于函数的索引(例如,降序 (DESC) 关键字),此转换会失败。

因为在自动升级框架内解决此转换故障不切实可行,所以只有通过手动过程才能将具有基于函数的索引的 DATE 列转换为 TIMESTAMP 列。

如果存在下列任何情况,那么数据库管理员将需要完成手动过程:

通过检查 P8 系统错误日志中是否存在数据类型转换错误,将确认您是否需要完成手动过程。在所有情况下,最好是在完成自动升级之后复查日志。以下示例显示了 P8 系统错误日志中的一条消息,它指出需要完成手动过程:

“2010-07-13T00:29:43.787Z 68416841 ENG  FNRCE0000E - ObjectStoreUpgrade 出错
(DaphneStore) 将 DocVersion 表中的 modify_date 列从 DATE 列转换为 TIMESTAMP 列失败。
最有可能造成此错误的原因是 oracle 错误 30556:针对要修改的列定义了起作用的索引,在这
种情况下 DBA 应当手动删除索引,将 DATE 列转换为 TIMESTAMP 列,然后重新创建索引。”

要以手动方式将 DATE 数据类型转换为 TIMESTAMP 数据类型,请完成下列步骤:

  1. 如果您尚未这样做,请除去 V8Compatibility JVM 开关变通方法。如果系统使用 Oracle 11g,而您为了使用此变通方法而需要回滚到 Oracle 10g JDBC 驱动程序,那么还要除去 JDBC 驱动程序降级过程变通方法。有关指示信息,请参阅支持在 FileNet Content Engine 中使用 Oracle DATE 索引技术说明。
  2. 要将事件表中的 DATE 数据类型转换为 TIMESTAMP 数据类型,请运行下列 SQL 命令。请注意,如果事件表中有数百万个条目,那么可能要花较长时间来创建索引。
    DROP INDEX I_Event48
    ALTER TABLE Event MODIFY create_date TIMESTAMP
    CREATE INDEX I_Event48 ON Event (source_object_id, create_date DESC) 
  3. 要将客户定义的 DATE 表列转换为 TIMESTAMP 数据类型,请对每个基于函数的索引运行下列 SQL 命令。请注意,如果其中包含 DATE 列的表中有数百万个条目,那么可能要花较长时间来创建索引。
    DROP INDEX <index name>
    ALTER TABLE <table name> MODIFY <column name> TIMESTAMP
    CREATE INDEX <index name> ON <table name>(column names> <modifiers>)


反馈

最近一次更新时间: 2010 年 11 月


© Copyright IBM Corporation 2010.
本信息中心基于 Eclipse 技术。(http://www.eclipse.org)
更新结束