ablog

不器用で落着きのない技術者のメモ

Data Pump で import すると、スキーマを作ってくれる

Data Pump を使って import した後にログ見てみると、

ORA-31684: Object type USER:"SCOTT" already exists
...
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 1 error(s) at 20:58:32

ってエラーメッセージが出力されていた。

スキーマ・モード
IMP_FULL_DATABASEロールを所有している場合は、スキーマ・リストを指定できます。これにより、スキーマ内のオブジェクトに加えてスキーマ自体(システム権限を含む)もデータベース内に作成されます。

...

REMAP_SCHEMA
マッピング先のスキーマが存在しない場合は、インポート操作によってそのスキーマが作成されます。ただし、ソース・スキーマに必要なCREATE USERメタデータがダンプ・ファイル・セットに含まれており、ユーザーが必要な権限を所有してインポートを実行していることが条件となります。たとえば、次のExportコマンドの場合、ユーザーSYSTEMには必要な権限があるため、スキーマの作成に必要なメタデータを含むダンプ・ファイル・セットが作成されます。

> expdp SYSTEM/password SCHEMAS=hr
> expdp SYSTEM/password FULL=y
Data Pump Import

Data Pump は import 時にスキーマを作成してくれるみたい。便利だな。


追記(2010/03/12):
Data Pump でスキーマ・モードで import すると、スキーマがない場合作成してくれるが、import 後にパスワードを設定する必要があるので要注意。

インポート操作によってスキーマが作成された場合は、インポートの完了後、そのスキーマに有効なパスワードを割り当てて、接続できるようにする必要があります。パスワードを割り当てるSQL文(権限が必要)は、次のとおりです。

SQL> ALTER USER [schema_name] IDENTIFIED BY [new_pswd] 
Data Pump Import