一、分区级别的导入导出
可以导出一个或多个分区,也可以导出所有分区(即整个表)。
可以导入所有分区(即整个表),一个或多个分区以及子分区。
对于已经存在数据的表,使用imp导入时需要使用参数IGNORE=y,而使用impdp,加table_exists_action=append | replace 参数。
示例:使用expdp/impdp
这种方法的步骤是:
(1)将普通表dump出来
(2)创建分区表
(3)将dump 文件导入数据。
分区表的迁移和这个步骤差不多。有2点要注意:
(1)分区表导出的dump 文件比普通表导出的大。
(2)导入分区表的时间要比普通表的时间要长。
1.查看当前数据库的版本
SQL> select * from v$version where rownum < 2;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
2.更改字符集
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
[oracle@node1 ~]$ export NLS_LANG='AMERICAN_AMERICA.ZHS16GBK'
1.查看导入导出的目录设置
SQL> select directory_name,directory_path from dba_directories where directory_name='DMP';
DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ------------------------------------------------------------
DMP /u02/dmp
1. 导出dump文件
create directory dump as 'd:/backup';
grant read, write on directory dump to system;
(1)整个表
C:/Users/Administrator.DavidDai>Expdp system/system DIRECTORY=dump DUMPFILE=partition.dmp TABLES=PDBA logfile=exp.log;
Export: Release 11.2.0.1.0 - Production on 星期四 3月 3 16:18:15 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "SYSTEM"."SYS_EXPORT_TABLE_01": system/******** DIRECTORY=dump DUMPFILE=partition.dmp TABLES=PDBA logfile=exp.log;
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 61 MB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/PRE_TABLE_ACTION
. . 导出了 "SYSTEM"."PDBA":"P1" 31.12 MB 1718285 行
. . 导出了 "SYSTEM"."PDBA":"P4" 11.28 MB 622582 行
. . 导出了 "SYSTEM"."PDBA":"P3" 3.422 MB 188701 行
. . 导出了 "SYSTEM"."PDBA":"P2" 3.331 MB 183667 行
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TABLE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TABLE_01 的转储文件集为:
D:/BACKUP/PARTITION.DMP
作业 "SYSTEM"."SYS_EXPORT_TABLE_01" 已于 16:18:34 成功完成
(2)一个分区
C:/Users/Administrator.DavidDai>Expdp system/system DIRECTORY=dump DUMPFILE=partition_p4.dmp TABLES=PDBA:P4 logfile=exp_p4.log;
Export: Release 11.2.0.1.0 - Production on 星期四 3月 3 16:19:23 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "SYSTEM"."SYS_EXPORT_TABLE_01": system/******** DIRECTORY=dump DUMPFILE=partition_p4.dmp TABLES=PDBA:P4 logfile=exp_p4.log;
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 14 MB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/PRE_TABLE_ACTION
. . 导出了 "SYSTEM"."PDBA":"P4" 11.28 MB 622582 行
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TABLE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TABLE_01 的转储文件集为:
D:/BACKUP/PARTITION_P4.DMP
作业 "SYSTEM"."SYS_EXPORT_TABLE_01" 已于 16:19:32 成功完成
2. 创建分区表
2. 创建分区表
用dbms_metadate.get_ddl() 直接获取DDL语句创建表就可以了,
select dbms_metadata.get_ddl('TABLE','R','SCOTT') from dual;
表 表名 用户名 区分大小写
3. 导入dump文件
(1)导入一个分区
C:/Users/Administrator.DavidDai>impdp system/system DIRECTORY=dump DUMPFILE=partition_p4.dmp TABLES=PDBA:P4 logfile=imp_p4.log table_exists_action=append
-- 注意这个参数,后面不用加分号,直接回车就执行了。
Import: Release 11.2.0.1.0 - Production on 星期四 3月 3 16:24:15 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_TABLE_01"
启动 "SYSTEM"."SYS_IMPORT_TABLE_01": system/******** DIRECTORY=dump DUMPFILE=partition_p4.dmp TABLES=PDBA logfile=imp_p4.log table_exists_action=append
处理对象类型 TABLE_EXPORT/TABLE/TABLE
ORA-39152: 表 "SYSTEM"."PDBA" 已存在。由于附加了 table_exists_action, 数据将附加到现有表, 但是将跳过所有相关元数据。
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 导入了 "SYSTEM"."PDBA":"P4" 11.28 MB 622582 行
作业 "SYSTEM"."SYS_IMPORT_TABLE_01" 已经完成, 但是有 1 个错误 (于 16:24:21 完成)
(2)导入整个表
C:/Users/Administrator.DavidDai>impdp system/system DIRECTORY=dump DUMPFILE=partition.dmp TABLES=PDBA logfile=imp.log table_exists_action=append
Import: Release 11.2.0.1.0 - Production on 星期四 3月 3 16:26:51 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_TABLE_01"
启动 "SYSTEM"."SYS_IMPORT_TABLE_01": system/******** DIRECTORY=dump DUMPFILE=partition.dmp TABLES=PDBA logfile=imp.log table_exists_action=append
处理对象类型 TABLE_EXPORT/TABLE/TABLE
ORA-39152: 表 "SYSTEM"."PDBA" 已存在。由于附加了 table_exists_action, 数据将附加到现有表, 但是将跳过所有相关元数据。
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 导入了 "SYSTEM"."PDBA":"P1" 31.12 MB 1718285 行
. . 导入了 "SYSTEM"."PDBA":"P4" 11.28 MB 622582 行
. . 导入了 "SYSTEM"."PDBA":"P3" 3.422 MB 188701 行
. . 导入了 "SYSTEM"."PDBA":"P2" 3.331 MB 183667 行
作业 "SYSTEM"."SYS_IMPORT_TABLE_01" 已经完成, 但是有 1 个错误 (于 16:27:02 完成)