`
wsql
  • 浏览: 11795518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Oracle 分区表 导出导入 迁移

 
阅读更多

在Blog:分区表总结 里提到一种创建分区表的方法。使用导出导入。

Oracle分区表总结

http://blog.csdn.net/xujinyang/article/details/6832735

这种方法的步骤是:

(1)将普通表dump出来

(2)创建分区表

(3)将dump文件导入数据。

分区表的迁移和这个步骤差不多。有2点要注意:

(1)分区表导出的dump文件比普通表导出的大。

(2)导入分区表的时间要比普通表的时间要长。

补充一些exp/imp,expdp/impdp与分区表有关的知识:使用exp -help查看:

example:impscott/tiger ignore=y tables=(emp,dept) full=n

ortables=(t1:p1,t1:p2), if t1 is partitioned table

example:expscott/tiger grants=y tables=(emp,dept,mgr)

ortables=(t1:p1,t1:p2), if t1 is partitioned table

example:expdpscott/tiger dumpfile=scott.dmp directory=dmpdir schemas=scottortables=(t1:p1,t1:p2), if t1 is partitioned table

example:impdpscott/tiger directory=dmpdir dumpfile=scott.dmp

一些优化参考Blog:

exp/imp与expdp/impdp对比及使用中的一些优化事项

http://blog.csdn.net/xujinyang/article/details/6831324

迁移分区表的步骤如下:

(1)导出分区表,可以使用exp或者expdp

(2)建立新的分区表

(3)导入分区表。

A)如果是imp,加ignore=y参数,该参数会忽略创建表时的错误并继续加载数据。

B)如果是impdp,加table_exists_action=append参数.

table_exists_action:action to take if imported object already exists.valid keywords: (skip), append, replace and truncate.

示例1:使用exp/imp

分区表:

create table pdba (id, time) partition by range (time)

(partition p1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')),

partition p2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')),

partition p3 values less than (to_date('2010-12-1', 'yyyy-mm-dd')),

partition p4 values less than (maxvalue))

as select id, time from sys.dba;

SQL> select partition_name from user_tab_partitions where table_name='PDBA';

PARTITION_NAME

------------------------------

P1

P2

P3

P4

SQL> select count(*) from pdba partition(p1);

COUNT(*)

----------

1718285

SQL> select count(*) from pdba partition(p2);

COUNT(*)

----------

183667

SQL> select count(*) from pdba partition(p3);

COUNT(*)

----------

188701

SQL> select count(*) from pdba partition(p4);

COUNT(*)

----------

622582

SQL>

1.导出表或者某个分区

(1)导出整个表:

C:/Users/Administrator.DavidDai>exp 'sys/sys as sysdba' tables=pdba file='d:/partition.dmp' log='d:/partition.log'

Export: Release 11.2.0.1.0 - Production on星期四3月3 15:29:42 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

已导出ZHS16GBK字符集和AL16UTF16 NCHAR字符集

即将导出指定的表通过常规路径...

. .正在导出表PDBA

. .正在导出分区P1导出了1718285行

. .正在导出分区P2导出了183667行

. .正在导出分区P3导出了188701行

. .正在导出分区P4导出了622582行

成功终止导出,没有出现警告。

(2)导出某个分区:

C:/Users/Administrator.DavidDai>exp 'sys/sys as sysdba' tables=pdba:p4 file='d:/partition_p4.dmp' log='d:/partition_p4.log'

Export: Release 11.2.0.1.0 - Production on星期四3月3 15:30:09 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

已导出ZHS16GBK字符集和AL16UTF16 NCHAR字符集

即将导出指定的表通过常规路径...

. .正在导出表PDBA

. .正在导出分区P4导出了622582行

成功终止导出,没有出现警告。

说明:开始用的分区表是11g的Interval分区表,结果用exp导,报:

EXP-00006: internal inconsistency error
EXP-00000: Export terminated unsuccessfully

exp不支持11g的新特性。参考:

Exporting System or Composite Partitioned Table Using Classic Export Gives EXP-6 AND EXP-0 [ID 762774.1]

http://blog.csdn.net/xujinyang/article/details/6884215

2.创建分区表

2.1可以使用一下语句获取表的DDL语句:

SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;

更多参考:

ORACLE使用DBMS_METADATA.GET_DDL获取DDL语句

http://blog.csdn.net/xujinyang/article/details/6830002

2.2使用imp语句获取:

C:/Users/Administrator.DavidDai>imp 'sys/sys as sysdba' tables=pdbaindexfile='D:/table.sql'file='d:/partition.dmp' ignore=y

Import: Release 11.2.0.1.0 - Production on星期四3月3 15:49:47 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

经由常规路径由EXPORT:V11.02.00创建的导出文件

已经完成ZHS16GBK字符集和AL16UTF16 NCHAR字符集中的导入

. .正在跳过分区"PDBA":"P1"

. .正在跳过分区"PDBA":"P2"

. .正在跳过分区"PDBA":"P3"

. .正在跳过分区"PDBA":"P4"

成功终止导入,没有出现警告。

这里我们在imp上加了个参数:indexfile='D:/table.sql',这条imp语句只会在对应的文件里生成分区表的ddl语句。然后编辑创建好就可以了。

最简单的方法就是使用第三方的工具,如Toad,直接就能查到表的定义语句了。

3.导入分区数据

我们在第一步导出里做了2种,一个是导出全表,另一个是导出一个分区。我们分别导入验证。

3.1导入一个分区

C:/Users/Administrator.DavidDai>imp 'sys/sys as sysdba' tables=pdba:p4 file='d:/partition_p4.dmp' ignore=y

Import: Release 11.2.0.1.0 - Production on星期四3月3 15:58:27 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

经由常规路径由EXPORT:V11.02.00创建的导出文件

已经完成ZHS16GBK字符集和AL16UTF16 NCHAR字符集中的导入

.正在将SYS的对象导入到SYS

.正在将SYS的对象导入到SYS

. .正在导入分区"PDBA":"P4"导入了622582行

成功终止导入,没有出现警告。

SQL> select count(*) from pdba partition(p4);

COUNT(*)

----------

622582

SQL> select count(*) from pdba partition(p1);

COUNT(*)

----------

0

3.2导入整个表

导入之前先把P4分区的数据truncate掉:

SQL> alter table pdba truncate partition p4;

表被截断。

SQL> select count(*) from pdba partition(p4);

COUNT(*)

----------

0

C:/Users/Administrator.DavidDai>imp 'sys/sys as sysdba' tables=pdba file='d:/partition.dmp' ignore=y

Import: Release 11.2.0.1.0 - Production on星期四3月3 16:01:08 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

经由常规路径由EXPORT:V11.02.00创建的导出文件

已经完成ZHS16GBK字符集和AL16UTF16 NCHAR字符集中的导入

.正在将SYS的对象导入到SYS

.正在将SYS的对象导入到SYS

. .正在导入分区"PDBA":"P1"导入了1718285行

. .正在导入分区"PDBA":"P2"导入了183667行

. .正在导入分区"PDBA":"P3"导入了188701行

. .正在导入分区"PDBA":"P4"导入了622582行

成功终止导入,没有出现警告。

示例2:使用expdp/impdp

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 MB622582行

. .导出了"SYSTEM"."PDBA":"P3"3.422 MB188701行

. .导出了"SYSTEM"."PDBA":"P2"3.331 MB183667行

已成功加载/卸载了主表"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 MB622582行

已成功加载/卸载了主表"SYSTEM"."SYS_EXPORT_TABLE_01"

******************************************************************************

SYSTEM.SYS_EXPORT_TABLE_01的转储文件集为:

D:/BACKUP/PARTITION_P4.DMP

作业"SYSTEM"."SYS_EXPORT_TABLE_01"已于16:19:32成功完成

2.创建分区表

用dbms_metadate.get_ddl()直接获取就可以了,方法同示例1.

3.导入dump文件

(1)导入一个分区

C:/Users/Administrator.DavidDai>impdp system/system DIRECTORY=dump DUMPFILE=partition_p4.dmpTABLES=PDBA:P4logfile=imp_p4.logtable_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 MB622582行

作业"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 MB622582行

. .导入了"SYSTEM"."PDBA":"P3"3.422 MB188701行

. .导入了"SYSTEM"."PDBA":"P2"3.331 MB183667行

作业"SYSTEM"."SYS_IMPORT_TABLE_01"已经完成,但是有1个错误(于16:27:02完成)

------------------------------------------------------------------------------

分享到:
评论

相关推荐

    oracle11g expdp impdp 分区表重映射导出导入数据迁移方案

    oracle expdp impdp 分区表重映射导出导入 数据迁移方案,以SI01用户为例子,将用户分区表导出后,将分区表重映射到新的表空间,完成数据迁移和检查。照方案例子按步去做,一定能成功。

    数据库优化--局部数据迁移

    压缩包主要包括如下文件: 1,迁移表的导出,生成备份文件;...8,删除新创建的分区表。 9,创建原来存储过程使用的临时表;将重命名的表进行恢复;将备份的数据重新导入数据库。 当然,还包括有相关的恢复脚本。

    Oracle数据库管理员技术指南

    3.4.1 子分区的导出和导入 3.4.2 导出/导入多个转储文件 3.4.3 为卸载表的导出过程的选择语句 指定一个查询 3.4.4 导出/导入预计算优化程序统计 数据 3.4.5 可移动表空间 3.5 回顾 第4章 设计高可用性数据库...

    oracle数据同步到Greenplum的python脚本

    DataBase:判断表是否存在、表或分区表是否有数据、是否为分区表、数据导出、表分区遍历、指定分区表导出等方法 py_main:主程序目录: Main_Mem.py:主程序目录: 运行:python3 Main_Mem.py ProcessLog1 ...

    oracle讲义全内容

    1 oracle10 g数据库安装 启动与关闭 2 Oracle 10g数据库结构 2.3 数据字典 3 SQL语句基础 3.4ORACLE函数大全 ...10 导出与导入 11 oracle 10g RMAN使用简介 触发器属性 手工创建数据库完整步骤 行迁移行链接

    transferdb:Transferdb支持异步数据库模式转换,全量数据导入,导入和增量数据同步功能(Oracle数据库-> MySQL数据库)

    考虑到Oracle分区表特殊且MySQL数据库复杂分区可能不支持,分区表统一认为普通表转换,但是reverse阶段日志中会打印警告【分区表】,若有要求,建议反向之后检查,需手工转换 支持自定义配置表分段类型规则转换(表-...

    oracle学习经典教程

    1.3.2.4.1 迁移分区表的步骤.....................55 1.3.2.4.2 示例1:使用exp/imp ................55 1.3.2.4.3 示例 2:使用expdp/impdp........59 1.3.3 分区表的其他操作......................62 ...

    Oracle Database 11g初学者指南--详细书签版

    7.8 使用传统的导入和导出 200 7.9 Recovery Manager简介 201 7.9.1 RMAN的体系结构 201 7.9.2 设置恢复目录和目标数据库 203 7.9.3 RMAN的关键特性 204 7.9.4 备份 206 7.9.5 在OEM中使用RMAN 207 7.9.6 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具的使用。  自定义角色 Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户  创建角色 SQL> create role admin;  授权给...

    oracle数据库dba管理手册

    12.5.2 插入可迁移的表空间集 360 12.6 局部管理的表空间 361 第三部分 网络Oracle 第13章 SQL*Net V2和Net8 363 13.1 SQL*Net V2和Net8概述 363 13.1.1 连接描述符 365 13.1.2 服务名 366 13.1.3 监听程序 367 ...

    TianleSoftware Oracle中文学习手册

    分区表总结 .................................................................................. 1.3.1. 分区表理论知识 ................................................................ 1.3.2 普通表转分区...

    (重要)AIX command 使用总结.txt

    kmtune //HP-UX下用kmtune>kernel.txt将内核参数信息导出到kernel.txt文件中配置文件为: /usr/conf/master.d/core-hpux ##操作系统 //操作系统版本 uname -a //操作系统补丁 instfix -i|grep ML //获取硬件信息 ...

Global site tag (gtag.js) - Google Analytics