事象
impdp コマンドでインポートしようとしたら、
- ORA-39002
- ORA-39070
- ORA-39087
の3つのエラーが出力され、インポートできない
原因
DIR が無いこと、または権限が付与されてないことが原因。
または、impdp時に、PDBを指定していないことが原因だった。
対応
DIRは存在してた。
権限付与を実行する。
grant read on directory [ディレクトリオブジェクト名] to [ユーザ名];
grant write on directory [ディレクトリオブジェクト名] to [ユーザ名] ;
付与したいユーザーがSYSTEMの場合、
- OracleにSYSTEMでログインする
- 自分自身に権現付与できないので、sysdbaに成る
- conn sys@OraDoc as sysdba
- PDBに変える
- alter session set container = PDB1
を、やってから権限付与する。
注意点:
sqlplus でOracleにログインするときにPDB上につくってる場合はPDBを指定しないとだめだったぜ。
sqlplus SYSTEM/パスワード@pdb1
impdp時にPDB指定するやり方は以下の通り。
impdp hr@pdb1 DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees
上記のとおり、「ユーザー@pdb名」の形式にする。
コメント