关于数据泵技术介绍: expdp和impdp是oracle数据库之间移动数据的工具。是oracle10g引入了最新的数据泵(data dump)技术,expdp和impdp只能在数据库服务端使用,不能在客户端使用。
数据泵技术作用: 1.实现逻辑备份和逻辑恢复 2.在数据库用户之间移动对象 3.在数据库之间移动对象 4.实现表空间搬迁 数据泵导出导入与传统导出导入的区别: 在10g之前,传统的导出和导入分别使用exp工具和imp工具,从10g开始,不仅保留了原有的exp和imp工具,还提供了数据泵导出导入工具expdp和impdp.使用expdp和impdp时应该注意的事项: 1)exp和imp是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。 2)expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。 3)imp只适用于exp导出文件,不适用于expdp导出文件;impdp只适用于expdp导出文件,而不适用于exp导出文件。
说明:源库10.0.0.9 oracle实例为 orcl001;源库实例orcl001上创建测试数据
采用sys或者system等管理员创建
--directory相关SQL语句:
注意: 导数的数据库用户需要拥有对directory_object的读写权限; 操作系统中需要已经存在directory_object指定的路径; oracle用户拥有对directory_object指定路径的读写权限; system用户导出用户,会将创建用户和授予系统权限的元数据也导出,普通用户不能导出这些元数据。
默认DATA_PUMP_DIR路径是/u01/oracle/tools/oracle11g/admin/orcl/dpdump/
--创建相应的back dir并且授权
--备注:删除目录语句: DROP DIRECTORY my_dir; --操作系统oracle用户下创建对应的目录
数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式
导出一张表,例:
提示:导出表时 采用system账户和普通用户导出信息都是一样的
导出多张表,例:
指定一类的表名进行导出,比如导出表名前缀为zhang的所有表:
导出表时,排除ZHANGSAN01表,注意表名称必须大写,而且必须用单引号引起来,而且需要使用转义符 例:
导出一个用户(导出这个用户下所有对象)例:
采用普通用户和system账户expdp导出数据是不一样的,system账户导出用户对象会多出USER,DEFAULT_ROLE,SYSTEM_GRANT,TABLESPACE_QUOTA system账户对用户zhangsan导出过程:
zhangsan账户对用户zhangsan导出过程:
-- 可以远程跨服务器执行expdp命令来备份,但是前提是源端服务器库必须提前创建directory,并且源端服务器系统提前创建好$oracle_home/admin/orcl/dpdump/zhangsan_backdir目录
导出多个用户,例:
--定义导出多张表:
具体执行过程如下:
--按条件 ID<=3导出
执行过程如下:
并行导出用户zhangsan(导出这个用户下所有对象):
导出用户元数据(包含表定义、存储过程、函数等等):
只导出用户的数据
导出用户存储过程,例:
导出用户函数和视图,例:
导出一个用户,但不包括索引,例:
导出整个数据库(sys、ordsys、mdsys的用户数据不会被导出)例:
导出表空间
导出可移动表空间 注意: --expdp需要使用system用户; --tablespace要进行read only设置
expdp导出的文件不能使用imp导入,只能通过impdp导入数据库; 导入时遇到已存在的对象,默认会跳过这个对象,继续导入其他对象; 导入时应确认dmp文件和目标数据库的tablespace、schema是否对应; 导入dmp文件时,应确定dmp文件导出时的命令,以便顺利导入数据。
拿到一个dmp文件,如果忘记了导出命令,可以通过以下方法确认(非官方,生产数据勿使用):确认dmp文件是exp导出还是expdp导出:
目标库上也得提前创建dba_directories 系统os上对应的zhangsan_backdir目录也得创建
说明:目标库为10.0.0.8机器,oracle实例为orcl
导入dmp文件中的所有数据,例:
并行导入:
导入元数据(包含表定义、存储过程、函数等等):
导入存储过程,例:
导入函数和视图,例:
导入数据,但不包括索引,例:
重命名表名导入,例:
重命名schema名导入,例
重命名表空间名导入,例:
导入时忽略所有对象的段属性,这样导入时对象都创建在目标数据库用户默认的表空间上
将dmp文件的ddl语句导入到一个文件,不导入数据库,例
导出zhangsan01表数据: 提前确定导出的表的owner,TABLESPACE_NAME,然后在目标库上提前创建对应的用户,表空间以及用户对表空间的读写权限
如果目标库不存在对应的用户和表空间,以及表空间的读写权限,可能会报下面错误:
报错解决办法就是目标库创建对应的用户,表空间和表空间的读写权限
源库导出指令:
目标库sql指令:
源库导入指令:
重命名表名导入,例:
2)导入到指定用户下
3)改变表的owner 导入 并导入到指定用户wangwu下 目标库不需要提前创建用户zhangsan和wangwu,会自己创建账户wangwu,而且目标库wangwu/pass可以登录查看导入的数据
将数据移到不同用户名下的不同表空间
源库全备份
将数据从zhangsan账户表空间zhangsan_db01迁移到账户wangwu表空间wangwu_db01下
将数据移到test1相同用户名下的不同表空间test2_data
将数据移到wangwu相同用户名下的不同表空间 多个表空间转换用逗号隔开
参考文档: https://www.modb.pro/db/7847 https://blog.51cto.com/u_/
到此这篇oracle教程(oracle教程入门精通)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/27378.html