Oracle 11g中的Oracle队列不是imp或exp

时间:2015-06-02 22:52:36

标签: oracle oracle11g queue

我使用命令

导出了oracle数据库
exp system/password@sid file=c:\expdb.dmp

使用

将其导入另一个实例后
imp system/password@sid file=c:\expdb.dmp 

一切看起来都不错,但仔细一看,我注意到我的所有队列和所有的queue_tables都没有进入新的数据库。

尝试让exp / imp工作一段时间之后,我决定重新安装队列只是为了找到你在数据库中找到与那些查询相关的表,所以我先试试

Delete from table

我收到了错误:

ORA-24005: Inappropriate utilities used to perform DDL on AQ table

所以我试试

BEGIN
DBMS_AQADM.DROP_QUEUE_TABLE('table',TRUE);
END;

最后工作。但我的问题是,我如何首先避免所有这些麻烦?有没有办法用队列导出数据库?我错过了一些国旗吗?因为每次我们必须导入一个包含队列的新数据库时,这是非常痛苦的。

1 个答案:

答案 0 :(得分:2)

您不能使用exp或expdp导出Oracle队列。

必须在目标数据库中创建新队列。

exp / imp队列会引导您进入数据库目录损坏。

注意:在11GR2文档中说明:

队列表级别粒度现在完全支持导出队列导入。用户只需要导出队列表。队列表中的所有队列,主要对象授予,视图,IOT,规则等相关对象都会自动导出。

仅当您使用11GR2作为源和目标数据库的exp / imp时才有效。例如,AQ定义从11GR1变为11GR2。

关于提交删除声明时遇到的错误消息:

这是11.2中的预期行为。您无法在11.2中对AQ对象执行不适当的DDL,并且会报告ORA-24005。

要截断队列表和关联的IOT,请使用DBMS_AQADM.PURGE_QUEUE_TABLE。