0

Oracle の新しいテーブルスペース名は、古いテーブルスペース名と一致する必要がありますか?

例えば:

ダンプ ファイルのテーブルスペース名は A で、新しいテーブルスペース B を作成すると、テーブルをインポートできますが、多くのエラーがありますか?

         ORA-00959:tablespace 'ECASYS'(old) not exits.

これは私のインポートステートメントです:

imp userid='ZHPE/zhpe@ORCL' file='E:\xxxx\xxxx2013-08-15Bak\130815.dmp' log='D:\app\Administrator\oradata\orcl\ZHPE.log' full=y ignore=y;

新しいテーブルスペースは古いテーブルスペースに適合する必要がありますか??? ヘルプ!

4

2 に答える 2

2

expレガシーとツールを使用せざるを得ない場合、impコマンドライン オプションを使用してインポート自体を行う際にテーブルスペースを変更することはできません。可能であれば、 datapump バージョンexpdpimpdpを使用するように切り替えてから、@schurik のアドバイスに従ってください。

それができない場合は、最初に手動でスキーマ オブジェクトを作成するという回避策が必要になります。

このオプションを指定して実行するimpと、テーブルとインデックスの DDL を含むファイルが作成されます。indexfile

imp user/password indexfile=schema.sql file=...

テーブル作成 DDL はREM、削除する必要があるマーカーでコメント アウトされています。その後、それを編集して、テーブルスペースや、適切でなくなったその他のストレージ オプションを変更できます。次に、そのスキーマ作成 SQL を実行して、すべてのテーブルを空として作成します。

次に、通常のインポートを再度実行しますが、ignore=yフラグを使用して、テーブルが既に存在していることに (あまり) 文句を言わないようにします。これらの既存のテーブルには、引き続きデータが挿入されます。

事前にテーブルだけでなくインデックスも作成すると、これは少し遅くなります。通常は、テーブルを作成し、データを挿入してからインデックスを作成します。これはより効率的です。速度の低下が著しい場合は、schema.sql別のテーブルとインデックス作成ファイルに分割し、同じことを手動で行うことがignore=yできindexes=nます。あとは自分。

明らかにこれは少し面倒であり、datapump への切り替えをお勧めする多くの理由の 1 つです。

于 2013-08-16T10:03:55.983 に答える