ORA-39083: Object type USER failed to create with error: ORA-00959: tablespace ‘TEMP1‘ does not exis

Oracle数据库在使用数据泵导入dmp数据文件时报错。

导入之前已删除目标数据库的被导入用户。

错误信息:
ORA-39083: Object type USER failed to create with error:
ORA-00959: tablespace ‘TEMP1’ does not exist
Failing sql is:
CREATE USER “DATABUFF” IDENTIFIED BY VALUES ‘S:B27D8FB573BDBBBAE67BA0A5D896EAE1529D135E37C85E758FAB595B1A99;AEF687F6EC2CBAD6’ DEFAULT TABLESPACE “CAMS_DATABUFF_TAB” TEMPORARY TABLESPACE “TEMP1”
ORA-39083: Object type USER failed to create with error:
ORA-00959: tablespace ‘TEMP1’ does not exist

导入命令:
impdp system/123456@cams DIRECTORY=dpdata1 DUMPFILE=deskData202012021538.dmp SCHEMAS=db2odesk,sdata,databuff,work,report LOGFILE=impdp_deskData202012021538.log

知识点:
impdp命令在导入数据时,如果用户存在,则会自动创建该用户,因为expdp导出的dmp文件中包含了创建用户的脚本信息(包括密码,缺省表空间,临时表空间等)。
impdp自动创建用户有一个前提条件,就是需要首先创建用户的缺省表空间和临时表空间,如果缺省表空间或者临时表空间不存在,则自动创建用户会失败,导致导入数据的失败。

解决方案一:
将目标数据库的临时表空间名称改成和源数据库的临时表空间名称一致
1、查询用户表空间及默认表空间

 SELECT USERNAME "用户名称", DEFAULT_TABLESPACE "默认表空间", TEMPORARY_TABLESPACE "临时表空间", ACCOUNT_STATUS "用户状态" FROM DBA_USERS ORDER BY 3,1;

2、修改用户临时表空间名称

ALTER TABLESPACE TEMP RENAME TO TEMP1;

解决方案二(未尝试)
表空间映射,使用数据泵中的remap_tablespace属性
导入命令如下:

 impdp system/123456@cams DIRECTORY=dpdata1 DUMPFILE=deskData202012021538.dmp SCHEMAS=db2odesk,sdata,databuff,work,report remap_tablespace=TEMP1:TEMP LOGFILE=impdp_deskData202012021538.log

扩展:

删除用户时查询并删除用户会话:

SELECT 'ALTER SYSTEM KILL SESSION ''' || C.SID || '' || ',' || C.SERIAL# ||''';' FROM V$SESSION C WHERE USERNAME IN('DB2ODESK', 'SDATA', 'DATABUFF', 'WORK','REPORT');
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值