web-dev-qa-db-ja.com

expdpおよびimpdpコマンドを使用してデータを転送する方法は?

私はOracleの初心者であり、すべてのデータとメタデータをOracleデータベース内の1つのスキーマから別のスキーマに転送するつもりです。 datapumpのexpdpおよびimpdpコマンドを使用する予定です。これについて質問があります:

  • ユーザーなしでターゲットスキーマを作成できますか、それともユーザーを最初に作成する必要がありますか(スキーマも作成します)?
  • SYS(sysdbaとして)アカウントを使用してexpdpおよびimpdpコマンドを実行できますか?それは好ましい方法ですか?
  • このステートメントは、スキーマからすべてのオブジェクト(データとメタデータ)を取得して、それらを別のスキーマに移動しますか?

    expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log  
    

    それで、ターゲットスキーマはimpdpコマンドの後のソーススキーマの正確なコピーですか?

29
jrara

impdpは、まだ存在しない場合はユーザーを作成するので、それが必要な場合を除き、心配する必要はありません。

impdbまたはexpdpsysdbaとして実行しないでください。Oracleサポートから要求された場合にのみ実行してください。特定の状況で。そのためには、通常のユーザーを使用します。たとえば、dbaロールが付与されているユーザーなどです。 ( [IMPORT|EXPORT]_FULL_DATABASE このタイプのものに特化した権限。Oracleディレクトリオブジェクトへのアクセスも許可する必要があります。)

完全なスキーマエクスポート(メタデータとコンテンツ)は、実際には次のようになります。

expdp user/pass schemas=<schemaname> directory=dumpdir \
      dumpfile=<schemaname>.dmp \
      logfile=expdp_<schemaname>.log

別のユーザー/スキーマにインポートする場合(ターゲットデータベースをソースと同じにすることができます)、以下を使用できます。

impdp user/pass schemas=schema1 directory=dumpdir \
      remap_schema=schema1:schema2 \
      dumpfile=schema1.dmp \
      logfile=impdp_schema2.log

完全なインポートが必要ない場合は、データとメタデータの両方にいくつかのフィルターを設定できます。 インポート操作中のフィルタリング を参照してください。

tilities Guide にすべての詳細があります。少なくとも概要の部分を読むことを強くお勧めします。

31
Mat

切り捨てられたテーブルをインポートする場合、つまり、データをインポートしてテーブルに戻すだけです。

_impdp user/pass TABLES=dept DIRECTORY=TEST_dir dumpfile=TEST.dmp logfile=expdpTEST.log TABLE_EXISTS_ACTION=REPLACE
_

テーブルの上は、インポートしたいdeptです。以前に切り捨てました。 _TEST.dmp_であるダンプファイルと_expdpTEST.log_であるlogfileから、データのみをインポートします(テーブル構造は同じなので、パラメーター_TABLE_EXISTS_ACTION_を使用します)。

empdeptなどの2つのテーブルを切り捨てており、empテーブルに外部キーとして_dept_id_がある場合、インポート時のエラーを回避するために、最初にdeptテーブルをインポートし、次にempテーブルをインポートする必要があります。

詳細情報 http://satya-dba.blogspot.in/2009/05/datapump.html

2
user3649154