【发布时间】:2017-07-05 21:21:24
【问题描述】:
我有一个导出表空间的转储文件。现在我正在尝试从具有外键等依赖项的转储中导入一个表。我如何导入那些表(我不知道依赖项),有没有办法找到这些依赖项并沿着我现在正在导入的表导入它们?
【问题讨论】:
标签: oracle oracle11g oracle12c database-administration
我有一个导出表空间的转储文件。现在我正在尝试从具有外键等依赖项的转储中导入一个表。我如何导入那些表(我不知道依赖项),有没有办法找到这些依赖项并沿着我现在正在导入的表导入它们?
【问题讨论】:
标签: oracle oracle11g oracle12c database-administration
如果您使用 imp(导入),那么默认情况下是与您选择的表一起导入约束。
要查找约束(包括外键),请在源数据库上运行:
SELECT CONSTRAINT_NAME
FROM DBA_CONSTRAINTS
WHERE
R_CONSTRAINT_NAME IN
(SELECT CONSTRAINT_NAME
FROM DBA_CONSTRAINTS
WHERE CONSTRAINT_TYPE IN ('P','U')
AND TABLE_NAME IN
(
'<table_name>'
));
如果您使用 dp (datapump),那么最好选择正确的表导入顺序,从而消除外键问题。
使用旧的 imp(导入),我有时会禁用所有外键,然后在导入后“启用 novalidate”它们。
【讨论】: