1

私はテーブルスペースのエクスポートを行います。このテーブルスペースには、rowa と rowb/ という 2 つの行を持つ table1 が含まれています。

ここで、rowb を削除し、新しい rowc をこのテーブルスペースに挿入します。

今、私はこのテーブルスペースのインポートを行います.

インポート後、テーブルスペースの table1 に rowa、rowb、rowc が含まれていることがわかりますが、rowa と rowb が含まれていると想定されていました。

なぜこれが起こっているのか誰にもわかりますか?

4

1 に答える 1

1

Datapumpではなく古いコマンドラインIMPユーティリティを使用していると思いますか?

IMPは既存のテーブルを削除したり、既存のデータを消去したりしません。フラグを設定するIGNORE=Yと、既存のテーブルに可能なデータが挿入され、ログファイルにエラー(重複キー)が報告されます。

これが現在のテーブルです...

SQL> select * from t0;

COL1
----
rowA
rowC

SQL> 

...そしてこれが私がエクスポートしたものです...

SQL> select * from t0;

COL1
----
rowA
rowB

SQL> 

テーブルは存在するがフラグの変更は成功するため、デフォルト設定のインポートはIGNORE失敗します。

SQL> host
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\temp>imp userid=APC tables=t0 file=apc.dmp

Import: Release 11.1.0.6.0 - Production on Thu Mar 25 18:22:21 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V11.01.00 via conventional path
import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
. importing APC's objects into APC
. importing APC's objects into APC
IMP-00015: following statement failed because the object already exists:
 "CREATE TABLE "T0" ("COL1" VARCHAR2(4) NOT NULL ENABLE)  PCTFREE 10 PCTUSED "
 "40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUP"
 "S 1 BUFFER_POOL DEFAULT)                       LOGGING NOCOMPRESS"
Import terminated successfully with warnings.

C:\temp>imp userid=APC tables=t0 file=apc.dmp ignore=y

Import: Release 11.1.0.6.0 - Production on Thu Mar 25 18:22:33 2010

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V11.01.00 via conventional path
import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
. importing APC's objects into APC
. importing APC's objects into APC
. . importing table                           "T0"
IMP-00019: row rejected due to ORACLE error 1
IMP-00003: ORACLE error 1 encountered
ORA-00001: unique constraint (APC.SYS_C001014543) violated
Column 1 rowA          1 rows imported
Import terminated successfully with warnings.

C:\Documents and Settings\clarkean>exit

SQL> 

注:1つの行が拒否され(COL1が主キーであるため)、1つのrwoが挿入されました。したがって、テーブルには3つの行があります。

SQL> select * from t0;

COL1
----
rowA
rowB
rowC

SQL>

データ/データ構造をインポートに置き換えるインポート/エクスポートプロセスの場合は、代わりにDatapumpを使用する必要があります。実際、Datapumpは概してはるかに優れたユーティリティであるため、とにかく使用する必要があります。 詳細をご覧ください

于 2010-03-25T18:31:59.933 に答える