1、情景介绍:两台测试数据库,由于开发可以登录测试环境,由于不小心删掉了其中一台数据库中某表的几十万条数据,想要快速将另一台数据库中该表数据导入到被删除数据的数据库当中。
2、步骤介绍:(1)expdp导出dmp文件
(2)将dmp包放到另一台数据库中的目录下
(3)impdp导入 dmp文件
3、详细步骤
参考:https://jingyan.baidu.com/article/ca00d56c222aaee99eebcfa9.html
略有不同的是加入了如何在本机对远程服务器上进行这些操作
方法/步骤
(1)首先打开windows系统下的cmd窗口,最好以管理员权限运行。
(2)假如我们是要从Oracle的实例orcl中导出几张表的dmp文件,那么我们在打开cmd窗口后,先设置环境变量将Oracle的实例切换到orcl(set ORACLE_SID=orcl),然后再登录上sqlplus
(3)登录上sqlplus后,可以使用sql语句:select * from dba_directories来查看当前实例下有哪些dmp的导出目录可以使用,我们在导出dmp文件时可以选择其中一个来使用。
(4)退出sqlplus,使用命令expdp来导出我们需要的数据库表dmp文件:expdp EVGIS/EVgis_123$@orcl tables=EV_VERSION,EV_VERSIONFILE directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log。其中的EVGIS/EVgis_123$@orcl分别表示用户名/密码@实例名。如果是远程服务器要写成如下格式:expdp EVGIS/EVgis_123$@IP地址:端口号/orcl tables=EV_VERSION,EV_VERSIONFILE directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log。
(5)导出dmp文件后我们就可以将该文件导入到实例orcl中另外一个用户中了。导入命令:impdp Student/Student directory=DATA_PUMP_DIR table_exists_action=replace dumpfile=test.dmp logfile=test.log remap_tablespace=GIS:Student remap_schema=EVGIS:Student。如果是在本机操作远程服务器参考上面第4步的操作
其中,remap_tablespace表示改变表所在的表空间,冒号前面的是原来的表空间名,冒号后面的是目标表空间名;remap_schema表示改变表的所属用户,冒号前面的是原来的用户名,冒号后面的是目标用户名。