记一次impdp导入失败,失败指令为ORA-39002 ORA-39070 ORA-29283 ORA-06512 ORA-29283

本文记录了在使用impdp导入数据库时遇到的错误‘ORA-39002, ORA-39070, ORA-29283, ORA-06512, ORA-29283’的解决方案。首先检查目录及权限,然后在数据库中创建并授权目录,创建用户库并赋予相应权限。当目录权限设置为777后,导入成功。此外,还提到了ORA-31640错误,解决办法是检查文件名大小写规范性。

今天对生产机数据库使用impdf导入的时候,出现如下错误,错误指令为:
“ORA-39002,ORA-39070,ORA-29283,ORA-06512,ORA-29283”。
在这里插入图片描述
特此记录解决方案如下:

第一步,排查目录是否存在,权限是否oracle:oinstall。发现存在且权限正确。
在这里插入图片描述
第二步,数据库中检查并确认是否授权
执行语句如下:

sqlplus / as sysdba;

alter session set container=wmp;//如果需要修改容器,则执行
select sys_context ('USERENV', 'CON_NAME') from dual;//查询容器更改是否生效

create or replace directory DUMP_DIR as  '/backup/zqw/dump';//创建目录
grant read,write on directory DUMP_DIR to enterprise,meta,wmsadmin,wmwhse1,wmwhse2,aacibus;//给用户授权

创建用户库并授权

create user meta PROFILE SCEUSER identified by WMmeta1 DEFAULT TABLESPACE SCE_COMMON TEMPORARY TABLESPACE SCE_COMMON_TMP;
grant create any table to  meta;
grant dba to meta;
grant execute on DBMS_LOCK to meta;
grant select on DBA_OBJECTS to meta;
grant create any sequence to meta;
grant read,write on directory DUMP_DIR to meta;

第三步,发现重新执行导入语句还是报错,则需要更改’/backup/zqw/dump’目录权限,更改为777

impdp meta/WMmeta1@WMPSRV DIRECTORY=DUMP_DIR DUMPFILE=meta.DMP REMAP_SCHEMA=meta:meta remap_tablespace=SCE_COMMON:SCE_COMMON  TRANSFORM=segment_attributes:n,OID:n EXCLUDE=STATISTICS logfile=imp_meta.log;
chmod -R 777 /backup/zqw/dump/  #更改目录权限777
chown -R oracle:oinstall  /backup/zqw/dump/  #更改目录拥有者为oracle

最后,重新执行impdb命令发现导入成功。

PS:如果还是无法成功导入,如果是多机子服务器,采用虚拟服务名,则在另外一台服务器上创建相同的目录即可!
在这里插入图片描述
在这里插入图片描述
如果出现ORA-31640错误:
在这里插入图片描述
则首先检查权限、目录是否正确,注意wmwhse30.DMP大小写,如果不规范,则导入不成功!这里DMP一定要大写!,改了之后就能正常导入了!
在这里插入图片描述

### ORA-39002 错误原因及解决方案 ORA-39002 是一个通用错误,表示 Data Pump 操作中存在无效的参数或语法问题。具体到 impdp 导入时出现该错误,通常与以下因素相关: #### 1. 参数文件或命令行参数配置错误 如果在执行 `impdp` 命令时,使用的参数文件或命令行参数格式不正确,可能导致 ORA-39002 错误。例如,参数名拼写错误、缺少必要的参数值或参数值格式不合法等[^1]。 #### 2. 权限不足 执行 `impdp` 的用户可能没有足够的权限来完成导入操作。例如,若需要将数据从一个模式导入到另一个模式(使用 `REMAP_SCHEMA` 参数),则执行导入的用户必须拥有 `IMP_FULL_DATABASE` 权限,或者目标模式的相应权限[^2]。 #### 3. 数据泵版本兼容性问题 源数据库和目标数据库之间的 Data Pump 版本不兼容也可能导致此错误。确保源数据库导出的 `.dmp` 文件能够被目标数据库正确解析,否则可能会触发 ORA-39002 或其他相关错误[^1]。 #### 解决方案 以下是针对 ORA-39002 错误的解决方案: #### 检查参数配置 仔细检查 `impdp` 命令中的参数是否正确。例如,确保所有必需的参数(如 `DIRECTORY` 和 `DUMPFILE`)都已正确指定,并且参数值符合预期格式。如果使用了参数文件,则验证文件内容是否无误。 ```bash impdp username/password@database DIRECTORY=dir_name DUMPFILE=dump_file_name LOGFILE=log_file_name ``` #### 验证用户权限 确认执行 `impdp` 的用户是否具备必要权限。对于跨模式导入,建议为用户授予 `IMP_FULL_DATABASE` 权限,或确保目标模式的所有者具有相应的对象权限[^2]。 ```sql GRANT IMP_FULL_DATABASE TO username; ``` #### 确保版本兼容性 检查源数据库和目标数据库Oracle 版本是否一致或兼容。如果版本不匹配,尝试升级目标数据库至与源数据库相同的版本,或使用较低版本的 Data Pump 工具进行导入[^1]。 #### 查看日志文件 通过 `LOGFILE` 参数生成的日志文件可以提供更多关于错误的详细信息。分析日志文件以定位具体的参数或权限问题[^2]。 --- ### 示例代码 以下是一个完整的 `impdp` 命令示例,包含常见参数配置: ```bash impdp system/manager@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=export.dmp LOGFILE=import.log REMAP_SCHEMA=source_schema:target_schema ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值