一、分区级别的导入导出

    可以导出一个或多个分区,也可以导出所有分区(即整个表)。

    可以导入所有分区(即整个表),一个或多个分区以及子分区。

    对于已经存在数据的表,使用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 完成)