将带有分区表的dmp导入Oracle XE

时间:2010-03-31 19:38:04

标签: oracle import export partitioning oracle-xe

我有一个包含分区表的模式。我可以使用exp来创建.dmp,但是当我将其导入Oracle XE时,我会收到错误,因为Oracle XE不支持分区表。

如何将.dmp导入Oracle XE?我认为预先创建表可能会这样做,但是如何以某种自动方式提取DDL呢?

或者我可以在没有分区的情况下以某种方式创建exp吗?

4 个答案:

答案 0 :(得分:2)

如果您尝试导入,使用ROWS = N,您将收到错误报告“ORA-00439:功能未启用:分区”,但您还将获得失败的语句转储。

用双引号包装75个字符,但这是你应该能够用文本编辑器处理的东西(我喜欢PSPad,它有一个列选择模式,很容易摆脱开头和结尾的引号每一行,加上一个JOIN LINES函数将它们粘合在一起。

您也可以使用dbms_metadata.get_ddl从源中提取DDL。

使用其中任何一个,您需要编辑stamements以删除分区子句,然后再在XE中运行它们。

如果你有很多分区表,那么看看DBA是否可以在源环境中为一个临时用户设置你的权限 CREATE TABLE abc AS SELECT * FROM realuser.abc WHERE 1 = 2;

您将拥有一堆具有适当结构但没有分区的空表,可以导出它们,导入XE,然后在需要行时再执行一次。

分区索引可能存在类似问题。我会为他们寻找DBMS_METADATA.GET_DDL并破解结果。

答案 1 :(得分:2)

以下是我正在使用expdp / impdp

  1. 使用impdp SQLFILE = Create_Non_Partitioned_Tables.sql EXCLUDE = STATISTICS
  2. 将该文件复制到Create_Indexes_Constraints.sql
  3. 编辑Create_Non_Partitioned_Tables.sql以删除对索引和约束及分区的所有引用,只留下CREATE个查询。
  4. 修改Create_Indexes_Constraints.sql以删除对分区表和CREATE查询的所有引用。
  5. 运行Create_Non_Partitioned_Tables.sql以创建非分区表。
  6. 使用选项impdp
  7. 运行CONTENT=DATA_ONLY
  8. 运行Create_Indexes_Constraints.sql以创建索引和约束。

答案 2 :(得分:1)

Oracle 11g以后通过合并EXPDP中的分区来支持导出表。使用expdp实用程序导出时,请参阅PARTITION_OPTIONS选项。

更多信息Oracle Data Pump 10g

答案 3 :(得分:0)

使用“indexfile”选项获取要导入的表的表和索引创建文件。修改该文件以为您提供不带分区的表create语句。运行创建命令以预先创建要导入的数据库中的表。然后imp使用“ignore = y”,它应该导入到precreate表中,而不是由于create语句而输出错误。