フルエクスポートオプションを使用して、AIX Oracle 9.2インストールで作成されたOracleダンプフィルを、Windows 2008 R2 x64上のWindows Oracle 10.2.0.4にインポートしています。
ファイルをクリーンなデータベースにインポートしたい。ただし、最初にデータベースを作成しない場合、作成するものはありません。データベースを作成すると、FULL = Yを指定した場合でも、ユーザーとテーブルスペースが不足しているという多くのエラーがスローされます。
このダンプをクリーンなOracleインストールにインポートするにはどうすればよいですか?
エクスポートはシステムの下で実行され、インポートも実行されました。インデックスファイルには、ユーザーとテーブルスペースをインポートするステートメントが含まれていませんが、元のファイルでフルインポートを実行すると、IMPはTABLESPACES
を作成しようとします(パスが正しくないため、変更する必要があります)。そして私はそれを知っています)しかし、それはユーザーを作成しようとするのではなく、それらが存在しないと不平を言うだけです。
実際のエクスポートコマンドユーザーは次のとおりです。
exp <a_User>/<a_Password> FULL=Y FILE=/PATHHERE/oradata/Export/expdat.dmp log=exp`date + %d%m%y.%H%M%S`.log consistent=y
最終的に、すべてのユーザーとテーブルスペースをリストする手順を実行し、ターゲットデータベースでそれらを再作成し、インポートを実行するときにDESTROY = Yスイッチを使用しました。これは私の問題を解決しました。
古いimpメソッドを使用している場合は、最初にユーザーとテーブルスペースを作成する必要があります。これには、許可、データベースリンク、および使用している可能性のあるすべてのアドバンストキューが含まれます。サンプルスクリプトは、Windowsでは次のようになります。imp a_DBA_user/apassword LOG = C:\ dump\logs\import.log file = user01.dmp fromuser = user_name touser = user_name
新しいdatapumpメソッドは見事に機能します。ユーザーを作成する必要はありませんが、オリジナルにあるカスタムテーブルスペースを作成します。
サンプルのデータポンプ呼び出しでは、元のデータベースとディレクトリへのデータベースリンクを作成する必要があります。これはディレクトリを作成します
CREATE OR REPLACE DIRECTORY
DATA_PUMP_DIR AS
'C:\app\Oracle\product\11.2.0\dbhome_1\rdbms\log\';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO EXP_FULL_DATABASE;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO auser;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO IMP_FULL_DATABASE;
インポートするスクリプトで、これらの変数を設定しますNLS_LANG
Oracle_SID =データベース名
impdp a_user_who_exists/your database name directory = DATA_PUMP_DIR network_link = original database name schemas = user1、user2 LOGFILE = DataPump.log TABLE_EXISTS_ACTION = REPLACE
コマンドプロンプトでこれを試してください:
cd \
imp user_name/password file=path+dump name full=y
このような:
imp ccs_status/ccs file=D:\ccs_status.dmp full=y