0

あるデータベースから別のデータベースにデータをコピーする効率的な方法が必要です。どちらもOracle11gに基づいています。

  1. 手順:新しいテーブルを(再)作成します
  2. 手順:plsqlパッケージをインストールします
  3. 手順:expdpを使用してデータベース1からテーブルtab_old1とtab_old2をエクスポートします
  4. 手順:impdpを使用してtab_new1およびtab_new2データベース2にインポートします
  5. + xステップ:インストールされたplsqlプロシージャを使用します

課題:plsqlプロシージャはすでにtab_new1とtab_new2を使用しています。したがって、ステップ1と2で両方のテーブルを作成します。ステップ3と4では、データのみをインポートおよびエクスポートします。ただし、tab_new1とtab_new2には追加の列があります->インポートは失敗します。新しい列なしでビューを作成しようとしました。

インポートが失敗し、次のエラーメッセージが表示されます。

ORA-31693: Table data object "Schema"."tab_old1" failed to load/unload and is being skipped due to error:
ORA-31603: object “tab_old1” of type TABLE not found in schema “Schema” 

ORA-31693: Table data object "Schema"."tab_old2" failed to load/unload and is being skipped due to error:
ORA-31603: object “tab_old2” of type TABLE not found in schema “Schema” 

ビューはtab_old1およびtab_old2と呼ばれますが、もちろん、タイプはTABLEではありません。

何か案は?

追加の列を持つ既存のテーブルのtab_old1からデータをインポートするにはどうすればよいですか?

最初のステップでテーブルをエクスポート/インポートし、名前を変更して、後でplsqlsプロシージャをインストールしたくありません。

私たちを手伝ってくれますか?

編集:

ご回答有難うございます。例を2回試しましたが、remap_table関数が機能しません。インポート:リリース11.1.0.6.0-64ビットプロダクション。

編集2: はい。私のオラクルバージョンの問題のようです。remap_table関数は無視されます。私はremap_table=not.existing / tableのようにでたらめを書くことができ、impdpはそれについてたわごとを与えません。ええと、私にはこの問題を解決する時間がありません。私は周りで働かなければなりません。とにかく、あなたの助けをありがとう。

4

1 に答える 1

3

さて、content = data_onlyでインポートしていて、tab_old1の名前をtab_new1に変更し、いくつかの列を追加しましたか?

インポートを指定する場合putremap_table= tab_old1:tab_new1

これは、新しい列がnull許容である限り機能します。

例えば:

SQL> create table foo(id number);

Table created.

SQL> insert into foo select rownum from dual connect by level <= 5;

5 rows created.

SQL> commit;

Commit complete.

SQL> host expdp test/test tables=foo directory=data_pump_dir

Export: Release 11.2.0.2.0 - Production on Thu Nov 8 15:40:18 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "TEST"."SYS_EXPORT_TABLE_01":  test/******** tables=foo directory=data_pump_dir 
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "TEST"."FOO"                                5.031 KB       5 rows
Master table "TEST"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for TEST.SYS_EXPORT_TABLE_01 is:
  /u01/app/oracle/admin/dtd64bit1/dpdump/expdat.dmp
Job "TEST"."SYS_EXPORT_TABLE_01" successfully completed at 15:40:30

SQL> delete from foo;

5 rows deleted.

SQL> alter table foo add (a varchar2(200));

Table altered.

SQL> alter table foo rename to foo2;

Table altered.

そしてあなたの元のエラー?

SQL> host impdp test/test tables=foo directory=data_pump_dir content=data_only

Import: Release 11.2.0.2.0 - Production on Thu Nov 8 15:42:17 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "TEST"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "TEST"."SYS_IMPORT_TABLE_01":  test/******** tables=foo directory=data_pump_dir content=data_only 
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
ORA-39034: Table TABLE_DATA:"TEST"."FOO" does not exist.
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.UPATE_TD_ROW_IMP [15] 
TABLE_DATA:"TEST"."FOO"
ORA-31603: object "FOO" of type TABLE not found in schema "TEST"

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.KUPW$WORKER", line 8641

だから再マップします。

SQL> host impdp test/test tables=foo remap_table=foo:foo2 directory=data_pump_dir content=data_only

Import: Release 11.2.0.2.0 - Production on Thu Nov 8 15:42:33 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "TEST"."SYS_IMPORT_TABLE_02" successfully loaded/unloaded
Starting "TEST"."SYS_IMPORT_TABLE_02":  test/******** tables=foo remap_table=foo:foo2 directory=data_pump_dir content=data_only 
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "TEST"."FOO2"                               5.031 KB       5 rows
Job "TEST"."SYS_IMPORT_TABLE_02" successfully completed at 15:42:37


SQL> select * from foo2;

ID     A
---------- ----------
     1
     2
     3
     4
     5
于 2012-11-08T15:44:02.030 に答える