一个朋友提到一个数据泵导入的问题,在表存在的情况下,不删除表,且导入表的数据和索引。

其实这个任务对于imp很简单,因为imp的工作方式就是如此。

SQL> CREATE TABLE T_EXP

2  (ID NUMBER, NAME VARCHAR2(30));

表已创建。

SQL> CREATE INDEX IND_T_EXP_ID

2  ON T_EXP(ID);

索引已创建。

SQL> INSERT INTO T_EXP

2  SELECT ROWNUM, TNAME

3  FROM TAB;

已创建72行。

SQL> COMMIT;

提交完成。

SQL> HOST exp test/test file=t_exp.dmp buffer=2048000 tables=t_exp

Export: Release9.2.0.4.0 - Production on星期三6月2 15:12:26 2010

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

连接到: Oracle9i Enterprise Edition Release9.2.0.4.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.4.0 - Production

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

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

. .正在导出表                           T_EXP         72行被导出

在没有警告的情况下成功终止导出。

SQL> DROP INDEX IND_T_EXP_ID;

索引已丢弃。

SQL> HOST imp test/test file=t_exp.dmp buffer=2048000 tables=t_exp ignore=y

Import: Release9.2.0.4.0 - Production on星期三6月2 15:13:10 2010

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

连接到: Oracle9i Enterprise Edition Release9.2.0.4.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.4.0 - Production

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

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

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

. .正在导入表                         "T_EXP"         72行被导入

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

SQL> SELECT COUNT(*) FROM T_EXP;

COUNT(*)

----------

144

SQL> SELECT INDEX_NAME

2  FROM USER_INDEXES

3  WHERE TABLE_NAME = 'T_EXP';

INDEX_NAME

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

IND_T_EXP_ID

而impdp的默认工作并非如此,如果监测到表存在,impdp会跳过索引的创建:

SQL> CREATE TABLE T_EXP (ID NUMBER, NAME VARCHAR2(30));

Table created.

SQL> INSERT INTO T_EXP

2  SELECT ROWNUM, TNAME

3  FROM TAB;

95 rows created.

SQL> COMMIT;

Commit complete.

SQL> CREATE INDEX IND_T_EXP_ID

2  ON T_EXP (ID);

Index created.

下面执行导出:

[oracle@yans1 ~]$ expdp test/test directory=d_output dumpfile=t_exp.dp tables=t_exp

