oracle数据泵导入导出数据

数据泵是10g推出的功能,个人倒数据比较喜欢用数据泵。

其导入的时候利用remap参数很方便转换表空间以及schema,并且可以忽略服务端与客户端字符集问题(exp/imp需要排查字符集)。

数据泵也有不方便的地方,如果远程导出导入,必须安装数据库服务端(client不行);需要在数据库中创建一个路径directory(dba_directories);并且主流工具支持exp/imp的导入导出(plsql developer),所以发现数据泵流行程度没有想象中高。

以下简单介绍schema的导入导出

以schema方式导出生产库用户下所有对象,并导入测试库。

注:eamdb为生产库,eamprd为生产库用户,密码为eamprd

eamuat为测试库,eamprduat为测试库用户,密码为eamprduat

一、生产库的导出(以sqlplus命令行的方式)。

1.以sys或者system用户身份登录生产数据库。

2.创建schema导出路径(DUMP_DIR名称可替换),并在dba_directories中查看

create directory DUMP_DIR as ‘/xxx/xxx’;
select * from dba_directories;

3.把导出路径与导出权限授权给eamprd,如果用system等高级帐号导出,则不用。

grant read,write on directory DUMP_DIR to eamprd;
grant exp_full_database to eamprd;

4.退出sqlplus,在oracle系统用户下运行,导出对应的SCHEMA,推荐第二种。

expdp eamprd/[email protected] DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp
expdp system/[email protected] directory=dump_dir dumpfile=eamdb.dmp schemas=eamprd

    导出重点参数:

版本:高往低需加version=xx.x  导出某些张表tables=xxxx  content=metadata_only(只要结构)   content=data_only(只要数据)

5.把eamdb.dmp拷贝到测试库。

二、测试库的导入

1.以sys或者system身份登陆测试库。

2.建立导入表空间和临时表空间(名称、路径、表空间大小,请自行替换)。

create tablespace tbs_EAMUAT datafile ‘/xxxx/xxxxx/EAMUAT.DBF‘ size 10240M autoextend on next 1024M maxsize 20480M;
create temporary tablespace EAMUAT_TEMP tempfile ‘/xxx/xxx/EAMUAT_TEMP.DBF‘ size 5120M;

3.建立用户及赋予权限(也可以不建立用户),导入时最好给予用户dba权限,以防导入时创建某些对象权限不够,注意需要回收其对users表空间的权限。

create user eamprduat identified by eamprduat default tablespace tbs_EAMUAT temporary tablespace EAMUAT_TEMP;
grant connect,resource,create view,create session,dba to eamprduat;
revoke unlimited tablespace from eamprduat;
alter user eamprduat quota unlimited on tbs_EAMUAT;

4.建立导入路径(把eamdb.dmp放在此路径下),并授权。

create directory DUMP_DIR as ‘/xxxxx/xxxxx‘;
grant read,write on directory DUMP_DIR to eamprduat;

5.导入数据(在oracle系统用户下运行),注意remap_schema参数,请自行替换

impdp eamprduat/[email protected] DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp LOGFILE=impdp.log remap_schema=eamprd:eamprduat;

导入重点参数:

remap_schema=eamprd:eamprduat,eamxxx:xxx,xxx:xxx

remap_tablespace=eamdev:eamxxx,eamxxx:xxx,xxx:xxx

table_exists_action=replace(替换)append(追加)

exclude=table_statistics 此参数是取消对表的统计信息收集,如果表太多,不取消的话特别慢,之后可以手动收集,或等oracle自动收集。

execute dbms_stats.gather_table_stats(ownname=>‘USERNAME‘,tabname=>‘TABLE_NAME‘,cascade=>TRUE)

如导入报错:ORA-31684: Object type USER:"xxxxx" already exists,不用理会,因为之前建立了用户。

也可以在导入的语句中直接remap一个不存在的用户,会自动生成,其密码和权限与导出时候一样,但其表空间如果不想用users,必须手工创建。

原文地址:https://www.cnblogs.com/livebetter/p/9248568.html

时间: 2024-08-14 01:51:45

oracle数据泵导入导出数据的相关文章

Oracle之数据泵导入/导出数据

