• ORACLE impdp 导入数据


    1 table_exists_action参数说明

    使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入。

    而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式:

    1)  skip:默认操作

    2)  replace:先drop表,然后创建表,最后插入数据

    3)  append:在原来数据的基础上增加数据

    4)  truncate:先truncate,然后再插入数据

    2 实验预备

    2.1 sys用户创建目录对象,并授权

    SQL> create directory dir_dump as '/home/oracle';

    Directory created

    SQL> grant read, write on directory dir_dump to tuser;

    Grant succeeded

    2.2 导出数据

    [oracle@cent4 ~]$ expdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser;

    Export: Release 10.2.0.1.0 - 64bit Production on 星期五, 06 1月, 2012 20:44:22

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

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    Starting "TUSER"."SYS_EXPORT_SCHEMA_01":  tuser/******** directory=dir_dump dumpfile=expdp.dmp schemas=tuser

    Estimate in progress using BLOCKS method...

    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

    Total estimation using BLOCKS method: 128 KB

    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

    Processing object type SCHEMA_EXPORT/TABLE/TABLE

    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

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

    Processing object type SCHEMA_EXPORT/TABLE/COMMENT

    . . exported "TUSER"."TAB1"                               5.25 KB       5 rows

    . . exported "TUSER"."TAB2"                              5.296 KB      10 rows

    Master table "TUSER"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

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

    Dump file set for TUSER.SYS_EXPORT_SCHEMA_01 is:

      /home/oracle/expdp.dmp

    Job "TUSER"."SYS_EXPORT_SCHEMA_01" successfully completed at 20:47:29

    2.3 查看已有两张表的数据

    SQL> select * from tab1;

    A   B

    --- ----

    1   11

    2   22

    3   33

    4   44

    5   55

    SQL> select * from tab2;

    A   B

    --- ----

    1   aa

    2   bb

    3   cc

    4   dd

    5   ee

    6   ff

    7   gg

    8   hh

    9   ii

    10  jj

    10 rows selected

    3 replace

    3.1 插入数据

    SQL> insert into tab1 (a, b) values (6, 66);

    1 row inserted

    SQL> commit;

    Commit complete

    SQL> select * from tab1;

    A   B

    --- ----

    1   11

    2   22

    3   33

    4   44

    5   55

    6   66

    6 rows selected

    3.2 导入数据

    [oracle@cent4 ~]$ impdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=replace;

    Import: Release 10.2.0.1.0 - 64bit Production on 星期五, 06 1月, 2012 20:53:09

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

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    Master table "TUSER"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded

    Starting "TUSER"."SYS_IMPORT_SCHEMA_01":  tuser/******** directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=replace

    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

    Processing object type SCHEMA_EXPORT/TABLE/TABLE

    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

    . . imported "TUSER"."TAB1"                               5.25 KB       5 rows

    . . imported "TUSER"."TAB2"                              5.296 KB      10 rows

    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

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

    Job "TUSER"."SYS_IMPORT_SCHEMA_01" successfully completed at 20:53:25

    3.3 再查看数据

    SQL> select * from tab1;

    A   B

    --- ----

    1   11

    2   22

    3   33

    4   44

    5   55

    查看数据,这时没有第六条数据。

    另外新建的表,在备份中没有,这个表并不会被覆盖。

    4 skip

    drop表tab1,tab2。

    [oracle@cent4 ~]$ impdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser;

    Import: Release 10.2.0.1.0 - 64bit Production on 星期五, 06 1月, 2012 21:34:20

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

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    Master table "TUSER"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded

    Starting "TUSER"."SYS_IMPORT_SCHEMA_01":  tuser/******** directory=dir_dump dumpfile=expdp.dmp schemas=tuser

    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

    Processing object type SCHEMA_EXPORT/TABLE/TABLE

    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

    . . imported "TUSER"."TAB1"                               5.25 KB       5 rows

    . . imported "TUSER"."TAB2"                              5.296 KB      10 rows

    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

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

    Job "TUSER"."SYS_IMPORT_SCHEMA_01" successfully completed at 21:34:25

    注意:即使表结构发生了变化,只要表名不发生变化。导入这个表时,就会被跳过。

    5 append

    5.1 删除部分数据

    SQL> delete tab1 where a = 1;

    1 row deleted

    SQL> delete tab2 where a = 2;

    1 row deleted

    SQL> commit;

    Commit complete

    SQL> select * from tab1;

    A   B

    --- ----

    2   22

    3   33

    4   44

    5   55

    SQL> select * from tab2;

    A   B

    --- ----

    1   aa

    3   cc

    4   dd

    5   ee

    6   ff

    7   gg

    8   hh

    9   ii

    10  jj

    9 rows selected

    5.2 导入数据

    [oracle@cent4 ~]$ impdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=append;

    Import: Release 10.2.0.1.0 - 64bit Production on 星期五, 06 1月, 2012 21:50:40

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

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    Master table "TUSER"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded

    Starting "TUSER"."SYS_IMPORT_SCHEMA_01":  tuser/******** directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=append

    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

    Processing object type SCHEMA_EXPORT/TABLE/TABLE

    ORA-39152: Table "TUSER"."TAB1" exists. Data will be appended to existing table but all dependent metadata will be skipped due to table_exists_action of append

    ORA-39152: Table "TUSER"."TAB2" exists. Data will be appended to existing table but all dependent metadata will be skipped due to table_exists_action of append

    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

    ORA-31693: Table data object "TUSER"."TAB1" failed to load/unload and is being skipped due to error:

    ORA-00001: unique constraint (TUSER.PK_TAB1) violated

    ORA-31693: Table data object "TUSER"."TAB2" failed to load/unload and is being skipped due to error:

    ORA-00001: unique constraint (TUSER.PK_TAB2) violated

    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

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

    Job "TUSER"."SYS_IMPORT_SCHEMA_01" completed with 4 error(s) at 21:50:45

    注意:只要append数据出错,比如唯一键错误,这时什么数据都不能插入了。

    5.3 修改表结构

    SQL> alter table tab1 add (C varchar2(4));

    Table altered

    5.4 再导入数据

    [oracle@cent4 ~]$ impdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=append;

    Import: Release 10.2.0.1.0 - 64bit Production on 星期五, 06 1月, 2012 21:59:19

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

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    Master table "TUSER"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded

    Starting "TUSER"."SYS_IMPORT_SCHEMA_01":  tuser/******** directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=append

    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

    Processing object type SCHEMA_EXPORT/TABLE/TABLE

    ORA-39152: Table "TUSER"."TAB1" exists. Data will be appended to existing table but all dependent metadata will be skipped due to table_exists_action of append

    ORA-39152: Table "TUSER"."TAB2" exists. Data will be appended to existing table but all dependent metadata will be skipped due to table_exists_action of append

    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

    ORA-39014: One or more workers have prematurely exited.

    ORA-39029: worker 1 with process name "DW01" prematurely terminated

    ORA-31671: Worker process DW01 had an unhandled exception.

    ORA-00600: internal error code, arguments: [qerxtAgentOpen_911], [3], [2], [], [], [], [], []

    ORA-06512: at "SYS.KUPW$WORKER", line 1345

    ORA-06512: at line 2

    Job "TUSER"."SYS_IMPORT_SCHEMA_01" stopped due to fatal error at 21:59:57

    这时居然出现600错误。

    6 truncate

    6.1 插入部分数据

    SQL> insert into tab1 (a, b) values (6, 66);

    1 row inserted

    SQL> commit;

    Commit complete

    6.2 导入数据

    [oracle@cent4 ~]$ impdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=truncate;

    Import: Release 10.2.0.1.0 - 64bit Production on 星期五, 06 1月, 2012 22:18:21

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

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    Master table "TUSER"."SYS_IMPORT_SCHEMA_03" successfully loaded/unloaded

    Starting "TUSER"."SYS_IMPORT_SCHEMA_03":  tuser/******** directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=truncate

    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

    Processing object type SCHEMA_EXPORT/TABLE/TABLE

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

    ORA-39153: Table "TUSER"."TAB2" 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 SCHEMA_EXPORT/TABLE/TABLE_DATA

    . . imported "TUSER"."TAB1"                               5.25 KB       5 rows

    . . imported "TUSER"."TAB2"                              5.296 KB      10 rows

    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

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

    Job "TUSER"."SYS_IMPORT_SCHEMA_03" completed with 2 error(s) at 22:18:28

    注意:新插入的数据将丢失。

    6.3 改表结构

    SQL> alter table tab1 add (C varchar2(4));

    Table altered

    6.4 再导入数据

    [oracle@cent4 ~]$ impdp tuser/tuser directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=truncate;

    Import: Release 10.2.0.1.0 - 64bit Production on 星期五, 06 1月, 2012 22:22:02

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

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP and Data Mining options

    Master table "TUSER"."SYS_IMPORT_SCHEMA_03" successfully loaded/unloaded

    Starting "TUSER"."SYS_IMPORT_SCHEMA_03":  tuser/******** directory=dir_dump dumpfile=expdp.dmp schemas=tuser table_exists_action=truncate

    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

    Processing object type SCHEMA_EXPORT/TABLE/TABLE

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

    ORA-39153: Table "TUSER"."TAB2" 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 SCHEMA_EXPORT/TABLE/TABLE_DATA

    ORA-39014: One or more workers have prematurely exited.

    ORA-39029: worker 1 with process name "DW01" prematurely terminated

    ORA-31671: Worker process DW01 had an unhandled exception.

    ORA-00600: internal error code, arguments: [qerxtAgentOpen_911], [3], [2], [], [], [], [], []

    ORA-06512: at "SYS.KUPW$WORKER", line 1345

    ORA-06512: at line 2

    Job "TUSER"."SYS_IMPORT_SCHEMA_03" stopped due to fatal error at 22:22:42

    此时,一样也发生了600错误。看来导入导出前后的表结构不能发生变化。

  • 相关阅读:
    javascript如何判断一个对象是不是数组
    Socket 通讯
    XML 文件解析
    iOS 钥匙串 指纹识别 get和Post请求的区别
    MOS X 下Apache服务器配置,及日志读取
    iOS中图片动画的三种模式及基本的代码实现
    UI中 frame 与 transform的用法与总结
    Xcode 缓存 帮助文档 隐藏文件夹显示方法
    NSDate用法整理总结
    iOS沙盒机制的基本操作总结
  • 原文地址:https://www.cnblogs.com/hllnj2008/p/5105718.html
Copyright © 2020-2023  润新知