Export: Release10.2.0.3.0 - 64bit Production on星期三, 02 6月, 2010 15:18:59

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Starting "TEST"."SYS_EXPORT_TABLE_01":  test/******** directory=d_output dumpfile=t_exp.dp tables=t_exp

Estimate in progress using BLOCKS method...

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 128 KB

Processing object type TABLE_EXPORT/TABLE/TABLE

Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX

Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

. . exported "TEST"."T_EXP"                              6.890 KB      95 rows

Master table "TEST"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

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

Dump file set for TEST.SYS_EXPORT_TABLE_01 is:

/home/oracle/t_exp.dp

Job "TEST"."SYS_EXPORT_TABLE_01" successfully completed at 15:19:27

清除数据,并删除索引:

SQL> DROP INDEX IND_T_EXP_ID;

Index dropped.

SQL> TRUNCATE TABLE T_EXP;

Table truncated.

执行impdp导入:

[oracle@yans1 ~]$ impdp test/test directory=d_output dumpfile=t_exp.dp tables=t_exp table_exists_action=truncate

Import: Release10.2.0.3.0 - 64bit Production on星期三, 02 6月, 2010 15:20:26

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Master table "TEST"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded

Starting "TEST"."SYS_IMPORT_TABLE_01":  test/******** directory=d_output dumpfile=t_exp.dp tables=t_exp table_exists_action=truncate

Processing object type TABLE_EXPORT/TABLE/TABLE

ORA-39153: Table "TEST"."T_EXP" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

. . imported "TEST"."T_EXP"                              6.890 KB      95 rows

Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX

Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Job "TEST"."SYS_IMPORT_TABLE_01" completed with 1 error(s) at 15:31:28

检查索引和数据:

SQL> SELECT COUNT(*) FROM T_EXP;

COUNT(*)

----------

95

SQL> SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'T_EXP';

no rows selected

数据虽然导入了,但是索引没有创建。不过要解决这个问题也很简单,通过INCLUDE就可以解决这个问题:

SQL> TRUNCATE TABLE T_EXP;

Table truncated.

加上INCLUDE=INDEX执行导入:

[oracle@yans1 ~]$ impdp test/test directory=d_output dumpfile=t_exp.dp tables=t_exp table_exists_action=truncate include=index

Import: Release10.2.0.3.0 - 64bit Production on星期三, 02 6月, 2010 15:21:32

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Master table "TEST"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded

Starting "TEST"."SYS_IMPORT_TABLE_01":  test/******** directory=d_output dumpfile=t_exp.dp tables=t_exp table_exists_action=truncate include=index

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX

Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Job "TEST"."SYS_IMPORT_TABLE_01" successfully completed at 15:21:34

可以看到,这次似乎没有导入数据,检查一下:

SQL> SELECT COUNT(*) FROM T_EXP;

COUNT(*)

----------

0

SQL> SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'T_EXP';

INDEX_NAME

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

IND_T_EXP_ID

果然,虽然索引导入了,但是数据没有导入。

不过这就更简单了,通过INCLUDE=INDEX和INCLUDE=TABLE_DATA,就可以解决这个问题了:

SQL> DROP INDEX IND_T_EXP_ID;

Index dropped.

删除索引,执行导入:

[oracle@yans1 ~]$ impdp test/test directory=d_output dumpfile=t_exp.dp tables=t_exp table_exists_action=truncate include=index include=table_data

Import: Release10.2.0.3.0 - 64bit Production on星期三, 02 6月, 2010 15:23:06

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Master table "TEST"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded

Starting "TEST"."SYS_IMPORT_TABLE_01":  test/******** directory=d_output dumpfile=t_exp.dp tables=t_exp table_exists_action=truncate include=index include=table_data

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

. . imported "TEST"."T_EXP"                              6.890 KB      95 rows

Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX

Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Job "TEST"."SYS_IMPORT_TABLE_01" successfully completed at 15:23:08

最后检查一下是否成功:

SQL> SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'T_EXP';

INDEX_NAME

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

IND_T_EXP_ID

SQL> SELECT COUNT(*) FROM T_EXP;

COUNT(*)

----------

95

oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html

转载于:https://blog.51cto.com/19880614/1219444

Oracle数据泵对已经存在的表加载索引相关推荐

  1. oracle数据泵备份单表,使用数据泵备份/恢复某些表

    问题提出: 两个系统a和b之间做了同步接口,可能是之前的接口出现了问题,导致两边的数据不一致,需要清除系统b中的数据,使用同步接口从系统a将数据批量同步到系统b中. 解决办法: 分析:由于此同步涉及到 ...

  2. oracle数据泵导出多表,oracle 数据泵导出表

    oracle 数据泵导出演示步骤 1.使用 oracle 用户创建目录 mkdir software_bak [oracle@master ~]$ cd software_bak/ [oracle@m ...

  3. oracle数据泵到处表结构,数据泵导出数据库所有表结构

    Oracle11g中数据的倒库和入库操作以及高版本数据导入低版本数据可能引发的问题 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaov ...

  4. oracle 数据泵导出简单使用版

    <oracle 数据泵导出简单使用版> 1.数据泵可以导出表,表空间,用户schema,数据库 注意:导出表空间和数据库要求用户必须具有DBA 角色或EXP_FULL_DATABASE 角 ...

  5. Oracle 数据泵(IMPDP/EXPDP)导入导出总结

    Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常运维的数据库对象少则几千,多则几万甚至几十万,所以传统exp ...

  6. Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解

    Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解 关于expdp和impdp     使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户 ...

  7. 如何将mysql导出数据泵_Oracle数据库之ORACLE 数据泵导入导出数据

    本文主要向大家介绍了Oracle数据库之ORACLE 数据泵导入导出数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 一.摘要 在平常备库和数据库迁移的时候,当遇到大的数据库 ...

  8. Oracle数据泵详解

    Oracle数据泵详解    Oracle Database 10g中采用了数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中 ...

  9. oracle用数据泵,Oracle 数据泵使用

    Oracle 数据泵使用--导入.导出 今天重新整理了下数据泵的使用,用数据泵完成数据的导出.导入,真的很方便,现将操作及语句记录下来. 第一步:导出数据 用数据泵导出原库的数据,这个不需要进行其他的 ...

  10. oracle数据泵的原理,oracle 数据泵 详解

    导出数据 1)按用户导 expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dir logfile=expdp.log ...

最新文章

  1. 阿里全球数学竞赛最强10人名单出炉:仅1人来自北大,但北大是最大赢家
  2. PortICASetDefaults.exe /o命令返回为空
  3. SQL 中 left join 的底层原理(各种JOIN的复杂度探究)
  4. 条令考试小程序辅助器_应知应会条令纲要学习微课堂(六)
  5. python 百度ai批量识别_Python基于百度AI的文字识别的示例
  6. “老师,我不要苹果味的,我要葡萄味的”!
  7. redis 公网 安全_redis漏洞复现
  8. slf4j与logback的结合使用
  9. 虎扑APP遭全网下架 原因未知
  10. 流星雨_行者常至 双子座流星雨
  11. 如果有轮回,又为何一定要抹去前世记忆?
  12. 微信头像制作小程序源码 微信流量主系列
  13. 用Axure撰写产品需求文档
  14. java 集合之HashMap 源码阅读记录
  15. iphone 通知声音_如何在iPhone上掌握通知
  16. 六步绘制漂亮思维导图简单画法
  17. 《护理教育学》名词解释、简答题、问答题汇总
  18. 2、软件测试生命周期以及流程
  19. 使用正则限制输入框只能输入英文和数字
  20. burp与FoxyProxy抓包

热门文章

  1. 06 Python爬虫之Re(正则表达式)库
  2. laravel 自带验证
  3. NOI2005 瑰丽华尔兹
  4. 003 第一个Python程序
  5. 线性基——数集压缩自动机
  6. python2, 3环境变量配置(win10下)
  7. project euler 开坑
  8. 用 FragmentManager 替换时使用 GoogleMaps 崩溃 app
  9. 深圳中专计算机专业排名,深圳十大民办中专排行2019
  10. Windows Server定时执行bat