如果已升级的 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 列。
如果存在下列任何情况,那么数据库管理员将需要完成手动过程:
如果您未完成手动过程,那么关于事件表中的 create_date 列的系统索引 I_EVENT48 将继续起作用;但是,在您手动转换此列之后,配置才受支持。
如果您未完成手动过程,已升级的系统将完全起作用。DATE 属性像以前一样工作,查询也像以前一样运行,只不过存在以下异常:不能使用基于函数、由客户定义并且其“日期”列是第一个键的索引(例如,由 DBA 针对 uxy_shipmentDate DESC 创建的索引);在您手动转换客户定义的属性之后才会保留查询方案中的索引查询。
通过检查 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 数据类型,请完成下列步骤: