相关参数以及导出示例:
exp/imp
- exp username/password@net_service_name file=dump_name.dmp full=y
- imp username/password@net_service_name file=dump_name.dmp fromuser=form touser=to
expdp/impdp
- create or repalce directory DUMP_DIR as 'file_path'
- grant read, write on directory DUMP_DIR to ***
- expdp username/password@net_service schemas=fromuser dumpfile=expdp.dmp DIRECTORY=DUMP_DIR
- impdp username/password@ DIRECTORY=DUMP_DIR DUMPFILE=expdp.dmp REMAP_SCHEMA=fromuser:touser
Oracle数据导入导出imp/exp就相当于Oracle数据还原与备份。
exp命令可以把数据从远程数据库服务器导出到本地的DMP文件;
imp命令可以把DMP文件从本地导入到远处的数据库服务器中。
利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
- 用户模式:导出用户所有对象及对象中的数据
- 表模式:导出用户所有表或者指定表
- 整个数据库:导出数据库中所有的对象
关于数据泵的概述
在Oracle 10g中,数据泵(Data Pump)的所有工作都有数据实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导入/导出的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而单进程瓶颈被彻底解决。
通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的速度,以加快或减少资源消耗。
EXPDP和IMPDP的本质在于,通过API调用,把传统的EXP/IMP类交付式模式的操作,转变成数据库内部的job任务,从而实现了任务的可终止与重启动。
expdptest/test@acfdirectory=dpdata dumpfile=full.dmp full=y
在执行过程中,可以拿下Ctrl+C组合键,退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP。以前的EXP,如果退出交互式模式,就会出错终止导出任务。
导出数据
1)按用户导
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
还原数据
1) 导到指定用户下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改变表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)导入表空间
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)导入数据库
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加数据
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION=append;
ERROR:
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ANSWER:
IMPDP 创建的Directory都是基于Server端的Host的;
所以还是按照以前的IMP思路,利用Client端Path创建Directory,会出现以上错误。
1. DIRECTORY
指定转储文件和日志文件所在的目录
DIRECTORY=directory_object
Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录
Expdp scott/tiger DIRECTORY= DMP DUMPFILE=a.dump
create or replace directory dmp
as 'd:/dmp'
expdp zftang/zftang@zftang directory=dmp dumpfile=test.dmp content=metadata_only
2. CONTENT
该选项用于指定要导出的内容.默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENT为ALL时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义
expdp zftang/zftang@zftang directory=dmp dumpfile=test.dmp content=metadata_only
----------只导出对象定义
expdp zftang/zftang@zftang directory=dmp dumpfile=test.dmp content=data_only
----------导出出所有数据
3. DUMPFILE
用于指定转储文件的名称,默认名称为expdat.dmp
DUMPFILE=[directory_object:]file_name [,….]
Directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象
expdp zftang/zftang@zftang directory=dmp dumpfile=test1.dmp
数据泵工具导出的步骤:
1、创建DIRECTORY
create directory dir_dp as 'D:/oracle/dir_dp';
2、授权
Grant read,write on directory dir_dp to zftang;
--查看目录及权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
3、执行导出
expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1
With the Partitioning, OLAP and Data Mining options
启动 "ZFTANG"."SYS_EXPORT_SCHEMA_01": zftang/********@fgisdb sch
ory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log; */
备注:
1、directory=dir_dp必须放在前面,如果将其放置最后,会提示 ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-39087: 目录名 DATA_PUMP_DIR; 无效
2、在导出过程中,DATA DUMP 创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现
如下改成:
expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log,job_name=my_job1;
3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdp zftang/zftang attach=zftang.my_job1执行该命令时一直提示找不到job表
数据泵导出的各种模式:
1、 按表模式导出:
expdp zftang/zftang@fgisdb tables=zftang.b$i_exch_info,zftang.b$i_manhole_info dumpfile =expdp_test2.dmp logfile=expdp_test2.log directory=dir_dp job_name=my_job
2、按查询条件导出:
expdp zftang/zftang@fgisdb tables=zftang.b$i_exch_info dumpfile =expdp_test3.dmp logfile=expdp_test3.log directory=dir_dp job_name=my_job query='"where rownum<11"'
3、按表空间导出:
Expdp zftang/zftang@fgisdb dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBF logfile=expdp_tablespace.log directory=dir_dp job_name=my_job
4、导出方案
Expdp zftang/zftang DIRECTORY=dir_dp DUMPFILE=schema.dmp SCHEMAS=zftang,gwm
5、导出整个数据库:
expdp zftang/zftang@fgisdb dumpfile =full.dmp full=y logfile=full.log directory=dir_dp job_name=my_job
impdp导入模式:
1、按表导入
p_street_area.dmp文件中的表,此文件是以gwm用户按schemas=gwm导出的:
impdp gwm/gwm@fgisdb dumpfile =p_street_area.dmp logfile=imp_p_street_area.log directory=dir_dp tables=p_street_area job_name=my_job
2、按用户导入(可以将用户信息直接导入,即如果用户信息不存在的情况下也可以直接导入)
impdp gwm/gwm@fgisdb schemas=gwm dumpfile =expdp_test.dmp logfile=expdp_test.log directory=dir_dp job_name=my_job
3、不通过expdp的步骤生成dmp文件而直接导入的方法:
--从源数据库中向目标数据库导入表p_street_area
impdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area logfile=p_street_area.log job_name=my_job
igisdb是目的数据库与源数据的链接名,dir_dp是目的数据库上的目录
4、更换表空间
采用remap_tablespace参数
--导出gwm用户下的所有数据
expdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp SCHEMAS=gwm
注:如果是用sys用户导出的用户数据,包括用户创建、授权部分,用自身用户导出则不含这些内容
--以下是将gwm用户下的数据全部导入到表空间gcomm(原来为gmapdata表空间下)下
impdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp remap_tablespace=gmapdata:gcomm
Oracle10g数据泵impdp参数详解 | ||
2011-6-30 12:29:05 | ||
导入命令Impdp • ATTACH 连接到现有作业, 例如 ATTACH [=作业名]。 • CONTENT 指定要加载的数据, 其中有效关键字为: (ALL), DATA_ONLY 和 METADATA_ONLY。 • DIRECTORY 供转储文件, 日志文件和 sql 文件使用的目录对象。 • DUMPFILE 要从 (expdat.dmp) 中导出的转储文件的列表,例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。 • ENCRYPTION_PASSWORD 用于访问加密列数据的口令关键字。此参数对网络导入作业无效。 • ESTIMATE 计算作业估计值, 其中有效关键字为:(BLOCKS) 和 STATISTICS。 • EXCLUDE 排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。 • FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN。 • FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间。 • FULL 导出整个数据库 (N)。 • HELP 显示帮助消息 (N)。 • INCLUDE 包括特定的对象类型, 例如INCLUDE=TABLE_DATA。 • JOB_NAME 要创建的导出作业的名称。 • LOGFILE 日志文件名 (import.log)。 • NETWORK_LINK 链接到源系统的远程数据库的名称。 • NOLOGFILE 不写入日志文件 (N)。 • PARALLEL 更改当前作业的活动 worker的数目。 • PARFILE 指定参数文件。 • QUERY 用于导出表的子集的谓词子句。 • REMAP_DATAFILE 在所有 DDL 语句中重新定义数据文件引用。 • REMAP_SCHEMA 将一个方案中的对象加载到另一个方案。 • REMAP_TABLESPACE 将表空间对象重新映射到另一个表空间。 • REUSE_DATAFILES 如果表空间已存在, 则将其初始化 (N)。 • SCHEMAS 要导入的方案的列表 (登录方案)。 • SKIP_UNUSABLE_INDEXES 跳过设置为无用索引状态的索引。 • SQLFILE 将所有的 SQL DDL 写入指定的文件。 • STATUS 在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。 • STREAMS_CONFIGURATION 启用流元数据的加载 • TABLE_EXISTS_ACTION 导入对象已存在时执行的操作。有效关键字: (SKIP), APPEND, REPLACE 和 TRUNCATE。 • TABLES 标识要导出的表的列表 -只有一个方案。 • TABLESPACES 标识要导出的表空间的列表。 • TRANSFORM 要应用于适用对象的元数据转换。有效转换关键字为: SEGMENT_ATTRIBUTES, STORAGE, OID 和 PCTSPACE。 • TRANSPORT_DATAFILES 按可传输模式导入的数据文件的列表。 • TRANSPORT_FULL_CHECK 验证所有表的存储段 (N)。 • TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。 • VERSION 要导出的对象的版本, 其中有效关键字为: HELP Oracle 用户进入操作系统: IMPDP – help 或者 IMPDP help=y可以列出impdp相关的所有参数列表及介绍。
IMPDP与EXPDP有很多参数的使用方式相同,相同部分在此不在一一描述。
REMAP_SCHEMA 该选项用于将源方案的所有对象装载到目标方案中。本参数实际基本同imp的fromuser touser语句。 参数举例: REMAP_SCHEMA=source_schema:target_schema 应用举例: impdp scott/test dumpfile=scott.dmp directory=dump_dir logfile=imp.log job_name=cases_impdp REMAP_SCHEMA=dbtest:scott REMAP_TABLESPACE * 该选项用于将源表空间的所有对象导入到目标表空间中。 参数举例: REMAP_SCHEMA=source_tablespaces:target_tablespaces 应用举例: impdp scott/test dumpfile=scott.dmp directory=dump_dir logfile=imp.log job_name=cases_impdp REMAP_TABLESPACE=user:user1 ESTIMATE 估算被导入表所占用磁盘空间。默认值是BLOCKS。可选值是BLOCKS,STATISTICS。 设置为BLOCKS时,oracle会按照目标对象所占用的数据库个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据统计信息中记录的内容估算。 参数举例: estimate=blocks 应用举例: impdp scott/test dumpfile=scott.dmp directory=dump_dir logfile=imp.log job_name=cases_impdp Estimate=blocks FULL 该选项用于指定数据库导入模式,默认为N,为Y时表示执行数据库导出。 参数举例: FULL=Y 应用举例: impdp scott/test dumpfile=scott.dmp directory=dump_dir full=y NOLOGFILE 该选项用于指定禁止生成导出日志文件,默认值为N。可选参数Y、N。 参数举例: NOLOGFILE=Y 应用举例: impdp scott/test dumpfile=scott.dmp directory=dump_dir NOLOGFILE=Y SKIP_UNUSABLE_INDEXES 该选项用于指定导入设置跳过无用索引。可选参数Y、N。 参数举例: SKIP_UNUSABLE_INDEXES=Y 应用举例: impdp scott/test dumpfile=scott.dmp directory=dump_dir SKIP_UNUSABLE_INDEXES=Y SQLFILE 该选项用于指定将所有的 SQL DDL 写入指定的文件。 注:经测试并不导入数据,只是通过备份文件生成脚本文件。文件生成在directory设置目录。 参数举例: SQLFILE=a.sql 应用举例: impdp scott/test dumpfile=scott.dmp directory=dump_dir SQLFILE=a.sql TABLE_EXISTS_ACTION 该选项用于导入对象已存在时执行的操作,默认为SKIP。可选参数(SKIP), APPEND, REPLACE 和 TRUNCATE。当设置为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据;为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE 时,导入作业会删除已经存在表,重建表并追加数据。 注:TRUNCATE选项不适用与簇表和NETWORK_LINK选项。 参数举例: TABLE_EXISTS_ACTION=APPEND 应用举例: impdp scott/test TABLES=PH.dmp directory=dump_dir TABLE_EXISTS_ACTION=APPEND TRANSPORT_DATAFILES * 该选项用于指定搬移空间时要被导入到目标数据库的数据文件。 参数举例: TRANSPORT_DATAFILES=datafile_name 应用举例: impdp scott/test dumpfile=scott.dmp directory=dump_dir TRANSPORT_DATAFILES=‘/export/home/oradata/dbtest_01.dbf’ TABLESPACES * 该选项用于标识要导入的表空间的列表。 参数举例: TABLESPACES=user01 应用举例: impdp scott/test dumpfile=tablespace.dmp directory=dump_dir TABLESPACES=user01 |
















