2

スキーマ全体をエクスポート/インポートするための古いアプローチ:

 exp user/pwdp@server FILE=export.dmp OWNER=user ROWS=Y
 imp newuser/pwd@server FULL=Y FILE=export.dmp

新しいアプローチ:

 expdp user/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder 

ただし、インポートに問題がありました。

 impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder

何もインポートしません:

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31655: no data or metadata objects selected for job
ORA-39154: Objects from foreign schemas have been removed from import
Master table "NEWUSER"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "NEWUSER"."SYS_IMPORT_FULL_01":  newuser/********@server
DUMPFILE=export.dp DIRECTORY=exportfolder
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Job "NEWUSER"."SYS_IMPORT_FULL_01" successfully completed at 19:13:04

スキーマオプションを追加しても役に立ちません(結果は同じです。Oracleは所有されていないオブジェクトのインポートを許可していません)。

impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder schemas=user

そして、私が見つけた唯一の実用的なアプローチ:

impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder remap_schema=newuser:user

では、問題は、どのスキーマがエクスポートされたかを知らずに、スキーマデータポンプダンプをインポートする方法です。

(もちろん、エクスポートファイルの最初の512バイトを調べて、「USER」。「SYS_EXPORT_SCHEMA_01」のような文字列を見つけることができます)が、別のアプローチが存在する可能性がありますか?

4

1 に答える 1

7

まず、技術的には、full=yを正しく使用していません。

imp newuser/pwd@server FULL=Y FILE=export.dmp

あなたはむしろするべきです:

imp newuser/pwd@server touser=newuser fromuser=user FILE=export.dmp

これは、impdpremap_schemaコマンドに似ています。

ただし、ソースユーザーを事前に知らなくても、あるユーザーから別のユーザーにスキーマをインポートしようとしていることは理解しています。ソースユーザーがわからない場合は、データファイルの内容がわからないと簡単に推測できるため、これについて言及する必要がありました。また、データファイルの内容がわからない場合は、full = yを発行することで、必要と思われるよりもはるかに多くのユーザーとデータをインポートしている可能性があります。

ポイント:full = yインポートとは、すべてのユーザーとそれに関連するコンテンツをインポートすることを意味します。データベースへのログインとインポートの開始に使用しているユーザーに関係なく。

私の免責事項を言っても、impdpは完全なインポートに関してまったく同じ機能を持っています-ただfull=yを使用してください

impdp newuser/pwdp@server DUMPFILE=export.dp DIRECTORY=exportfolder full=y

アップデート

this will works in newuser have privilege: IMP_FULL_DATABASE

execution `grant IMP_FULL_DATABASE to newuser` solved it.

参照: http ://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_import.htm#sthref301

于 2011-06-23T12:14:22.747 に答える