ORACLE数据泵在数据迁移中的使用

在oracle  database 10g和11g中,你可以使用更通用更强大的数据泵导出和导入(Data Pump Export and Import)实用程序实现数据的逻辑备份和逻辑恢复。为什么说数据泵更为强大?对比imp和exp,impdp 和expdp具有以下优点:

(1)提供映射机制,更加灵活

remap 提供表空间、用户之间的映射,目标数据库无需建立和原数据库同名的表空间和用户。

例如:REMAP_TABLESPACE=tablesapce1:tablesapce2;

REMAP_SCHEMA=user1:user2;

(2)IMPDP比IMP导入效率更高

IMPDP可以通过设置PARALLEL来提高并行度。

注意:使用Data Pump工具时,其转储文件只能被存放在DIRECTORY对象对应的操作系统目录中,而不能直接指定转储文件所在的操作系统目录。 在Oracle中创建目录对象时,需要使用CREATE DIRECTORY语句。授予权限时,需要使用GRANT语句。

例如: CREATE DIRECTORY mydir AS ‘d:\’;

如果users用户要使用该目录,必须要有读写权限:

GRANT READ,WRITE ON DIRECTORY mydir TO users;

1.expdp 导出工具(将数据库中选定的记录集以二进制文件(dmp)的形式存储到操作系统中)

EXPDP提供了数据库模式、用户模式、表空间模式、表模式的数据导出。

模式 使用的参数 说明
FULL(全库)

FULL

导出整个数据库

Schema (模式)

SCHEMAS

导出一个或多个用户模式中的数据和元数据

Table (表)

TABLES

导出指定模式中指定的表、分区及其依赖对象

Tablespace (表空间)

TABLESPACES

导出一个或多个表空间中的数据

Transportable Tablespace (可移动表空间)

TRANSPORT_ TABLESPACES

导出一个或多个表空间中对象的元数据

 

例1:命令行方式导出:数据库导出模式。将当前数据全部导出,不写日志文件。

C:\>expdp 用户名/密码  DIRECTORY=mydir  DUMPFILE=expfull.dmp FULL=Y NOLOGFILE=Y

例2:命令行方式导出:模式导出模式。 导出scott模式下的所有对象及其数据。

C:\>expdp 用户名/密码  DIRECTORY=mydir DUMPFILE=scott.dmp SCHEMAS=scott

例3:命令行方式导出:表导出模式 .导出scott模式下的table1表和table2表,转储文件名称为test.dmp,日志文件命名为test.log。

C:\>expdp 用户名/密码  DIRECTORY=mydir DUMPFILE=test.dmp  TABLES=table1,table2  LOGFILE=test.log

例4:命令行方式导出:表空间导出模式。 导出tablespace1,tablespace2表空间中的所有对象及其数据。

C:\>expdp 用户名/密码  DIRECTORY=mydir DUMPFILE=test.dmp TABLESPACES=tablespace1,tablespace2

例5:命令行方式导出:按条件查询导出 导出test.table表中属性A1大于10,且A2大于2000的数据。

C:\>expdp 用户名/密码  DIRECTORY=mydir DUMPFILE=test.dmp TABLES=table  QUERY='emp:"WHERE A1>10 AND A2>2000"' NOLOGFILE=Y

2.impdp导入工具

 要导入一个使用Expdp输出的转储文件集,需要使用Impdp。与EXPDP中的导出方式相对应,数据泵导入也有5种模式:

模式 使用的参数 说明
FULL(全库)

FULL

导入整个数据库

Schema (模式)

SCHEMAS

导入一个或多个用户模式中的数据和元数据

Table (表)

TABLES

导入指定模式中指定的表、分区及其依赖对象

Tablespace (表空间)

TABLESPACES

导入一个或多个表空间中的数据

Transportable Tablespace (可移动表空间)

TRANSPORT_ TABLESPACES

导入一个或多个表空间中对象的元数据

 

 

例1:命令行方式导入 ——数据全库导入模式,利用完整数据库的逻辑备份恢复数据库:

