17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

失敗したData Pumpジョブの後始末を試す(Oracle Database 12c Release 2)

Last updated at Posted at 2018-02-26

Data Pump ジョブの失敗

Data Pump は、実行時に接続ユーザー(userid パラメーター)のスキーマにジョブの状況を管理するテーブルを作成します。一般的に知られているテーブル名は、DBA_DATAPUMP_JOBS ビューの JOB_NAME 列と同じ名前のテーブルです。自動作成されるテーブル名は Data Pump 実行時のパラメーターによって変化しますが、SYS_EXPORT_SCHEMA_01やSYS_IMPORT_FULL_01 等になります。

Data Pump ジョブの後始末

 Data Pump ジョブを強制的に止めた場合、ジョブ名が DBA_DATAPUMP_JOBS ビューに残ることがあります。ジョブを削除するために、同一名称のテーブルを削除することで Data Pump ジョブのクリーンアップを行います。

Data Pump ジョブの検索
SQL> SELECT OWNER_NAME, JOB_NAME FROM DBA_DATAPUMP_JOBS;
OWNER_NAME   JOB_NAME
------------ -----------------------
APLUSER      SYS_IMPORT_SCHEMA_01

SQL> DROP TABLE APLUSER.SYS_IMPORT_SCHEMA_01;
表が削除されました。

次にジョブ名以外のテーブルも作成される現象を説明しています。

ある日から統計情報を取得する DBMS_STATS.GATHER_SCHEMA_STATS プロシージャがが失敗するようになりました。

統計情報の取得失敗
SQL> BEGIN
  DBMS_STATS.GATHER_SCHEMA_STATS (
	ownname => 'APLUSER',
        options => 'GATHER',
        estimate_percent => 15,
        cascade => TRUE
  );
  END;
  /
BEGIN
*
行1でエラーが発生しました。
ORA-20000: Statistics collection failed for 2 objects in the schema
ORA-06512: "SYS.DBMS_STATS", 38928
ORA-06512: "SYS.DBMS_STATS", 38257
ORA-06512: "SYS.DBMS_STATS", 38225
ORA-06512: "SYS.DBMS_STATS", 38285
ORA-06512: 2

失敗するオブジェクトを探していると、ET$ で始まる見慣れないテーブルを見つけました。

見慣れないテーブルの発見
SQL> SELECT TABLE_NAME, LAST_ANALYZED FROM USER_TABLES ORDER BY 2;
TABLE_NAME 		       LAST_ANA
------------------------------ ---------
TABLE_A				18-02-20
...
ET$001910FB0001
ET$0019836D0001

200行が選択されました。

このテーブルに対して統計情報を取得すると、Data Pump が自動作成するテーブルらしいということがわかりました。

統計情報の取得エラー
SQL> EXECUTE DBMS_STATS.GATHER_TABLE_STATS('APLUSER', 'ET$001910FB0001');
BEGIN DBMS_STATS.GATHER_TABLE_STATS('APLUSER', 'ET$001910FB0001'); END;

*
行1でエラーが発生しました。
ORA-20011: Approximate NDV failed: ORA-29913:
OCIEXTTABLEOPENコールアウトの実行中にエラーが発生しました。KUP-11024:
この外部表は、データ・ポンプ・ジョブ内からのみアクセスできます。ORA-06512: "SYS.DBMS_STATS",
36873
ORA-06512: "SYS.DBMS_STATS", 36507
ORA-06512: "SYS.DBMS_STATS", 35428
ORA-06512: "SYS.DBMS_STATS", 33883
ORA-06512: "SYS.DBMS_STATS", 32254
ORA-06512: "SYS.DBMS_STATS", 32234
ORA-06512: "SYS.DBMS_STATS", 33472
ORA-06512: "SYS.DBMS_STATS", 35304
ORA-06512: "SYS.DBMS_STATS", 36230
ORA-06512: "SYS.DBMS_STATS", 36716
ORA-06512: 1

このため該当テーブルを削除すると DBMS_STATS ジョブが正常に稼働するようになりました。

17
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?