当前位置: 代码迷 >> 综合 >> expdp 和impdp的笔记(转)
  详细解决方案

expdp 和impdp的笔记(转)

热度:57   发布时间:2023-12-17 01:31:17.0

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
条件约束
字符集一样和国家字符集一样
两个数据库不能同名
不能搬移systemsys用户对象的表空间
如果是其他平台,将初始参数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