在Oracle11G之前我们通常的备份和恢复策略用的可能都是imp/emp简单快速,上手方便,当时当上了11G之后,多出了一个Impdp/Empdp命令,这俩命令的出现主要是为了解决Oracle11G在使用上一些差别而出现的。在Oracle11g中,exp默认是不能导出空表,用传统的exp/imp比较麻烦,所以出现了。
我们通常使用的时候,都是将表结构建立在用户的下面,所以我们一般备份数据都是按照用户来进行备份,但是用户下的数据都是存储在表空间的,所以备份数据之前,先查看数据库用户有那些表空间,将表空间名称进行记录,在恢复数据库的时候要新建这些表空间,否则数据无法准确恢复。建立完表空间后,登录plsql或者是sqlplus,以管理员的身份登录,执行一下操作
connect sys/password as sysdba
create or replace directory db_back as 'D:db_back';
grant read,write on directory db_back to sys;
select * from dba_directories;
通过以上步骤实际上是建立的逻辑路径,不会真的在硬盘中建立相印的文件,还需手工在D盘建立db_back文件目录,以后无路备份还是恢复,同自动将备份文件和日志文件定位到这个盘符。
导出数据库备份:
empdp sys/password Directory db_back schemas=要备份的用户名 dumpfile=backup.dmp;
导入数据库备份
impdp sys.password directory db_back dumpfile=backup.dmp remap_schema=备份出来的用户:备份进入的用户 logfile=logfile.log transform=OID:N;
《名词解释》
sys/password-----------管理员用户名和密码(system也可以)
directory------------------数据库中创建的逻辑路径
schemas------------------需要备份的用户名
dumpfile------------------备份数据库文件
remap_schema---------前面的用户为备份出来的用户,后面的用户为备份要导入的用户,是用户之前的映射
transform-OID:N------赋予的新的OID,此处一般不需要修改。
导出HR用户下所有数据
[oracle@oracle ~]$ expdp system/oracle dumpfile=hr_expdp.dmp logfile=hr_expdp.log schemas=hr directory=d1
把HR用户所有数据导入到HR6中
impdp system/oracle remap_schema=hr:hr6 dumpfile=hr_expdp.dmp logfile=hr6_impdp.log directory=d1;
导出与导入空表
expdp system/oracle dumpfile=kongbiao.dmp tables=hr.employees content=metadata_only directory=d1
impdp system/oracle remap_schema=hr:scott dumpfile=kongbiao.dmp directory=d1
Content=data_only 只导出数据
Content=metadata_only 只导出对象定义