Ark*_*ady 4 database oracle import oracle11g
我有一个从Oracle表导出的大型(多GB)数据文件.我想将此数据导入另一个Oracle实例,但我希望表名与原始表不同.这可能吗?怎么样?
导入和导出系统都是Oracle 11g.该表包含BLOB列,如果这有任何区别.
谢谢!
更新:
这里的想法是更新表,同时将系统的停机时间保持在最低限度.解决方案(根据Vincent Malgrat的回答和APC的更新)是:
A
TEMP_SCHEMA
TEMP_SCHEMA.A
CREATE REAL_SCHEMA.B AS SELECT * FROM TEMP_SCHEMA.A
DROP TABLE REAL_SCHEMA.A
REAL_SCHEMA.A
为REAL_SCHEMA.A_OLD
REAL_SCHEMA.B
为REAL_SCHEMA.A
DROP REAL_SCHEMA.A_OLD
这样,停机时间仅在步骤4和5期间,两者都应与数据大小无关.如果这不起作用,我会在这里发布更新:-)
如果您使用旧的EXP和IMP实用程序,则无法执行此操作.唯一的选择是导入到同名的表中(尽管您可以更改拥有该表的模式.
但是,你说你是11g.为什么不使用10g中引入的DataPump实用程序,它取代了Import和Export.因为在11g中,该实用程序提供REMAP_TABLE选项,它完全符合您的要求.
编辑
在我写这篇文章时,看过OP添加到另一个回复的评论后,我认为REMAP_TABLE选项不适用于他们的情况.它只重命名新对象.如果目标模式中存在具有原始名称的表,则导入将失败并显示ORA-39151.抱歉.
编辑之二
鉴于OP最终选择的解决方案(删除现有表,替换为新表),有一个使用Data Pump的解决方案,即使用该TABLE_EXISTS_ACTION={TRUNCATE | REPLACE}
子句.选择REPLACE
删除表,而TRUNCATE
只是,呃,截断它.在任何一种情况下,我们都要担心引用完整性约束,但这也是所选解决方案的问题.
我发布这个附录不是为了OP,而是为了将来某个时候找到这个页面的其他搜索者的利益.
归档时间: |
|
查看次数: |
39529 次 |
最近记录: |