我正在使用Oracle 11g Xe。我有一个架构,其中包含一些具有虚拟列的表。虚拟列在模式中看起来很好,并且行为与预期一致。
我使用以下命令导出了该架构的转储:

expdp SYSTEM/SYSTEM schemas=TEST_SCHEMA dumpfile=TEST_SCHEMA.dpdmp

并使用以下命令将其导入到另一个数据库:
impdp SYSTEM/system SCHEMAS=TEST_SCHEMA DIRECTORY=dmpdir DUMPFILE=TEST_SCHEMA-2016.DPDMP TABLE_EXISTS_ACTION=replace LOGFILE=TEST_SCHEMA.log

导入进行得很顺利,但当我检查所有虚拟列时,它们都被破坏了。列的数据类型错误,它是NUMBER而不是VARCHAR(36),原始源架构中的数据默认函数不在导入的架构中,它只是空的,当我查看实际行时,该虚拟列中的值是“44”,这是该列的列ID。
有人知道为什么虚拟列没有正确迁移吗?导出架构时是否需要指定内容?还是甲骨文的错误?

最佳答案

请看Oracle网站上的Bug 10186633和Bug 14506804,导入虚拟列有问题。
问题是,在创建函数之前,表是在导入时创建的,我认为解决方法是先创建具有正确定义的表,然后使用ignore标志运行导入

08-25 23:42