web-dev-qa-db-ja.com

Oracle:データベース(ユーザー)全体の復元にはドロップが必要ですか?

開発環境(Oracle 11g)では、アップグレードをテストしたり、不具合を検証したりするために、データベース(ユーザー)を以前のバージョンに復元する必要があることがよくあります。

バックアップ/復元を実行するためにexpdp/impdpを使用しています。

バックアップの場合、実行します...

expdp 'sys/password@orcl as sysdba' schemas=CurrentUser directory=DirLabel Dumpfile=MyDatabase.dmp logfile=MyDatabase.log

リストアでは、ユーザー(データベース)を手動で削除してから実行しています

impdp 'sys/password@orcl as sysdba' directory=DirLabel Dumpfile=MyOldDatabase.dmp logfile=MyRestore.log remap_schema=OLDUser:CurrentUser

現在、このプロセスを自動化しようとしていますが、質問があります。

復元前に現在のユーザー(データベース)を削除する必要がありますか、それとも完全な復元を強制するために使用できるimpdbにいくつかのオプション/フラグがありますか? TABLE_EXISTS_ACTION = REPLACEを確認しましたが、コマンドラインでオプションをオフにすると、復元中にも同じ「エラー」が発生することに気付きました。

考え?

3
Tony

データをインポートする前に既存のスキーマを削除できるimpdpコマンドが見つかりませんでした。ただし、Data PumpコマンドラインユーティリティはPL/SQLパッケージ DBMS_DATAPUMP および DBMS_METADATA に基づいていることを知っておく必要があります。したがって、DBMS_DATAPUMPのデータ移動呼び出しプログラムを直接自動化する独自のPL/SQLスクリプトを作成することもできます。また、これはPL/SQLなので、DROP USERおよびDBMS_DATAPUMPのプログラムを呼び出す前に、スクリプトでDBMS_METADATAステートメントを呼び出すだけです。

このアプローチはより柔軟で、タスクをさらに自動化するために Oracle Scheduler を使用できます。

3