C:\>impdp 用户名/密码   DIRECTORY=mydir    DUMPFILE=test.dmp FULL=Y

例2:命令行方式导入 ——模式导入模式

(1)使用备份文件test.dmp恢复user模式。

C:\>impdp 用户名/密码  DIRECTORY=mydir DUMPFILE=test.dmp  SCHEMAS=user

(2) 如果要将一个备份模式的所有对象导入另一个模式中,可以使用REMAP_SCHEMA参数设置。例如,将备份的user1模式对象导入user2模式中。

C:\>impdp 用户名/密码  DIRECTORY=mydir DUMPFILE=test.dmp LOGFILE=test.log REMAP_SCHEMA=user1:user2

例3: 命令行方式导入 ——表导入模式

(1) 使用逻辑备份文件test.dmp恢复user模式下的table1表和table2表中数据。

C:\>impdp 用户名/密码   DIRECTORY=mydir  DUMPFILE=test.dmp  TABLES=table1,table2   NOLOGFILE=Y  CONTENT=DATA_ONLY

CONTENT=DATA_ONLY 是向已经存在的表追加数据。相当于追加模式导入数据。

 

(2) 如果表结构也不存在了,则应该导入表的定义以及数据。

C:\>impdp 用户名/密码   DIRECTORY=mydir DUMPFILE=test.dmp TABLES=table1,table2  NOLOGFILE=Y

例4:命令行方式导入 ——表空间导入模式

(1)利用tablespace1,tablespace2表空间的逻辑备份test.dmp恢复tablespace1,tablespace2表空间。

C:\>impdp 用户名/密码   DIRECTORY=mydir   DUMPFILE=test.dmp TABLESPACES=tablespace1,tablespace2

(2)如果要将备份的表空间导入另一个表空间中,可以使用REMAP_TABLESPACE参数设置。例如,将tablespace1表空间的逻辑备份导入tablespace2表空间:

C:\>impdp 用户名/密码   DIRECTORY=mydir DUMPFILE=test.dmp     REMAP_TABLESPACE=tablespace1:tablespace2;

例5:命令行方式导入 —— 按条件查询导入

C:\>impdp 用户名/1234  DIRECTORY=mydir   DUMPFILE=test.dmp   TABLES=T1,T2    QUERY= 'T1: "WHERE deptno=20 AND sal>2000"'

例6:命令行方式导入 —— 追加导入

如果表中已经存在数据,可以利用备份向表中追加数据:

C:\>impdp 用户名/1234  DIRECTORY=mydir DUMPFILE=test.dmp TABLES=T1      TABLE_EXISTS_ACTION=APPEND

其他:

(1)在进行导入时,如果对dmp文件一无所知,imp 提供show=y  显示tablespace 和users 信息,DP可以用 impdp '/as sysdba' dumpfile=<your.dmpfile> logfile=import_log.txt sqlfile=ddlfile.txt 实现相同功能。

(2)impdp 用户名/密码   用户名写哪个?写system?写DMP文件里的用户名?

(3)tablespace 中有两个用户USER1和USER2,两个用户的数据共同组成了tablespace的所有数据。

进行全表空间导出时,登录用户名怎么写?

expdp user1/1234 directory=dir2 dumpfile=test_dum.dmp tablespaces=tablespace1 导出了tablespace所有的数据。用system用户,得到相同结果。

现在,test_dum.dmp中有USER1和USER2的所有数据,我想把这两个用户的数据导到GETDATA用户中,

impdp GetData/1234@orcl directory=dir2 dumpfile=test_dum.dmp  remap_schema=user1:GetData logfile=no; 只导入了user1的数据。

impdp GetData/1234@orcl directory=dir2 dumpfile=test_dum.dmp  remap_schema=user1:GetData,user2:GetData logfile=no;  导入了user1和user2的全部数据,导到了GetData中。

 

posted on 2017-11-01 21:10  起名真TM烦  阅读(636)  评论(0)    收藏  举报

导航