先简单介绍一下data pump:
Oracle 10g引入了DATA PUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATA PUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。DATA PUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。
注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。
以下是DATA PUMP的几个优点介绍:
1.数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。
2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。
3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改
我现在是要做的是将一个用户( PLATFORM) 下面的数据从oracle 11g导入到 oracle 12c的rac集群里面的。
查看A服务器(导出服务器)的数据库版本信息
查看RAC集群服务器的数据库版本信息
用data pump导出数据之前,需要建立目录,由于数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。
将A服务器上的 platform 用户的数据从oracle 11g导出
数据导出后,将导出文件拷贝到集群中的其中一个实例上面
输入oracle用户的密码后,文件就开始传了。
查看A机器上 PLATFORM 用户使用的表空间及表空间对应数据文件相关信息,以便在RAC上创建相关的表空间及数据文件
下面是在RAC集群上创建表空间及数据文件
创建用户,由于oracle 12c创建用户与oracle 11g,创建CDB用户
然后开始向RAC中导入数据(IMP_DIR目录就是对应的
/
u01/exp,创建步骤上面已经有了)
数据的导出和导入完成了。
以下是补充内容(摘抄):
在执行导入导出过程中,可以按Ctrl+C组合键退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP。以前的EXP,如果退出交互式模式,就会出错终止导出任务。由于EXPDP是数据库内部定义的任务,已经与客户端无关,退出交互之后会进入export的命令行模式,此时支持status等查看命令:
--已退出export模式后再次连接去查看JOB的状态用以下命令:
导出模式
按表模式导出:
expdp system/mingyue@HS2008 tables=hs_his.hisholdsinfo,hs_his.hisfundjour dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisjob1;
按查询条件导出:
expdp system/mingyue@HS2008 tables=hs_his.hisfuassettot dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisjob2 query='"where init_date between 20080501 and 20080701"';
注意:如果QUERY条件写得有问题那么下面总是会报以下的错误
ORA-39001: invalid argument value
ORA-39035: Data filter SUBQUERY has already been specified.
注意查询条件的引号,一对双引号一对单引号(单引号在内在外都可以)
多个表时:
QUERY=emp:\"WHERE username in ('aaa','bb')\",taba:\"WHERE rownum<5\"
按表空间导出:
Expdp system/mingyue@HS2008 dumpfile=tablespace_test.dmp tablespaces=HS_HIS_DATA,HS_HIS_IDX logfile=tablespace_test.log directory=TEST_EXPDP job_name=hs_hisjob6;
导出整个数据库:
expdp system/mingyue@HS2008 dumpfile =full.dmp full=y logfile=full.log directory=TEST_EXPDP job_name=hs_hisjob6;
使用exclude,include导出数据
Include导出用户中指定类型的指定对象
仅导出hs_his用户下以HISFU开头的所有表包含与表相关的索引,备注等不包含过程等其它对象类型:
expdp hs_his/handsome@HS2008 dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=TABLE:\"LIKE \'HISFU%\'\";
导出hs_his用户下排除HISFU开头的所有表:
expdp system/mingyue@HS2008 schemas=hs_his dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=TABLE:\"NOT LIKE \'HISFU%\'\";
仅导出hs_his用户下的所有存储过程:
expdp system/mingyue@HS2008 schemas=hs_his dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=PROCEDURE;
Exclude导出用户中指定类型的指定对象
导出hs_his用户下除出TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不会被导出:
expdp system/mingyue@HS2008 schemas=hs_his dumpfile=exclude_1.dmp logfile=exclude_1.log directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE;
导出hs_his用户下排除HISFU开头的所有表:
expdp hs_his/handsome@HS2008 dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE:\"LIKE\'HISFU%\'\";
导出hs_his用户下的所有对象,但是对于表类型只导出以HISFU开头的表:
expdp hs_his/handsome@HS2008 dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE:\"NOT LIKE \'HISFU%\'\";
注意:
1. 如果content=data_only那么导出时就不能使用exclude,include
2. LINUX及UNIX对于特殊字符都要加一个转义字符如’ ( )等这些字符在EXPDP中都要加上一个”\”进行转义,否则会有如下错误出现:
[oracle@LinuxRedHat expdpdump]$ expdp hs_his/handsome@HS2008 dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=table:"LIKE 'HISFU%'";
Export: Release 10.2.0.1.0 - Production on 星期六, 13 11月, 2010 17:54:42
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31641: unable to create dump file "/u03/expdpdump/include_1.dmp"
ORA-27038: created file already exists
Additional information: 1
数据泵导入
按表导入
导入expdp_test.dmp文件中的指定表,此文件是以system用户按schemas=hs_his导出的:
impdp hs_his/handsome@HS2008 dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP tables=hs_his.hisholdsinfo,hs_his.hisfundjour job_name=hs_histb1;
按用户导入
这种直接按用户导入的方法与EXP,IMP相比是用户可以不用存在可以直接导入因为EXPDP导出的时候会将用户相关的信息全部导出来,比如用户原来使用的密码,表空间,系统与操作权限等基本上保持用户与删除前的权限一致如下:
impdp system/mingyue@HS2008 schemas=hs_fund,hs_futures dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisut;
数据泵相 关视图
参考网址:
http://blog.sina.com.cn/s/blog_5636c6710100zhft.html
http://blog.csdn.net/lwei_998/article/details/6256853
http://blog.itpub.net/22664653/viewspace-668806/
Oracle 10g引入了DATA PUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATA PUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。DATA PUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。
注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。
以下是DATA PUMP的几个优点介绍:
1.数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。
2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。
3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改
我现在是要做的是将一个用户( PLATFORM) 下面的数据从oracle 11g导入到 oracle 12c的rac集群里面的。
查看A服务器(导出服务器)的数据库版本信息
- SQL> select * from v$version;
-
- BANNER
- --------------------------------------------------------------------------------
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- PL/SQL Release 11.2.0.1.0 - Production
- CORE 11.2.0.1.0 Production
- TNS for Linux: Version 11.2.0.1.0 - Production
- NLSRTL Version 11.2.0.1.0 - Production
- SQL> SELECT * FROM V$VERSION;
-
- BANNER CON_ID
- -------------------------------------------------------------------------------- ----------
- Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 0
- PL/SQL Release 12.1.0.2.0 - Production 0
- CORE 12.1.0.2.0 Production 0
- TNS for Linux: Version 12.1.0.2.0 - Production 0
- NLSRTL Version 12.1.0.2.0 - Production 0
- --创建目录
- SQL> create directory test_expdp as '/data/software';
-
- Directory created.
-
- -- 用户对目录复权
- SQL> grant read,write on directory test_expdp to platform;
-
- Grant succeeded.
- -- 查询目录视图
- SQL> SELECT * FROM ALL_DIRECTORIES;
- SQL> SELECT * FROM DBA_DIRECTORIES;
- [oracle@localhost software]$ expdp platform/******** schemas=platform dumpfile =platform0303.dmp logfile=platform0303.log directory=test_expdp job_name=hs_hisjob;
-
- Export: Release 11.2.0.1.0 - Production on Tue Mar 3 22:41:29 2015
-
- Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
-
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
- With the Partitioning, Oracle Label Security, OLAP, Data Mining,
- Oracle Database Vault and Real Application Testing options
- Starting \"PLATFORM\".\"HS_HISJOB\": platform/******** schemas=platform dumpfile=platform0303.dmp logfile=platform0303.log directory=test_expdp job_name=hs_hisjob
- Estimate in progress using BLOCKS method...
- Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
- Total estimation using BLOCKS method: 22.47 GB
- Processing object type SCHEMA_EXPORT/USER
- Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
- Processing object type SCHEMA_EXPORT/ROLE_GRANT
- Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
- Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
- Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC
- Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
- Processing object type SCHEMA_EXPORT/TABLE/TABLE
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type SCHEMA_EXPORT/TABLE/COMMENT
- Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
- Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION
- Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
- Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
- Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
- Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
- Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
- Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
- Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Processing object type SCHEMA_EXPORT/JOB
- . . exported "PLATFORM"."CRM_CMP_REPORT_LOG":"SYS_P21" 3.245 GB 12331067 rows
- . . exported "PLATFORM\"."CRM_CUSTOMERS_CONTACT" 2.028 GB 16874723 rows
- ......
- ......
- ......
- . . exported \"PLATFORM\".\"YM_WB_PF_IB\" 0 KB 0 rows
- . . exported \"PLATFORM\".\"YM_WB_PF_OB\" 0 KB 0 rows
- Master table \"PLATFORM\".\"HS_HISJOB\" successfully loaded/unloaded
- ******************************************************************************
- Dump file set for PLATFORM.HS_HISJOB is:
- /data/software/platform0303.dmp
- Job \"PLATFORM\".\"HS_HISJOB\" successfully completed at 22:58:37
- scp /data/software/platform0303.dmp oracle@192.168.3.230:/u01/exp
查看A机器上 PLATFORM 用户使用的表空间及表空间对应数据文件相关信息,以便在RAC上创建相关的表空间及数据文件
- -- 在A机器上查看用户 PLATFORM 的默认表空间
- SQL> SELECT USERNAME,DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME ='PLATFORM';
-
- USERNAME DEFAULT_TABLESPACE
- ------------------------------ ------------------------------
- PLATFORM PLATFORM
-
- -- 查看用户 PLATFORM 使用的表空间
- SQL> SELECT DISTINCT OWNER,TABLESPACE_NAME FROM DBA_EXTENTS WHERE OWNER LIKE 'PLATFORM';
-
- OWNER TABLESPACE_NAME
- ------------------------------ ------------------------------
- PLATFORM PLATFORM
-
- --查看表空间 PLATFORM 对应的数据文件
- SQL> SELECT FILE_NAME,TABLESPACE_NAME FROM DBA_DATA_FILES WHERE TABLESPACE_NAME IN ('PLATFORM');
-
- FILE_NAME TABLESPACE_NAME
- ---------------------------------------------- ------------------------------
- /data/ora11g/oradata/GDBNAME/platform01.dbf PLATFORM
- /data/ora11g/oradata/GDBNAME/platform02.dbf PLATFORM
- CREATE SMALLFILE TABLESPACE TABLESPACE1
- DATAFILE
- '+RACDATA/EM12C/DATAFILE/platform01' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED ,
- '+RACDATA/EM12C/DATAFILE/platform02' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED ;
- CREATE USER C##PLATFORM IDENTIFIED BY ********
- DEFAULT TABLESPACE PLATFORM
- TEMPORARY TABLESPACE \"TEMP\"
- ACCOUNT UNLOCK ;
-
- -- 复权
- ALTER USER \"C##PLATFORM\" DEFAULT ROLE \"DBA\";
- [oracle@12crac1 exp]$ impdp c##platform/****** fromuser=platform touser=c##platform dumpfile =platform0303.dmp logfile=platform0303.log directory=IMP_DIR job_name=hs_hisut;
-
- Import: Release 12.1.0.2.0 - Production on Wed Mar 4 14:35:35 2015
-
- Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
-
- Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
- With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
- Advanced Analytics and Real Application Testing options
- Legacy Mode Active due to the following parameters:
- ......
- ......
以下是补充内容(摘抄):
在执行导入导出过程中,可以按Ctrl+C组合键退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP。以前的EXP,如果退出交互式模式,就会出错终止导出任务。由于EXPDP是数据库内部定义的任务,已经与客户端无关,退出交互之后会进入export的命令行模式,此时支持status等查看命令:
- Export> status --查看当前JOB的状态及相关信息
- --DATA PUMP与传统的EXP/IMP相比它还可以对正在运行的JOB进行停止和启动:
- Export> stop_job --暂停JOB
- --此时通过status命令查看到这时JOB的状态值是UNDEFINED
- Export> start_job --重启暂停的JOB
- Export> kill_job --取消当前的JOB并释放相关客户会话
- Export> continue_client --通过此命令查看已连接JOB的日志
- Export> exit_client --通过此命令退出export模式
-
- [oracle@LinuxRedHat expdpdump]$ expdp platform/******** attach;
- [oracle@LinuxRedHat expdpdump]$ expdp platform/******** attach=system.HS_HISJOB
按表模式导出:
expdp system/mingyue@HS2008 tables=hs_his.hisholdsinfo,hs_his.hisfundjour dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisjob1;
按查询条件导出:
expdp system/mingyue@HS2008 tables=hs_his.hisfuassettot dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisjob2 query='"where init_date between 20080501 and 20080701"';
注意:如果QUERY条件写得有问题那么下面总是会报以下的错误
ORA-39001: invalid argument value
ORA-39035: Data filter SUBQUERY has already been specified.
注意查询条件的引号,一对双引号一对单引号(单引号在内在外都可以)
多个表时:
QUERY=emp:\"WHERE username in ('aaa','bb')\",taba:\"WHERE rownum<5\"
按表空间导出:
Expdp system/mingyue@HS2008 dumpfile=tablespace_test.dmp tablespaces=HS_HIS_DATA,HS_HIS_IDX logfile=tablespace_test.log directory=TEST_EXPDP job_name=hs_hisjob6;
导出整个数据库:
expdp system/mingyue@HS2008 dumpfile =full.dmp full=y logfile=full.log directory=TEST_EXPDP job_name=hs_hisjob6;
使用exclude,include导出数据
Include导出用户中指定类型的指定对象
仅导出hs_his用户下以HISFU开头的所有表包含与表相关的索引,备注等不包含过程等其它对象类型:
expdp hs_his/handsome@HS2008 dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=TABLE:\"LIKE \'HISFU%\'\";
导出hs_his用户下排除HISFU开头的所有表:
expdp system/mingyue@HS2008 schemas=hs_his dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=TABLE:\"NOT LIKE \'HISFU%\'\";
仅导出hs_his用户下的所有存储过程:
expdp system/mingyue@HS2008 schemas=hs_his dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=PROCEDURE;
Exclude导出用户中指定类型的指定对象
导出hs_his用户下除出TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不会被导出:
expdp system/mingyue@HS2008 schemas=hs_his dumpfile=exclude_1.dmp logfile=exclude_1.log directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE;
导出hs_his用户下排除HISFU开头的所有表:
expdp hs_his/handsome@HS2008 dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE:\"LIKE\'HISFU%\'\";
导出hs_his用户下的所有对象,但是对于表类型只导出以HISFU开头的表:
expdp hs_his/handsome@HS2008 dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE:\"NOT LIKE \'HISFU%\'\";
注意:
1. 如果content=data_only那么导出时就不能使用exclude,include
2. LINUX及UNIX对于特殊字符都要加一个转义字符如’ ( )等这些字符在EXPDP中都要加上一个”\”进行转义,否则会有如下错误出现:
[oracle@LinuxRedHat expdpdump]$ expdp hs_his/handsome@HS2008 dumpfile=include_1.dmp logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=table:"LIKE 'HISFU%'";
Export: Release 10.2.0.1.0 - Production on 星期六, 13 11月, 2010 17:54:42
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31641: unable to create dump file "/u03/expdpdump/include_1.dmp"
ORA-27038: created file already exists
Additional information: 1
数据泵导入
按表导入
导入expdp_test.dmp文件中的指定表,此文件是以system用户按schemas=hs_his导出的:
impdp hs_his/handsome@HS2008 dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP tables=hs_his.hisholdsinfo,hs_his.hisfundjour job_name=hs_histb1;
按用户导入
这种直接按用户导入的方法与EXP,IMP相比是用户可以不用存在可以直接导入因为EXPDP导出的时候会将用户相关的信息全部导出来,比如用户原来使用的密码,表空间,系统与操作权限等基本上保持用户与删除前的权限一致如下:
impdp system/mingyue@HS2008 schemas=hs_fund,hs_futures dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisut;
数据泵相 关视图
- SELECT * FROM V$SESSION_LONGOPS;
- SELECT * FROM DBA_DATAPUMP_JOBS;
- SELECT * FROM user_Datapump_Jobs;
参考网址:
http://blog.sina.com.cn/s/blog_5636c6710100zhft.html
http://blog.csdn.net/lwei_998/article/details/6256853
http://blog.itpub.net/22664653/viewspace-668806/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30150152/viewspace-1449890/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30150152/viewspace-1449890/