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 不能与其他选项一起使用
2): CONTENT 要导出的内容 默认值ALL
DATA_ONLY
METADATA_ONLY
3): DIRECTORY 指定转储文件和日志文件的所在地
DIRECTORY=directory_object数据库目录对象)
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp
4): DUMPFILE指定转储文件的名称,默认为 expdata.dmp
5):ESTIMAT 选项用于估算导出表所占的空间
expdp scott/tiger TABLE=emp ESTIMAT=STATISTICS|BLOCKS
6):ESTIMATE_ONLY 改选项只是估算导出对象所占的空间,默认值为Y
7):EXCLUDE 执行导出操作时要排除的对象或相关对象,与INCLUDE选项不能一起使用
expdp scott/tiger DIRECTORY=dump DUMPFILE=A.DMP EXCLUDE=view
8):FILESIZE 导出文件的最大尺寸,默认值为0(没有限制)
9)FLASHBACK_SCN 该选项导出特定时刻的表数据
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=385823
10):FLASHBACK_TIME 该选项用于导出特定时间点的表数据
FLASHBACK_TIME="TO_TIMESTAMP(time-value)"
expdp scott/tiger DIRECTIONARY=dump DUMPFILE=a.dmp FLASHBACK_TIME("TO_TIMESTMP('25-08-200814:35:00','DD-MM
-YYYY HH24:MI:SS');
11):FULL 导出整个数据库
12)HELP
13)INCLUDE 该选项指定导出的对象类型
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp INCLUDE=table
14):JOB_NAME 该选项用于指定导出作业的名称
expdp scott/tiger DIRECTORYL=dump DUMPFILE=a.dmp JOB_NAME=maxu
15)LOGFILE 该选项导出日志文件的名称
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log
16)NETWORK_LINK 该选项指定数据库链名,将远程数据库导出到本地的转储文件中
NETWORK_LINK=source_database_link 注:对象表不支持远程导出
17):NOLOGFILE 该选项指定禁止生成导出日志文件
18):PARALLEL 该选项指定导出操作的并行进程个数,默认值为1
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp PARALLEL=3;
19):PARFILE 指定导出参数文件的名称
TABLES=dept,emp
DIRECTORY=dump
DUMPFILE=tab.dmp 20):QUERY 该选项过滤出数据的WHERE条件
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp TABLES=emp query=' "WHERER= deptno=20" '
21):SCHEMAS
expdp system/oracle DIRECTORY=dump DUMPFILE=a.dmp SCHEMAS=scott,system
22):STATUS 导出作业的状态
23):TABLES 表模式
expdp system/oracle directory=dump dumpfile=a.dmp tables=scott.dep,scott.emp
24):TABLESPACES 导出表空间列表
expdp system/oracle DIRECTORY=dump DUMPFILE=a.dmp tablespace=user01
25):TRANSPORT_FULL_CHECK
该选项指定被搬移表空间和搬移表空间的依赖
26):TRANSPORT_TABLESPACE 表空间的导出模式
27):VERSION 保持向下兼容
expdp scott/tiger DIRECTORY=dump DUMPFILE=c.dmp VERSION=LASTEST 根据初始参数COMPATIBLE的设置
调用EXPDP SQL>conn system/oracle SQL>create DIRECTORY dump_dir AS 'd:dump'; SQL>GRANT read,write on DIRCTORY dump_dir to scott;
导出表
expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
导出schemas
expdp system/oracle DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=system.scott;
导出表空间
expdp system/oracle DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01,user02
导出数据库
expdp system/oracle DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y
IMPDP
REMAP_DATAFILE 该选项将源数据文件的名称转变为目标数据文件名,当在不用平台之间搬移表空间时可能需要使用该选项
REMAP_SCHEMA
impdp system/oracle DIRECTORY=dump DUMPFILE=tab.dmp REMAP_SCHEMA=scott:system
REMAP_TABLESPACE 将源表空间的所有对象导入目标表空间
impdp system/oracle DIRECTORY=dump DUMPFILE=tab.dmp REMAP_RABLESPACE=user01:user02
REUSE_DATAFILES 是否覆盖已存在的数据文件
SCHEMAS 导入指定模式(schemas)
impdp system/oracle DIRECTORY=dump DUMPFILE=tab.dmp SCHEMAS=scott
SKIP_UNUSABLE_INDEXED 是否跳过不可使用的索引
SQLFILE 指定导入操作需要执行DDL语句写入到一个脚本
SQLFILE=[dirctory_object:]file_name
impdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql
STREAMS_CONFIGURATION
TABLE_EXISTS_ACTION 当表已存在是执行的操作
skip|append|truncate|replace
TABLES
impdp scott/tiger DIRECTOR=dump DUMPFILE=tab.dmp TABLES= emp
TABLESPACES
impdp scott/tiger directory=dump dumpfile=tab.dmp tablespace=usr01
TRANSPORT_DATAFILES 该选项指定当搬移表空间时要被导入到目标数据库的数据文件名称
impdp system/oracle DIRECTORY=dump DUMPFILE=tab.dmp TRANSPORT_DATAFILE='/user01/data/tbs.dbf'
TRANSPORT_FULL_CHECK 表空间依赖检查
TRANSPORT_TABLESPACE 表空间模式导入
VERSION
调用IMPDP
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp
REMAP_SCHEMA=scott:system
schemas(模式)
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott REMAP_SCHEMA=scott:system
表空间
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACE=user01
数据库
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y;
搬移表空间
nls_database_parameters
条件约束
字符集一样和国家字符集一样
两个数据库不能同名
不能搬移system和sys用户对象的表空间
如果是其他平台,将初始参数compatible设置10.0
自包含表空间是指具有有关联关系的表空间集合,假设表空间A包含了表EMP,而表空间B包含了表空间EMP的索引IND_EMP,
如果要搬移表空间B,则必须同时搬移表空间A,则表空间A和B为自包含表空间集合
违反自包含集合规则
表空间包含sys对象
表空间包含了索引所在的表空间,但没有包含索引基表所在的表空间
表空间集合没有高喊分区表的所有分区
表空间包含了表所在的表空间,但没有包含LOB列所在的表空间
source database demo
dest database orcl
使用DBMS_TTS包检查表空间是否为自包含的
SQL>conn system/oracle SQL>execute sys.dbms_tts.transport_set_check('user02',true) sql>select * from sys.transport_set_violations;
sql>alter tablespace users read only
SQL>host expdp system/oracle DIRECTORY=dump_dir DUMPFILE=transport.dmp TRANSPORT_TABLESPACE=users
把transport.dmp文件拷贝目标服务器上
在目标数据库上比照两个数据库的块大小,如不一样
dest
SQL>alter system set db_cache_size=20m; SQL>alter system set db_4k_cache_size=4M;
impdp system/oracle DIRECTORY=dump_dir DUMPFILE=transport.dmp
TRANSPORT_DATAFILES=d:oracleoradataorclusers.dbf REMAP_SCHEMA=scott:hr