将 Oracle DATE 数据类型转换为 TIMESTAMP 数据类型(从 V4.5.1 进行升级)
如果正在将 FileNet® P8 从 V4.5.1 进行升级期间对基于 Oracle 的 Content Engine 数据进行升级,那么自动升级操作会将 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 数据自动升级的过程中,即使 DATE 属性上存在索引,也会将 DATE 属性所定义的表列自动转换为 TIMESTAMP 属性。但是,对于涉及到 DATE 属性的基于函数的索引(例如,降序 (DESC) 关键字),此转换会失败。
因为在自动升级框架内解决此转换故障不切实可行,所以只有通过手动过程才能将具有基于函数的索引的 DATE 列转换为 TIMESTAMP 列。
如果存在下列任何情况,那么数据库管理员将需要完成手动过程:
- 您使用 Content Engine 审计功能部件,并且事件表包含 500,000 行以上。
如果您未完成手动过程,那么关于事件表中的 create_date 列的系统索引 I_EVENT48 将继续起作用;但是,在您手动转换此列之后,配置才受支持。
以下示例显示 P8 系统错误日志中的一条消息,指示事件表溢出:
虽然该错误消息引用了 I_EVENT48 和 I_EVENT83,但只须删除并重新创建 I_EVENT48;下面提供了过程。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.
- 您具有客户定义的 DATE 属性,并且作为基于函数的索引的一部分。
如果您未完成手动过程,已升级的系统将完全起作用。DATE 属性像以前一样工作,查询也像以前一样运行,只不过存在以下异常:不能使用基于函数、由客户定义并且其“日期”列是第一个键的索引(例如,由 DBA 针对 uxy_shipmentDate DESC 创建的索引);在您手动转换客户定义的属性之后才会保留查询方案中的索引查询。
通过检查 P8 系统错误日志中是否存在数据类型转换错误,将确认您是否需要完成手动过程。在所有情况下,最好是在完成自动升级之后复查日志。以下示例显示了 P8 系统错误日志中的一条消息,它指出需要完成手动过程:
"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."
过程
要以手动方式将 DATE 数据类型转换为 TIMESTAMP 数据类型,请执行下列操作: