我一直在尝试使用Oracle Docker容器导入Oracle 11 g模式转储(转储文件大小为750 Mb):
首先,我必须在客户端数据库中创建一个同名的表空间,并为其分配相同的用户名,然后授予他create(会话、表、任何过程、视图)权限:
一个一个
Impdp命令:
impdp user/pass@localhost DIRECTORY=DATA_PUMP_DIR DUMPFILE=dumpfile.dmpL OGFILE=log_file.log SCHEMAS=SCHEMA_NAME
执行大约花了4个小时,然后我留下了大量的错误
ORA-31693:表数据对象“SCHEMA_NAME”。“Table_name”无法加载/卸载,将被跳过,原因是出现以下错误:ORA-00001:违反了唯一约束(SCHEMA_NAME.FK_name)
并创建了表,但大多数都是空的。
- 我尝试了不同的导入选项,如完全导入(full=y)。
- 另一种方法,我尝试做的事情,是导入2个阶段(元数据,然后数据)
impdp ... CONTENT=METADATA_ONLY then impdp ... CONTENT=DATA_ONLY
- 也可以在排除约束、ref_constraints和触发器的情况下导入,然后执行data_only导入
但所有这些执行都是错误的,我不能单独处理每个FK,因为它超过200 FK在这个数据库。
所以我想知道,什么是正确的方式来导入转储而不打破FK约束,它是可以导入元数据,然后数据。
另外,我如何检查客户端提供的转储文件是否正确转储,或者其中是否存在一些缺陷
1条答案
按热度按时间vcirk6k61#
尝试使用
datapump import parameter data_options=skip_constraint_errors