一個朋友提到一個資料泵匯入的問題,在表存在的情況下,不刪除表,且匯入表的資料和索引。
其實這個任務對於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