在之前写过的一篇博客里说到如何通过exp和imp导出导入用户表,而在Oracle10g开始,引入了数据泵工具,这种工具包含之前版本的所有的导出导入工具的功能,并且速度更快更安全。
数据泵命令:
- expdp:导出工具
- impdp:导入工具
实验目的
将scott用户的表导出,然后导入到hr用户
实验过程
在Oracle10g\11g\12c,为了系统的安全,不允许再使用绝对路径,而是采用了一种映射的方式:绝对路径→目录对象。通过read和write该目录对象,以获取绝对路径的信息。
可以通过以下语句查询系统中目录对象的信息。
select * from dba_directories;
从上图中可以看到,有一个叫做DATA_PUMP_DIR的目录,该目录对象为expdp的默认目录对象。我们将这个目录对象作为之后导出的dmp文件的存放路径。赋予scott用户read和write该目录对象的权限。
grant read,write on directory DATA_PUMP_DIR to scott;
有了以上的准备工作之后,我们终于可以开始导出用户表数据了。
expdp导出用户表【逻辑备份】
在导出用户表之前,捋一下思路。
- directory=DATA_PUMP_DIR【dmp文件存放的目录对象名称】
- dumpfile=scott.dmp【dmp文件名】
- tables=(ex1,ex2)【导出的表名称】
现在开始导用户表
1、打开cmd
2、运行以下命令:
expdp scott/tiger@Q directory=DATA_PUMP_DIR dumpfile=scott.dmp tables=(ex1,ex2)
expdp username/password@db_name directory=目录对象名 dumpfile=dmp文件名 tables=(table1,table2)
可以看到在目录对象DATA_PUMP_DIR所指的绝对路径下生成了一个文件名为SCOTT的dmp二进制文件。
impdp导入用户表数据【逻辑恢复】
在导入数据之前,先给用户hr赋予read和write该默认目录对象的权限。
grant read,write on directory DATA_PUMP_DIR to hr;
现在把scott.dmp的数据导入hr用户。
1、打开cmd
2、运行以下命令:
impdp hr/hr@Q remap_schema=scott:hr directory=DATA_PUMP_DIR dumpfile=scott.dmp
impdp username/password@db_name remap_schema=user1:user2 dicectory=目录对象名 dumpfile=dmp文件名
其中remap_schema=user1:user2是指从用户1导入到用户2。可以看到dmp数据已经导入hr用户。
总结
1、在进行逻辑恢复时, 是利用逻辑备份的dmp文件进行的恢复,只能恢复到进行逻辑备份的时刻的数据。在那之后的数据更新不能恢复。
2、要想了解更多的关于expdp和impdp命令的知识,可以在cmd运行以下语句获取:
expdp -help
impdp -help