[解決済] Create Indexしたらなぜか『オブジェクト統計はロックされています』でエラーになった

DataPumpでデータをインポートした後に、Create indexを実行したところ「ORA-38029: オブジェクト統計はロックされています」というエラーで弾かれてしまいました。

本人的にはロックした覚えもなし。
どうやらいろいろOTNなどで調べてみたところ、原因は不明だけど統計オブジェクトがロックされてしまうことがあるようです。(もっと深く調査すれば原因が判明しそうですが)

2014/09/26 16:56:30 CREATE INDEX "HOGE"."TABLE1_INDX1" ON "HOGE"."TABLE1" ("ID", "NAME", "TIME")
2014/09/26 16:56:30 *
2014/09/26 16:56:30 行1でエラーが発生しました。:
2014/09/26 16:56:30 ORA-38029: オブジェクト統計はロックされています

ロックを解除する

解決策としてはロックされているオブジェクトのロックを解除してあげる必要があります。

# su - oracle
$ sqlplus sys as sysdba

下記プロシージャを実行します。

DECLARE
    CURSOR CUR IS SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='HOGE';
BEGIN
    FOR CUR_REC IN CUR LOOP
        DBMS_STATS.UNLOCK_TABLE_STATS('HOGE', CUR_REC.TABLE_NAME);
    END LOOP;
END;
/

これで完了です。
もう一度Create Indexを実行したところ問題なく作成されました。

コメントを残す

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