以前习惯用imp/exp导入导出数据,现在我们来搞一把数据泵导入导出的方法.它比之于imp/exp的方式的优点自不必说---速度快! 但是很不幸,我在导出数据的时候报错了,我擦,这特么就尴尬了.于是,神技乍现,康哥就擅长解决问题有木有?呀?乍一看这报错也是没谁了,完全看不懂啊!别害怕,遇到这样的报错就是文件问题,与文件相关的要么权限要么路径,这里是指数据库内部不存在这个文件,但是我在Oracle用户下面创建了啊.没用的,你要在数据库内部创建哦,记住是内部.来,我们操作一把. 来吧朋友,开始我们的

Oracle 用数据泵导入导出数据

oracle expdp导出数据 expdp username/[email protected] dumpfile=1.dmp 在数据库服务器的命令行中执行上面的命令,会在app\hisense_jtpt\admin\orcl\dpdump生成一个1.dmp文件 其中orcl是SID名称 oracle impdp导入数据 impdp newUser/[email protected] dumpfile=1.dmp remap_schema=oldUser:newUser

在linux环境上对oracle数据库的数据泵导入导出操作

需求:公司搭建的报表库环境数据来自于生产环境oracle数据,因此需要使用kettle将oracle数据每天定时导入到报表数据库中(本文不讨论如何用kettle导数据,不赘述),若要导数据我们需要一套完善的生产oracle数据库的表结构.同时环境搭建以及oracle数据库都在linux环境下部署,因此,需要在linux环境下使用数据泵技术将数据完成导入导出 以上为需求概述 具体实现(即:操作步骤): su - root --切换root用户(由于不知道oracle用户的密码使用root来登录or

Oracle 12c pdb的数据泵导入导出

12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.在为pdb做数据泵导入导出时和传统的数据库有少许不同.           1,需要为pdb添加tansnames           2,导入导出时需要在userid参数内指定其tansnames的值,比如 userid=user/[email protected]   数据泵导入导出例子 1.查看当前的SID,查看pdb并切换到容器数据库,这里的pluggable数据库是pdborcl [[email pro

Oracle 数据泵导入导出总结

Oracle 数据泵(IMPDP/EXPDP)导入导出总结 Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常运维的数据库对象少则几千,多则几万甚至几十万,所以传统exp/imp就会非常耗时,而数据泵方式就因此脱引而出,下面就详细总结一下数据泵的使用方法,希望能给初学者带来帮助. 一.新建逻辑目录 最好以system等管理员创建逻辑目录,Oracle不会自动创建实际的物理目录“D:\oracleData”(

expdp/impdp 数据泵导入导出

expdp/impdp 数据泵导入导出 原创 小关enter 发布于CSDN论坛. 分类专栏: oracle 本文链接:https://blog.csdn.net/gty931008/article/details/86160808 业务场景: 在工作中,涉及到oracle数据库迁移,使用navicat等其他工具 容易报错,一系列问题很麻烦,今天记录一下操作流程及个人理解(文章参考了很多文档和博客): EXPDP数据导出 请自行修改目录路径和自定义的表名,否则出现错误很难查找~ 一般expdp流

6、数据泵导入导出操作

6.0.数据泵导入导出注意事项: 1.EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用: 2.数据泵的导出导入可以使用dba用户(管理所有的表空间),也可以使用普通用户(比如开发权限,只能管理自己的表空间), 但是普通用户需要授权转存储目录可读可写; 3.在下面的实验中使用的是dba用户进行操作: 6.1.登录到oracle实例: [[email protected] ~]$ echo $ORACLE_SID orcl [[email protecte

oracle 数据泵导入导出

--21.1 Data Pump工具 Data Pump 从oracledatabase 10g开始引入了data pump(数据泵)工具,它提供了一种基于服务器的数据导出导入使用程序. 所有的data pump都作为一个服务器进程,数据不再必须由一个客户程序处理.Data Pump工具的导出和导入实现 Oracle数据库之间数据的传输. Data Pump工具中包含Data Pump Export和Data Pump Import,所使用的命令行客户程序为expdp和impdp. [注意] 在

数据泵导入导出

数据泵文件 expdp介绍 EXPDP命令行选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下ATTACH=[schema_name.]job_nameSchema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:Expdp scott/tiger ATTACH=scott.export_job 2. CONTENT该选项用于指定要导出的内容.默认