解决 imp导入提示IMP-00058以及IMP-00002: failed to open expdat.dmp for read
本人使用命令imp yqmanager/[email protected] file=/usr/yq2020_01_02.dmp ignore=y full=y;
往oracle数据库里面导dmp文件。
先出现错误提示IMP-00058: ORACLE error 12154 encountered
由于本人是在本机操作导入所以去掉实例名变成这样
imp yqmanager/a123 file=/usr/yq2020_01_02.dmp ignore=y full=y;
该错误不再出现。
接着运行imp yqmanager/a123 file=/usr/yq2020_01_02.dmp ignore=y full=y;
又出现新的错误提示IMP-00002: failed to open expdat.dmp for read 无法打开此dmp文件
网上查阅资料发现三种解决方案
1.你的文件目录放的不对,有可能是权限问题导致不能读dmp文件。
2.imp语句中目录不对。
3.文件真的损坏了
方法2试过了确认过了目录没问题所以排除。
方法3试过了确认文件没问题所以排除。
然后说下方法1 准备给dmp文件加权限chmod 777 /usr/yq2020_01_02.dmp
出现错误说是未找到这个dmp文件。
然后ls查看 确实没有这个文件。然后我很纳闷可是明明这个/usr下面有这个dmp文件啊。
最后给出我的解决历程。
由于我是docker安装的oracle,所以我把dmp文件挪到oracle挂载的目录下面/install/database(我的oracle是挂载的这个目录下面,别人视情况而定)。挪过去之后 ls 发现可以看到这个文件了。然后给予权限
chmod 777 /install/databse/yq2020_01_02.dmp
最后使用命令imp yqmanager/a123 file=/install/database/yq2020_01_02.dmp ignore=y full=y;
导入成功。这里看我的file已经是换过的目录 就是我daocker挂载oracle的目录。
总结
docker安装的oracle 使用命令imp时 需要把dmp文件放到自己oracle挂载的目录下面。
如果不是docker安装的oracle通过上面三种方案即可解决。
如有不对之处 还望轻喷。希望可以帮到有需要的人。