重庆思庄Oracle、Redhat认证学习论坛
标题:
impdp导入提报ORA-39151的是提示,说明表已存在,将跳过所有相关元数据和数据的问题
[打印本页]
作者:
王亮
时间:
2020-3-15 14:59
标题:
impdp导入提报ORA-39151的是提示,说明表已存在,将跳过所有相关元数据和数据的问题
当使用IMPDP完成数据库导入时,如因此前导入失败,重新导入或其他情况下,遇到提示:ORA-39151: 表 “**”.“****” 已存在。由于跳过了 table_exists_action, 将跳过所有相关元数据和数据。虽然最后在并无重大的错误下完成导入任务,但实际上我们去查询表时,会发现并没有数据导入进来,那导入也说明是失败的。
那是什么原因呢?其实是导入的命令中,有一个
table_exists_action参数,虽然我们在执行导入命令时,并没有输这个参数,而且使用了full=y,但实际上这个参数默认是存在的,虽然我们在执行导入时,并未设置,但在进行导入任务时,仍旧会按这个参数默认值执行。而
table_exists_action参数有哪些值呢?
Oracle对
table_exists_action
提供给我们四个值,同样也是四种处理方式:
a.忽略(
SKIP
,
table_exists_action的
默认值);
b.在原有数据基础上继续增加(
APPEND
);
c.先DROP表,然后创建表,最后完成数据插入(
REPLACE
);
d.先将表中的数据TRUNCATE,再完成数据插入(
TRUNCATE
)。
按照前面的要求进行导入,存在有些表已存在的情况,那可以在导入命令后面追加一个
table_exists_action=replace参数设置,然后再执行导入任务。(
注:在导入某一用户下所有对象时可以使用。如果是整库导入,那该参数值不建议使用这个选择,因为会将数据库的系统表也会删除重新,而系统表的话,有些表是需要特定的权限才能创建的
)
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2