用imp语法导入dmp文件:
imp mdm/mdm@SYSWARE file= E:Product9y5s5.MDM20161024.DMP full=y
报错 IMP-00002:无法打开 *.dmp 进行读取
反复检查语法无误,经过查找资料,怀疑dmp是用expdp导出的文件,必须要用impdp导入
创建路径lsj 并给mdm用户授权
--导入时必须先创建文件夹路径
create or replace directory lsj as 'E:dmp';
--给使用的用户授权(读写权限)
grant read,write on directory lsj to mdm;
--查看目录及权限 SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
将dmp文件 防到定义的directory中
impdp mdm/mdm@SYSWARE schemas=sysware directory=lsj file=20161024.DMP
结果报错:ORA-39165:未找到方案 SYSWARE;
因为库文件是同事传过来的,我怀疑schemas 的表空间名不对,然后联系更改!
(schemas的表空间必须是在 dmp文件中包含的才行)
原来给的dmp中表空间为p2m_mdm_20161012 更改后执行
impdp mdm/mdm@SYSWARE schemas=p2m_mdm_20161012 directory=lsj file=20161024.DMP
结果报错:
ora-31655:尚未为作业选择数据或数据对象
ora-39154:外部方案中的对象已从导入中删除
:
原来是要导入的对象表空间跟现在的表空间不匹配
除本地建立一个同名为p2m_mdm_20161012 的表空间;即可解决!
那怎有没有办法不建立同名表空间导入呢?当然可以需要更换参数:用remap_schema 替换 schemas,然后执行
impdp mdm/mdm@SYSWARE remap_schema=p2m_mdm_20161012:mdm directory=lsj dumpfile=20161024.DMP
结果报错
ora-39083:对象类型user创建失败,出现错误;
ora-31625:必须有方案system才能导入此对象,但此方案不可访问
ora-01031:权限不足
权限不足,用DBA用户登录数据库,给导入库的用户先授权
grant connect,resource to mdm;
grant create session,dba to mdm;
再执行 impdp mdm/mdm@SYSWARE directory=lsj file=20161024.DMP REMAP_SCHEMA=p2m_mdm_20161012:mdm
如果不同表空间 必须建立 相同的表空间名 已经实例名相同的表空间放才能成功!