読者です 読者をやめる 読者になる 読者になる

かきスタンプ

福岡で物流系のエンジニアやってます

Oracle:インポートエラー(IMP:00013)の対処

エクスポート・ファイルはEXPORT:V10.02.01によって従来型パス経由で作成されました。  
IMP-00013:DBAのみ別のDBAがエクスポートしたファイルをインポートできます  
IMP-00000:エラーが発生したためインポートを終了します。

というメッセージが出た時の対処。 エクスポートをDBA権限で実行した場合、インポートユーザもDBA権限がないと実行できないのが原因です。
 

対処方法1.DBAユーザでインポートする
コマンドプロンプト等のターミナルより、以下を実行。

(impを使用する場合)
imp \"<ユーザ名>/<パスワード>@<net_service_name> AS SYSDBA"\ file=<dmpファイル(フルパス)> fromuser=<スキーマ名> touser=<スキーマ名>

(impdを使用する場合)
impdp \"<ユーザ名>/<パスワード>@<net_service_name> AS SYSDBA\" DIRECTORY=<DIRECTORY OBJECT> DUMPFILE=<dmpファイル> SCHEMAS=<スキーマ名>

   

対処方法2.インポートユーザにDBA権限を付与する
以下のコマンドで、インポートユーザのDBA権限を付与。(要管理者権限)

GRANT DBA TO <ユーザ名>

   

対処方法3.DBAでエクスポートしない
以下のコマンドで、エクスポートユーザのDBA権限を解除。(要管理者権限)

REVOKE DBA FROM <ユーザ名>

すでに取ってしまったdmpは仕方ないけど、こっちが一番いい思う。(インポート/エクスポート くらいは、DBA権限でなくても出来ていいと思う。)

   

DBA権限が付与されているかどうかは、以下のSQLで確認できます。

select * from DBA_ROLE_PRIVS order by GRANTEE

GRANTED_ROLE に、「DBA」のレコードが存在している場合、そのユーザはDBA権限を保持しています。