ORA-39906: Constraint string between table string.string in tablespace string and table string.string in tablespace string.

文档解释

ORA-39906: Constraint string between table string.string in tablespace string and table string.string in tablespace string.

Cause: Informational message to describe a failure during transportable containment checking.

Action: None required.

ORA-39906 错误指示强制执行违反熄灭前检查约束(EC)之间的表之间的引用约束失败,指出强制执行中的表所在的表空间。

官方解释

ORA-39906 错误代表索引登记强行失败的熄灭前检查限制,因为两个表处于不同的表空间。ORA-39906 发生,当使用 DBMS_RLS.ADD_POLICY 时尝试添加到不同表空间中的表之间的约束时。

常见案例

当您试图在不同表空间中的两个表之间添加外键约束时,可能会发生 ORA-39906 错误,如下所示:

ALTER TABLE table1

ADD CONSTRAINT FK_table1_table2

FOREIGN KEY(ID) REFERENCES table2(ID);

一般处理方法及步骤

1. 将所有表移动到同一表空间,以解决 ORA-39906 错误。

2. 通过在最高层使用系统表空间,然后在其它表空间添加一致性索引,来解决 ORA-39906 错误。

3. 更新存储参数“FilesystemIoOptions”,如果该值设置为“setall”,则可以解决 ORA-39906 错误。

ALTER SYSTEM SET FilesystemIoOptions= setall SCOPE=SPFILE;

4. 重新启动实例以使对配置参数的更改生效。

你可能感兴趣的