expdpが「すでに使用されているオブジェクト名です」と失敗する時の対処方法

expdp実行時に、下記のエラーで処理が失敗してしまう時の対処方法のメモ。

ORA-31626: ジョブが存在しません
ORA-31633: マスター表”DBTEST.EXPORTJOB”を作成できません
ORA-06512: “SYS.DBMS_SYS_ERROR”, 行95
ORA-06512: “SYS.KUPV$FT”, 行1038
ORA-00955: すでに使用されているオブジェクト名です。

原因

原因は、以前に expdp が何らかの利用で失敗した際にジョブテーブルが残ってしまった為。

ジョブテーブルの状態を確認する

というわけでジョブテーブルの状態を確認してみる。
まずはジョブの状態を確認。

下記SQLを実行して確認。ジョブ EXPORTJOB が停止しているのが確認できる。

SQL> select job_name,state from dba_datapump_jobs;

JOB_NAME
--------------------------------------------------------------------------------
STATE
--------------------------------------------------------------------------------
EXPORTJOB
NOT RUNNING

続いてジョブテーブルの存在有無を確認する。
確認するには対象のジョブを動かすユーザーで確認する必要があるので注意。

$ sqlplus DBTEST

下記SQLを流してテーブルが存在していることを確認。

SQL> select table_name from user_tables where TABLE_NAME='EXPORTJOB';

ジョブテーブルを削除

先程のジョブテーブルが残っていることが原因となっているので、テーブルを削除すれば対応完了となる。

SQL> drop table EXPORTJOB purge;
SQL> select table_name from user_tables where TABLE_NAME='EXPORTJOB';

削除後にテーブルが消えていればOK。

コメントを残す

メールアドレスが公開されることはありません。