Oracle Database 10g
引入了最新的数据泵
(Data Dump)
技术
,
使
DBA
或开发人员可以将数据库元数据
(
对象定义
)
和数据快速移动到另一个
oracle
数据库中
.
数据泵导出导入
(EXPDP
和
IMPDP)
的作用
1
、实现逻辑备份和逻辑恢复
.
2
、在数据库用户之间移动对象
.
3
、在数据库之间移动对象
4
、实现表空间搬移
.
数据泵导出导入与传统导出导入的区别:
在
10g
之前
,
传统的导出和导入分别使用
EXP
工具和
IMP
工具
,
从
10g
开始
,
不仅保留了原有的
EXP
和
IMP
工具
,
还提供了数据泵导出导入工具
EXPDP
和
IMPDP.
使用
EXPDP
和
IMPDP
时应该注意的事项
;
EXP
和
IMP
是客户段工具程序
,
它们既可以在客户端使用
,
也可以在服务器段使用
.
EXPDP
和
IMPDP
是服务端的工具程序
,
他们只能在
ORACLE
服务端使用
,
不能在客户端使用
IMP
只适用于
EXP
导出文件
,
不适用于
EXPDP
导出文件
;IMPDP
只适用于
EXPDP
导出文件
,
而不适用于
EXP
导出文件
.
数据泵导出包括导出表
,
导出方案
,
导出表空间
,
导出数据库
4
种方式
.
EXPDP
命令行选项
1. ATTACH
该选项用于在客户会话与已存在导出作用之间建立关联
.
语法如下
ATTACH=[schema_name.]job_name
Schema_name
用于指定方案名
,job_name
用于指定导出作业名
.
注意
,
如果使用
ATTACH
选项
,
在命令行除了连接字符串和
ATTACH
选项外
,
不能指定任何其他选项
,
示例如下
:
Expdp scott/tiger ATTACH=scott.export_job
2. CONTENT
该选项用于指定要导出的内容
.
默认值为
ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置
CONTENT
为
ALL
时
,
将导出对象定义及其所有数据
.
为
DATA_ONLY
时
,
只导出对象数据
,
为
METADATA_ONLY
时
,
只导出对象定义
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump
CONTENT=METADATA_ONLY
3. DIRECTORY
指定转储文件和日志文件所在的目录
DIRECTORY=directory_object
Directory_object
用于指定目录对象名称
.
需要注意
,
目录对象是使用
CREATE DIRECTORY
语句建立的对象
,
而不是
OS
目录
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump
建立目录
:
CREATE DIRECTORY dump as ‘d:dump’;
查询创建了那些子目录
:
SELECT * FROM dba_directories;
4. DUMPFILE
用于指定转储文件的名称
,
默认名称为
expdat.dmp
DUMPFILE=[directory_object:]file_name [,….]
Directory_object
用于指定目录对象名
,file_name
用于指定转储文件名
.
需要注意
,
如果不指定
directory_object,
导出工具会自动使用
DIRECTORY
选项指定的目录对象
Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp
5. ESTIMATE
指定估算被导出表所占用磁盘空间分方法
.
默认值是
BLOCKS
EXTIMATE={BLOCKS | STATISTICS}
设置为
BLOCKS
时
,oracle
会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间
,
设置为
STATISTICS
时
,
根据最近统计值估算对象占用空间
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS
DIRECTORY=dump DUMPFILE=a.dump
6. EXTIMATE_ONLY
指定是否只估算导出作业所占用的磁盘空间
,
默认值为
N
EXTIMATE_ONLY={Y | N}
设置为
Y
时
,
导出作用只估算对象所占用的磁盘空间
,
而不会执行导出作业
,
为
N
时
,
不仅估算对象所占用的磁盘空间
,
还会执行导出操作
.
Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y
7. EXCLUDE
该选项用于指定执行操作时释放要排除对象类型或相关对象
EXCLUDE=object_type[:name_clause] [,….]
Object_type
用于指定要排除的对象类型
,name_clause
用于指定要排除的具体对象
.EXCLUDE
和
INCLUDE
不能同时使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW
8. FILESIZE
指定导出文件的最大尺寸
,
默认为
0,(
表示文件尺寸没有限制
)
9. FLASHBACK_SCN
指定导出特定
SCN
时刻的表数据
FLASHBACK_SCN=scn_value
Scn_value
用于标识
SCN
值
.FLASHBACK_SCN
和
FLASHBACK_TIME
不能同时使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp
FLASHBACK_SCN=358523
10. FLASHBACK_TIME
指定导出特定时间点的表数据
FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=
“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”
11. FULL
指定数据库模式导出
,
默认为
N
FULL={Y | N}
为
Y
时
,
标识执行数据库导出
.
12. HELP
指定是否显示
EXPDP
命令行选项的帮助信息
,
默认为
N
当设置为
Y
时
,
会显示导出选项的帮助信息
.
Expdp help=y
13. INCLUDE
指定导出时要包含的对象类型及相关对象
INCLUDE = object_type[:name_clause] [,… ]
14. JOB_NAME
指定要导出作用的名称
,
默认为
SYS_XXX
JOB_NAME=jobname_string
15. LOGFILE
指定导出日志文件文件的名称
,
默认名称为
export.log
LOGFILE=[directory_object:]file_name
Directory_object
用于指定目录对象名称
,file_name
用于指定导出日志文件名
.
如果不指定
directory_object.
导出作用会自动使用
DIRECTORY
的相应选项值
.
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log
16. NETWORK_LINK
指定数据库链名
,
如果要将远程数据库对象导出到本地例程的转储文件中
,
必须设置该选项
.
17. NOLOGFILE
该选项用于指定禁止生成导出日志文件
,
默认值为
N.
18. PARALLEL
指定执行导出操作的并行进程个数
,
默认值为
1
19. PARFILE
指定导出参数文件的名称
PARFILE=[directory_path] file_name
20. QUERY
用于指定过滤导出数据的
where
条件
QUERY=[schema.] [table_name:] query_clause
Schema
用于指定方案名
,table_name
用于指定表名
,query_clause
用于指定条件限制子句
.QUERY
选项不能与
CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES
等选项同时使用
.
Expdp scott/tiger directory=dump dumpfiel=a.dmp
Tables=emp query=’WHERE deptno=20’
21. SCHEMAS
该方案用于指定执行方案模式导出
,
默认为当前用户方案
.
22. STATUS
指定显示导出作用进程的详细状态
,
默认值为
0
23. TABLES
指定表模式导出
TABLES=[schema_name.]table_name[:partition_name][,…]
Schema_name
用于指定方案名
,table_name
用于指定导出的表名
,partition_name
用于指定要导出的分区名
.
24. TABLESPACES
指定要导出表空间列表
25. TRANSPORT_FULL_CHECK
该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式
,
默认为
N.
当设置为
Y
时
,
导出作用会检查表空间直接的完整关联关系
,
如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移
,
将显示错误信息
.
当设置为
N
时
,
导出作用只检查单端依赖
,
如果搬移索引所在表空间
,
但未搬移表所在表空间
,
将显示出错信息
,
如果搬移表所在表空间
,
未搬移索引所在表空间
,
则不会显示错误信息
.
26. TRANSPORT_TABLESPACES
指定执行表空间模式导出
27. VERSION
指定被导出对象的数据库版本
,
默认值为
COMPATIBLE.
VERSION={COMPATIBLE | LATEST | version_string}
为
COMPATIBLE
时
,
会根据初始化参数
COMPATIBLE
生成对象元数据
;
为
LATEST
时
,
会根据数据库的实际版本生成对象元数据
.version_string
用于指定数据库版本字符串
.
调用
EXPDP
使用
EXPDP
工具时
,
其转储文件只能被存放在
DIRECTORY
对象对应的
OS
目录中
,
而不能直接指定转储文件所在的
OS
目录
.
因此
,
使用
EXPDP
工具时
,
必须首先建立
DIRECTORY
对象
.
并且需要为数据库用户授予使用
DIRECTORY
对象权限
.
CREATE DIRECTORY dump dir AS ‘D:DUMP’;
GRANT READ, WIRTE ON DIRECTORY dump_dir TO scott;
1、导出表
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
2、导出方案
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp
SCHEMAS=system,scott
3、导出表空间
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp
TABLESPACES=user01,user02
4、导出数据库
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y
使用
IMPDP
IMPDP
命令行选项与
EXPDP
有很多相同的
,
不同的有
:
1、REMAP_DATAFILE
该选项用于将源数据文件名转变为目标数据文件名
,
在不同平台之间搬移表空间时可能需要该选项
.
REMAP_DATAFIEL=source_datafie:target_datafile
2、REMAP_SCHEMA
该选项用于将源方案的所有对象装载到目标方案中
.
REMAP_SCHEMA=source_schema:target_schema
3、REMAP_TABLESPACE
将源表空间的所有对象导入到目标表空间中
REMAP_TABLESPACE=source_tablespace:target:tablespace
4、REUSE_DATAFILES
该选项指定建立表空间时是否覆盖已存在的数据文件
.
默认为
N
REUSE_DATAFIELS={Y | N}
5、SKIP_UNUSABLE_INDEXES
指定导入是是否跳过不可使用的索引
,
默认为
N
6、SQLFILE
指定将导入要指定的索引
DDL
操作写入到
SQL
脚本中
SQLFILE=[directory_object:]file_name
Impdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql
7、STREAMS_CONFIGURATION
指定是否导入流元数据
(Stream Matadata),
默认值为
Y.
8、TABLE_EXISTS_ACTION
该选项用于指定当表已经存在时导入作业要执行的操作
,
默认为
SKIP
TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }
当设置该选项为
SKIP
时
,
导入作业会跳过已存在表处理下一个对象
;
当设置为
APPEND
时
,
会追加数据
,
为
TRUNCATE
时
,
导入作业会截断表
,
然后为其追加新数据
;
当设置为
REPLACE
时
,
导入作业会删除已存在表
,
重建表病追加数据
,
注意
,TRUNCATE
选项不适用与簇表和
NETWORK_LINK
选项
9、TRANSFORM
该选项用于指定是否修改建立对象的
DDL
语句
TRANSFORM=transform_name:value[:object_type]
Transform_name
用于指定转换名
,
其中
SEGMENT_ATTRIBUTES
用于标识段属性
(
物理属性
,
存储属性
,
表空间
,
日志等信息
),STORAGE
用于标识段存储属性
,VALUE
用于指定是否包含段属性或段存储属性
,object_type
用于指定对象类型
.
Impdp scott/tiger directory=dump dumpfile=tab.dmp
Transform=segment_attributes:n:table
10、TRANSPORT_DATAFILES
该选项用于指定搬移空间时要被导入到目标数据库的数据文件
TRANSPORT_DATAFILE=datafile_name
Datafile_name
用于指定被复制到目标数据库的数据文件
Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmp
TRANSPORT_DATAFILES=’/user01/data/tbs1.f’
调用
IMPDP
1、导入表
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp
REMAP_SCHEMA=SCOTT:SYSTEM
第一种方法表示将
DEPT
和
EMP
表导入到
SCOTT
方案中
,
第二种方法表示将
DEPT
和
EMP
表导入的
SYSTEM