ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

expdp / impdp 用法详解

2021-09-24 21:02:43  阅读:213  来源: 互联网

标签:impdp expdp iZm5e5f4jmz3fgd9f0qhikZ dmp test 详解 demo oracle dir




一、注意事项:

EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。

二、使用expdp导出文件前的设置:

1、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建(我登录的是root用户),选取linux上一个实际目录,或者新建一个目录,这里我选的是'/usr/local/tomcat'这个已经有的目录,并将tomcat文件夹权限设为最高777,最简单的方式就是右键文件夹,修改属性.....:

进入oracle模式:su - oracle     
[oracle@iz2zehftd4ce4m2zqo3c6iz ~]$ sqlplus / as sysdba

SQL>create directory dmp_dir as '/usr/local/tomcat';

2、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)
SQL>select * from dba_directories;

3、给用户赋予在指定目录的操作权限,最好以system等管理员赋予(我这里登录的是root用户,所以设置为public)。
SQL>grant read,write on directory dmp_dir to public;

SQL> show user;

SQL> host

备注:删除目录语句:SQL> DROP DIRECTORY dmp_dir;

三、导出数据

退出sql模式到oracle

1、按用户导出数据

[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ expdp 用户名/密码@服务器IP地址/orcl schemas=用户名 DIRECTORY=dmp_dir DUMPFILE=20190603.dmp logfile=20190603dmp.log;

2、按表名导
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ expdp test_demo/test_demo@orcl TABLES=sys_log,dept dumpfile=sys_log.dmp DIRECTORY=dmp_dir;

按指定一类的表名进行导出,比如导出表名前缀为test_的所有表:

[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ expdp test_demo/test_demo@orcl TABLES=test_% dumpfile=sys_log.dmp DIRECTORY=dmp_dir;

3、按查询条件导
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ expdp test_demo/test_demo@orcl directory=dmp_dir dumpfile=sys_log1.dmp Tables=sys_log query=\"WHERE id=\'5280e\'\";

五、导入数据
1、导到指定用户下

如果想导入的用户已经存在,并且导入用户名和导出的用户名不一致:
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp user2/pass2 directory=dmp_dir dumpfile=TestDemo.dmp REMAP_SCHEMA=user1:user2  remap_tablespace=user1space:user2space  EXCLUDE=USER

如果想导入的用户不存在:
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$impdp system/passsystem directory=dmp_dir dumpfile=user1.dmp REMAP_SCHEMA=user1:user2

user2会自动建立,其权限和使用的表空间与user1相同,但此时用user2无法登录,必须修改user2的密码

如果想导入的用户已经存在,并且导入用户名和导出的用户名一致:

[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp test_demo/test_demo DIRECTORY=dmp_dir DUMPFILE=expdp.dmp SCHEMAS=test_demo;

impdp username/password table_exists_action=truncate  directory=DATA_PUMP_DIR dumpfile=expdpfilename.dmp logfile=implog.log

如果需要覆盖或追加数据,则需要添加table_exists_action命令:

例如,导入到指定用户下,并覆盖原有表数据:

[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp user2/pass2 table_exists_action=replace directory=dmp_dir dumpfile=TestDemo.dmp REMAP_SCHEMA=user1:user2 EXCLUDE=USER
table_exists_action含义:

skip 是如果已存在表,则跳过并处理下一个对象;

append是为表增加数据;

truncate是截断表,然后为其增加新数据;

replace是删除已存在表,重新建表并追加数据;

2、改变表的owner
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3、导入表空间
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4、导入数据库
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5、追加数据
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION

表导入完成后,登录plsql等工具,检查下function、view这些是否有报错,有报错的查找下代码原因,也可能是因为导入的原因需要重新编辑并运行下即可:

备注:密码有特殊字符的加上引号:'username/"psdf$@FS"'

如果要导入的数据库没有表空间,则在impdp语句后加上参数:TRANSFORM=segment_attributes:n

例如: impdp test_demo/test_demo DIRECTORY=dmp_dir DUMPFILE=expdp.dmp SCHEMAS=test_demo TRANSFORM=segment_attributes:n

有上述错误时,检查目录文件是否是777权限
————————————————
版权声明:本文为CSDN博主「论风煮雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_25034619/article/details/81382084

标签:impdp,expdp,iZm5e5f4jmz3fgd9f0qhikZ,dmp,test,详解,demo,oracle,dir
来源: https://www.cnblogs.com/lcword/p/15332616.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有