如何迁移数据,添加带有约束的新列,并启用闪回存档?

时间:2010-11-12 17:49:58

标签: sql oracle flashback

我目前在一个表中有一个字符串值,我想改变它以便它引用另一个表。例如,目前我有:

| Table: Animal       | 
-----------------------
| Name      | Class   |
|-----------|---------|
| Horse     | Mammal  |
| Crocodile | Reptile |

我希望这些引用我的新“AnimalClass”表,以便它们看起来像:

| Table: Animal       | 
-----------------------
| Name      | ClassId |
|-----------|---------|
| Horse     |    3    |
| Crocodile |    14   |

我已经创建了我的新表并且没有任何问题地设置了ClassId。

不幸的是,当我尝试在我的新Id和AnimalClass表之间添加外键约束时,我收到此错误:

SQL Error: ORA-55610: Invalid DDL statement on history-tracked table

这是有道理的,因为它使“撤消”无效。

有没有办法根据我的新数据迁移历史数据,以便我可以添加我的约束?

1 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的Oracle(客户端和服务器)?根据此线程,使用旧客户端存在问题:http://forums.oracle.com/forums/thread.jspa?threadID=945177如果没有其他工作,您可以使用DBMS_FLASHBACK_ARCHIVE.DISASSOCIATE_FBA / REASSOCIATE_FBA吗? (根据http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_flashback.htm#BJFFDCEH的建议)