11gr2資料泵REMAP_TABLE功能
Oracle其實在11.1.0.6中已經推出了這個功能,不過11.1.0.6中還存在bug。這裡簡單介紹一下11.2中的REMAP_TABLE功能。
Oracle11g新特性——資料泵(六):http://yangtingkun.itpub.net/post/468/473311
1106版本中資料泵匯入REMAP_TABLE無效:http://yangtingkun.itpub.net/post/468/473037
看一個簡單的例子:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> create table t
2 (id number,
3 name varchar2(30));
表已建立。
SQL> insert into t
2 select rownum, tname
3 from tab;
已建立11行。
SQL> commit;
提交完成。
SQL> create index ind_t_id
2 on t (id);
索引已建立。
下面匯出T表:
SQL> host expdp yangtk/yangtk directory=d_output dumpfile=t.dp tables=t
Export: Release 11.2.0.1.0 - Production on 星期五 6月 4 23:31:50 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "YANGTK"."SYS_EXPORT_TABLE_01": yangtk/******** directory=d_output dumpfile=t.dp tables=t
正在使用 BLOCKS 方法進行估計...
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 128 KB
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
. . 匯出了 "YANGTK"."T" 5.562 KB 11 行
已成功載入/解除安裝了主表 "YANGTK"."SYS_EXPORT_TABLE_01"
******************************************************************************
YANGTK.SYS_EXPORT_TABLE_01 的轉儲檔案集為:
/home/oracle/t.dp
作業 "YANGTK"."SYS_EXPORT_TABLE_01" 已於 23:31:59 成功完成
利用REMAP_TABLE將匯入表重新對映到T_NEW表中:
SQL> host impdp yangtk/yangtk directory=d_output dumpfile=t.dp remap_table=t:t_new
Import: Release 11.2.0.1.0 - Production on 星期五 6月 4 23:32:19 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "YANGTK"."SYS_IMPORT_FULL_01"
啟動 "YANGTK"."SYS_IMPORT_FULL_01": yangtk/******** directory=d_output dumpfile=t.dp remap_table=t:t_new
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "YANGTK"."T_NEW" 5.562 KB 11 行
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
ORA-31684: 物件型別 INDEX:"YANGTK"."IND_T_ID" 已存在
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
ORA-39111: 跳過從屬物件型別 INDEX_STATISTICS, 基本物件型別 INDEX:"YANGTK"."IND_T_ID" 已存在
作業 "YANGTK"."SYS_IMPORT_FULL_01" 已經完成, 但是有 2 個錯誤 (於 23:32:22 完成)
SQL> select count(*) from t_new;
COUNT(*)
----------
11
REMAP_TABLE成功,T_NEW表建立,而且資料已經匯入,不過可以看到,索引並沒有別建立,不過這並不難理解,因為同名索引已經被建立,因此索引顯然不能匯入,下面刪除索引:
SQL> drop table t_new purge;
表已刪除。
SQL> drop index ind_t_id;
索引已刪除。
再次執行匯入操作:
SQL> host impdp yangtk/yangtk directory=d_output dumpfile=t.dp remap_table=t:t_new
Import: Release 11.2.0.1.0 - Production on 星期五 6月 4 23:32:54 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "YANGTK"."SYS_IMPORT_FULL_01"
啟動 "YANGTK"."SYS_IMPORT_FULL_01": yangtk/******** directory=d_output dumpfile=t.dp remap_table=t:t_new
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "YANGTK"."T_NEW" 5.562 KB 11 行
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
作業 "YANGTK"."SYS_IMPORT_FULL_01" 已於 23:32:58 成功完成
SQL> select table_name, index_name
2 from user_indexes
3 where index_name = 'IND_T_ID';
TABLE_NAME INDEX_NAME
------------------------------ ------------------------------
T IND_T_ID
索引也成功匯入,但是檢查後發現,索引仍然建立到T表上,並沒有因為使用了REMAP_TABLE而建立在T_NEW表中。
因此,至少在11.2.0.1中,REMAP_TABLE只對表和資料有效,而對索引無效,而且使用REMAP_TABLE對於原表仍然存在的情況下要小心,因為REMAP_TABLE操作很可能導致源表發生匯入操作,導致一些非預期的物件被匯入,比如:
SQL> alter table t add check (id > 0);
表已更改。
SQL> host expdp yangtk/yangtk directory=d_output dumpfile=t.dp tables=t reuse_dumpfiles=y
Export: Release 11.2.0.1.0 - Production on 星期五 6月 4 23:51:13 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "YANGTK"."SYS_EXPORT_TABLE_01": yangtk/******** directory=d_output dumpfile=t.dp tables=t reuse_dumpfiles=y
正在使用 BLOCKS 方法進行估計...
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 128 KB
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
. . 匯出了 "YANGTK"."T" 5.562 KB 11 行
已成功載入/解除安裝了主表 "YANGTK"."SYS_EXPORT_TABLE_01"
******************************************************************************
YANGTK.SYS_EXPORT_TABLE_01 的轉儲檔案集為:
/home/oracle/t.dp
作業 "YANGTK"."SYS_EXPORT_TABLE_01" 已於 23:51:23 成功完成
SQL> drop table t_new purge;
表已刪除。
SQL> host impdp yangtk/yangtk directory=d_output dumpfile=t.dp remap_table=t:t_new
Import: Release 11.2.0.1.0 - Production on 星期五 6月 4 23:55:51 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "YANGTK"."SYS_IMPORT_FULL_01"
啟動 "YANGTK"."SYS_IMPORT_FULL_01": yangtk/******** directory=d_output dumpfile=t.dp remap_table=t:t_new
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "YANGTK"."T_NEW" 5.562 KB 11 行
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
ORA-31684: 物件型別 INDEX:"YANGTK"."IND_T_ID" 已存在
處理物件型別 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
ORA-39111: 跳過從屬物件型別 INDEX_STATISTICS, 基本物件型別 INDEX:"YANGTK"."IND_T_ID" 已存在
作業 "YANGTK"."SYS_IMPORT_FULL_01" 已經完成, 但是有 2 個錯誤 (於 23:55:55 完成)
SQL> col search_condition format a20
SQL> select table_name, constraint_name, search_condition
2 from user_constraints
3 where table_name = 'T';
TABLE_NAME CONSTRAINT_NAME SEARCH_CONDITION
------------------------------ ------------------------------ --------------------
T SYS_C0011261 id > 0
T SYS_C0011277 id > 0
在這個例子中,就由於約束是系統名稱,導致在執行REMAP_TABLE匯入後,同樣的約束在源表上重複建立。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-664383/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料泵
- python實現oracle資料泵匯出功能PythonOracle
- 12c 資料泵常用功能總結
- 使用 Oracle 資料庫 10g 資料泵重新啟動功能Oracle資料庫
- ORACLE 資料泵Oracle
- oracle資料泵Oracle
- 殺停資料泵
- oracle 資料泵解析Oracle
- 資料泵的使用
- 資料泵 impdp 操作
- 資料泵檔案
- 資料泵小bug
- oracle之資料泵Oracle
- 資料泵引數檔案用於執行資料泵命令
- 11g資料泵NETWORK_LINK功能增強
- 【12C】Oracle 12c 可插拔資料庫之資料泵功能體驗Oracle資料庫
- 資料庫升級之-資料泵資料庫
- 使用資料泵impdp匯入資料
- 資料泵造成的資料損失
- Impdp資料泵匯入
- Oracle 資料泵的使用Oracle
- oracle 資料泵引數Oracle
- 資料泵用法筆記筆記
- oracle 11gR2 資料庫功能選件安裝情況Oracle資料庫
- 資料泵重建使用者
- 資料泵匯出匯入
- 正確停止資料泵程式
- 資料泵基礎(impdp/expdp)
- EXPDP資料泵使用方法
- 海量資料處理_資料泵分批資料遷移
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- 使用資料泵工具expdp工具匯出資料
- 【移動資料】data pump(上) 資料泵概述
- 資料泵匯出資料包錯處理
- 資料庫遷移之資料泵實驗資料庫
- oracle資料泵備份(Expdp命令)Oracle
- 資料泵的匯入匯出