Oracle10g数据导入导出
简介
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端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改
创建DIRECTORY
DATA PUMP要求为将要创建和读取 的数据文件及日志文件创建目录,这个参数是用来定义一个目录,前面已经提到数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。
注意:在开始操作之前要验证外部目录是否存在,并且下达create directory命令的用户需要拥有create any directory的系统权限。
下面给出一个创建名为TEST_EXPDP的目录并授予hs_user,hs_his用户访问此目录读/写权限。
SQL> Create directory TEST_EXPDP as '/u03/expdpdump';
SQL> Grant read,write on directory TEST_EXPDP to hs_user,hs_his;
|
查看数据库中已创建的directory的两个视图:
SELECT * FROM ALL_DIRECTORIES;
SELECT * FROM dba_DIRECTORIES;
|
数据泵导出
[oracle@LinuxRedHat u03]$ expdp system/mingyue@HS2008 schemas=hs_his,hs_futures dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP;
Export: Release 10.2.0.1.0 - Production on 星期三, 10 11月, 2010 0:16:04
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
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/********@HS2008 schemas=hs_his,hs_futures dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 1.714 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/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
|
如上面的清单所显示的只是罗列出来即将导出来的所有数据库对象,在导出过程中,DATA DUMP创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现,如下:
[oracle@LinuxRedHat u03]$ expdp system/mingyue@HS2008 schemas=hs_his dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisjob;
Export: Release 10.2.0.1.0 - Production on 星期三, 10 11月, 2010 0:36:56
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
Starting "SYSTEM"."HS_HISJOB": system/********@HS2008 schemas=hs_his dumpfile =expdp_test.dmp logfile=expdp_test.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: 1.315 GB
|
在执行过程中,可以按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模式
--已退出export模式后再次连接去查看JOB的状态用以下命令:
[oracle@LinuxRedHat expdpdump]$ expdp system/mingyue attach;
[oracle@LinuxRedHat expdpdump]$ expdp system/mingyue 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.
按表空间导出:
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://hi.baidu.com/edeed/blog/item/9e3b9e2fb2209c3b1f308915.html
http://www.phpfans.net/article/htmls/201006/Mjg3ODE5.html
http://hi.baidu.com/hzfsai/blog/item/8f1c2d4c4cd346f7d62afcab.html
相关推荐
### Oracle 10g 数据导入导出详解 #### 一、概述 Oracle 10g 引入了一项新技术——**数据泵**(Data Pump),它为数据库管理员(DBA)及开发人员提供了一种高效的方式,可以快速地在不同的 Oracle 数据库之间迁移数据...
Oracle 19c 备份恢复-导入导出 ...Oracle 19c 备份恢复-导入导出是指使用 exp 和 imp 工具实现数据库的备份恢复和数据的导入导出,通过选择合适的工作方式、模式和选项,可以满足不同的备份恢复和数据导入导出需求。
#### 三、Oracle 10g数据导入到Oracle 11g 1. **导出步骤**: - 在Oracle 10g上执行: ``` exp username/password@database_name file=backup_file_path ``` - 创建备份文件。 2. **导入步骤**: - 在Oracle...
Oracle 11G 导入导出(imp 和 exp)少表解决方法 Oracle 11G 是一个功能强大且复杂的数据库管理系统,它提供了多种方式来导入和导出数据。然而,在使用 Oracle 11G 时,用户可能会遇到一些问题,例如无法导出空表...
本节将详细介绍如何解决Oracle 10g数据导入到Oracle 9i的问题,并特别关注如何处理含有BLOB/CLOB的大字段。 ##### 步骤一:安装Oracle 9i客户端 确保安装了Oracle 9i客户端,并配置好环境。这一步是为了能够在...
接下来是将之前导出的数据导入到Oracle 10g环境中的步骤: 1. **准备导入环境**:如果导出数据的计算机无法连接到目标Oracle 10g数据库,则需要在一台能够连接到目标数据库的计算机上重复上述的第一步至第四步,即...
Oracle 数据导入导出是数据库管理中的重要操作,用于在不同环境之间转移数据,备份和恢复数据,以及进行数据迁移。本文将深入探讨Oracle数据库的数据导入导出机制,包括使用的主要工具、过程和最佳实践。 Oracle ...
4. **导入数据**:现在,你可以使用`impdp`工具将导出的数据导入到同一个或不同的11G环境中,由于所有的表(包括空表)都被正确导出,因此导入过程应该能够成功,且不会影响到触发器、函数和过程的执行。 5. **版本...
**数据导入导出是Oracle管理的重要组成部分**。常用的工具包括`expdp`和`impdp`。 1. **导出数据**: 使用`expdp`命令导出数据。 - 示例命令: `expdp username/password directory=dir_name dumpfile=filename.dmp ...
Oracle 10g版本引入了许多增强功能,其中就包括导入导出工具。这些工具对于数据迁移、备份和恢复等任务至关重要。以下是对给定文件中涉及的Oracle 10g导入导出工具的详细解释: 1. **exp(Export)**:这是Oracle...
Oracle 数据泵(Data Pump)是Oracle数据库从10g版本开始引入的一种高效的数据导入和导出工具,相较于传统的EXP和IMP工具,它在处理大量数据时具有显著的性能优势。本文将详细介绍数据泵的主要特点、工作原理以及...
### Oracle 11g 数据备份导入到 10g 数据库中的详细操作指南 #### 一、背景介绍 在实际工作中,有时会遇到需要...以上就是关于Oracle 11g数据备份导入到10g数据库中的详细操作流程,希望能够帮助到有类似需求的朋友。
Oracle数据库的导入导出是数据库管理中的重要环节,主要用于数据迁移、备份恢复和系统复制等操作。本篇文章将深入探讨Oracle数据库的导入导出过程,以及处理“process挂起”问题的方法。 首先,Oracle数据库提供了...
Oracle 11G 是Oracle公司推出的一个企业级数据库管理系统,其本地精简导入和导出功能是数据库管理员在日常工作中经常使用的工具,主要用于数据迁移、备份恢复和性能优化。在这个场景下,用户需要一个免安装的版本,...
oracle11g 数据库库导入导出说明,菜鸟级别数据库导入导出说明
通过使用 EXPDP 和 IMPDP 命令,我们可以轻松地将 Oracle 11g 数据从 Windows 服务器导出到 Linux 服务器上,并且可以将数据导入到 Linux 服务器上的 Oracle 数据库中,从而实现数据的迁移和集成。
Oracle数据库不同版本间的数据导入导出可能有特定的要求。从Oracle 11G向10G导入时,11G的导出文件可能包含10G不支持的新特性或格式。解决这个问题的方法通常包括: 1. 使用低版本的导出工具:在11G环境中,使用与...